@@ -15,21 +15,27 @@ describe('convertManifestToBundleGraph', () => {
1515 } ,
1616 'static-dep.js' : {
1717 size : 0 ,
18- dynamicImports : [ '@other' , 'transitive-dep.js' , 'dynamic-dep.js' ] ,
18+ dynamicImports : [ '@other' , 'transitive-dep.js' , 'dynamic-dep.js' , 'no-symbols.js' ] ,
1919 } ,
2020 'dynamic-dep.js' : {
2121 size : 0 ,
2222 imports : [ 'static-dep.js' , 'transitive-dep.js' , '@external-dep' ] ,
23+ dynamicImports : [ 'has-a-symbol.js' , 'no-symbols.js' ] ,
24+ hasSegments : true ,
2325 } ,
2426 'transitive-dep.js' : {
2527 size : 0 ,
28+ hasSegments : true ,
2629 } ,
2730 'not-used.js' : {
2831 size : 0 ,
2932 } ,
3033 'has-a-symbol.js' : {
3134 size : 0 ,
32- symbols : [ 'sym2' ] ,
35+ hasSegments : true ,
36+ } ,
37+ 'no-symbols.js' : {
38+ size : 0 ,
3339 } ,
3440 } as Record < string , QwikBundle > ,
3541 mapping : { sym1 : 'app.js' , sym2 : 'has-a-symbol.js' } ,
@@ -39,34 +45,71 @@ describe('convertManifestToBundleGraph', () => {
3945 } as QwikManifest ;
4046
4147 test ( 'trivial example' , ( ) => {
42- expect ( convertManifestToBundleGraph ( fakeManifest ) ) . toMatchInlineSnapshot ( `
43- [
44- "app.js",
45- 2,
46- "static-dep.js",
47- -1,
48- 5,
49- "dynamic-dep.js",
50- 2,
51- 8,
52- "transitive-dep.js",
53- "has-a-symbol.js",
54- "sym1",
55- 0,
56- "sym2",
57- 9,
58- ]
59- ` ) ;
48+ expect ( convertManifestToBundleGraph ( fakeManifest ) ) . toEqual ( [
49+ 'app.js' , // 0
50+ 2 ,
51+ 'static-dep.js' , // 2
52+ - 1 ,
53+ 5 ,
54+ // doesn't list 8 because it's also statically imported by dynamic-dep.js
55+ 'dynamic-dep.js' , // 5
56+ 2 ,
57+ 10 ,
58+ - 1 ,
59+ 11 ,
60+ 'transitive-dep.js' , // 10
61+ 'has-a-symbol.js' , // 11
62+ 'sym1' , // 13
63+ 0 ,
64+ 'sym2' , // 15
65+ 11 ,
66+ ] ) ;
67+ } ) ;
68+
69+ test ( 'empty' , ( ) => {
70+ expect ( convertManifestToBundleGraph ( { } as any ) ) . toEqual ( [ ] ) ;
71+ } ) ;
72+
73+ test ( 'simple file set' , ( ) => {
74+ const manifest = {
75+ bundles : {
76+ 'a.js' : {
77+ size : 0 ,
78+ imports : [ 'b.js' ] ,
79+ dynamicImports : [ 'c.js' ] ,
80+ } ,
81+ 'b.js' : {
82+ size : 0 ,
83+ dynamicImports : [ 'c.js' ] ,
84+ } ,
85+ 'c.js' : {
86+ size : 0 ,
87+ hasSegments : true ,
88+ } ,
89+ } as Record < string , QwikBundle > ,
90+ mapping : { } ,
91+ } as QwikManifest ;
92+ expect ( convertManifestToBundleGraph ( manifest ) ) . toEqual ( [
93+ 'a.js' , // 0
94+ 4 ,
95+ - 1 ,
96+ 7 ,
97+ 'b.js' , // 4
98+ - 1 ,
99+ 7 ,
100+ 'c.js' , // 7
101+ ] ) ;
60102 } ) ;
103+
61104 test ( 'adder' , ( ) => {
62105 expect (
63106 convertManifestToBundleGraph (
64107 fakeManifest ,
65108 new Set ( [
66- ( _manifest ) => {
109+ ( manifest ) => {
67110 return {
68111 // Remove dynamic imports from dynamic-dep.js
69- 'dynamic-dep.js' : { dynamicImports : [ ] } ,
112+ 'dynamic-dep.js' : { ... manifest . bundles [ 'dynamic-dep.js' ] , dynamicImports : [ ] } ,
70113 } ;
71114 } ,
72115 ( _manifest ) => {
@@ -80,27 +123,24 @@ describe('convertManifestToBundleGraph', () => {
80123 } ,
81124 ] )
82125 )
83- ) . toMatchInlineSnapshot ( `
84- [
85- "app.js",
86- 2,
87- "static-dep.js",
88- -1,
89- 7,
90- 6,
91- "dynamic-dep.js",
92- "transitive-dep.js",
93- "has-a-symbol.js",
94- "sym1",
95- 0,
96- "sym2",
97- 8,
98- "dashboard/",
99- 2,
100- -1,
101- 7,
102- ]
103- ` ) ;
126+ ) . toEqual ( [
127+ 'app.js' , // 0
128+ 2 ,
129+ 'static-dep.js' , // 2
130+ - 1 ,
131+ 5 ,
132+ 'dynamic-dep.js' , // 5
133+ 2 ,
134+ 8 ,
135+ 'transitive-dep.js' , // 8
136+ 'has-a-symbol.js' , // 9
137+ 'sym1' , // 11
138+ 0 ,
139+ 'sym2' , // 13
140+ 9 ,
141+ 'dashboard/' , // 15
142+ 2 ,
143+ ] ) ;
104144 } ) ;
105145
106146 test ( `works` , ( ) => {
@@ -116,35 +156,27 @@ describe('convertManifestToBundleGraph', () => {
116156 expect ( convertManifestToBundleGraph ( manifest ) ) . toMatchInlineSnapshot ( `
117157 [
118158 "app.js",
119- 30 ,
120- 31 ,
159+ 22 ,
160+ 23 ,
121161 -1,
122162 19,
123163 "app.tsx_App_component_div_div_div_div_div_div_button_onClick_1_WC1qsF4RHoU.js",
124164 0,
125165 "app.tsx_App_component_div_div_div_div_div_div_button_onClick_2_cibDwmrlmRI.js",
126166 0,
127167 "app.tsx_App_component_div_div_div_div_div_div_button_onClick_3_dHjr9JWbW34.js",
128- 30 ,
168+ 22 ,
129169 "app.tsx_App_component_div_div_div_div_div_div_button_onClick_4_5fYbrS6ABNA.js",
130- 30 ,
170+ 22 ,
131171 "app.tsx_App_component_div_div_div_div_div_div_button_onClick_5_rpMfjSetIeI.js",
132- 30 ,
172+ 22 ,
133173 "app.tsx_App_component_div_div_div_div_div_div_button_onClick_wEyctjlC58Q.js",
134174 0,
135175 "app.tsx_App_component_div_table_tbody_tr_td_a_onClick_DDeCLEw4BYU.js",
136- 30 ,
176+ 22 ,
137177 "app.tsx_App_component_jn5XSz7NZ88.js",
138- 30,
139- 31,
140- -1,
141- 5,
142- 7,
143- 9,
144- 11,
145- 13,
146- 15,
147- 17,
178+ 22,
179+ 23,
148180 "core.js",
149181 "preload-helper.js",
150182 "root.js",
0 commit comments