33
44const homepage = "http://localhost:8081/-size-check-" ;
55const resourceUrlPrefix = "http://localhost:8081/sa-static/-/bricks/" ;
6- const reactChunkRegExp = / \/ c h u n k s \/ (?: (?: 4 0 ) ? 4 1 | 3 ? 1 4 4 ) \. [ 0 - 9 a - f ] + \. j s $ / ;
76
87describe ( "brick size check" , ( ) => {
98 it ( "all together" , ( ) => {
@@ -20,31 +19,36 @@ describe("brick size check", () => {
2019 } ) ;
2120 cy . get ( "@console.error" ) . should ( "not.be.called" ) ;
2221
23- cy . window ( ) . then ( ( win ) => {
22+ cy . window ( ) . then ( async ( win ) => {
2423 const { performance } = win ;
2524 const resources = performance . getEntriesByType ( "resource" ) ;
2625 let others = 0 ;
2726 let total = 0 ;
2827 let react = 0 ;
2928 const deps = new Map ( ) ;
30- resources . map ( ( resource ) => {
31- if ( resource . name . startsWith ( resourceUrlPrefix ) ) {
32- total += resource . transferSize ;
33- if ( reactChunkRegExp . test ( resource . name ) ) {
34- react += resource . transferSize ;
29+ await Promise . all (
30+ resources . map ( async ( resource ) => {
31+ if (
32+ resource . name . startsWith ( resourceUrlPrefix ) &&
33+ ! resource . name . endsWith ( ".LICENSE.txt" )
34+ ) {
35+ total += resource . transferSize ;
36+ if ( await isReactChunk ( resource . name ) ) {
37+ react += resource . transferSize ;
38+ } else {
39+ const resourcePkg = resource . name
40+ . substring ( resourceUrlPrefix . length )
41+ . split ( "/" , 1 ) [ 0 ] ;
42+ deps . set (
43+ resourcePkg ,
44+ ( deps . get ( resourcePkg ) ?? 0 ) + resource . transferSize
45+ ) ;
46+ }
3547 } else {
36- const resourcePkg = resource . name
37- . substring ( resourceUrlPrefix . length )
38- . split ( "/" , 1 ) [ 0 ] ;
39- deps . set (
40- resourcePkg ,
41- ( deps . get ( resourcePkg ) ?? 0 ) + resource . transferSize
42- ) ;
48+ others += resource . transferSize ;
4349 }
44- } else {
45- others += resource . transferSize ;
46- }
47- } ) ;
50+ } )
51+ ) ;
4852 const lines = [ ] ;
4953 lines . push (
5054 `Core: ${ getSizeInKB ( others ) } ` ,
@@ -87,33 +91,38 @@ describe("brick size check", () => {
8791 cy . contains ( "This is size-check!" ) ;
8892 cy . get ( "@console.error" ) . should ( "not.be.called" ) ;
8993
90- cy . window ( ) . then ( ( win ) => {
94+ cy . window ( ) . then ( async ( win ) => {
9195 const { performance } = win ;
9296 const resources = performance . getEntriesByType ( "resource" ) ;
9397 let total = 0 ;
9498 let self = 0 ;
9599 let react = 0 ;
96100 const deps = new Map ( ) ;
97- resources . map ( ( resource ) => {
98- if ( resource . name . startsWith ( resourceUrlPrefix ) ) {
99- total += resource . transferSize ;
100- if ( reactChunkRegExp . test ( resource . name ) ) {
101- react += resource . transferSize ;
102- } else {
103- const resourcePkg = resource . name
104- . substring ( resourceUrlPrefix . length )
105- . split ( "/" , 1 ) [ 0 ] ;
106- if ( resourcePkg === pkgName ) {
107- self += resource . transferSize ;
101+ await Promise . all (
102+ resources . map ( async ( resource ) => {
103+ if (
104+ resource . name . startsWith ( resourceUrlPrefix ) &&
105+ ! resource . name . endsWith ( ".LICENSE.txt" )
106+ ) {
107+ total += resource . transferSize ;
108+ if ( await isReactChunk ( resource . name ) ) {
109+ react += resource . transferSize ;
108110 } else {
109- deps . set (
110- resourcePkg ,
111- ( deps . get ( resourcePkg ) ?? 0 ) + resource . transferSize
112- ) ;
111+ const resourcePkg = resource . name
112+ . substring ( resourceUrlPrefix . length )
113+ . split ( "/" , 1 ) [ 0 ] ;
114+ if ( resourcePkg === pkgName ) {
115+ self += resource . transferSize ;
116+ } else {
117+ deps . set (
118+ resourcePkg ,
119+ ( deps . get ( resourcePkg ) ?? 0 ) + resource . transferSize
120+ ) ;
121+ }
113122 }
114123 }
115- }
116- } ) ;
124+ } )
125+ ) ;
117126
118127 const lines = [ ] ;
119128 lines . push ( `${ pkgName } :` , ` total: ${ getSizeInKB ( total ) } ` ) ;
@@ -162,39 +171,45 @@ describe("brick size check", () => {
162171 cy . contains ( "This is size-check!" ) ;
163172 cy . get ( "@console.error" ) . should ( "not.be.called" ) ;
164173
165- cy . window ( ) . then ( ( win ) => {
174+ cy . window ( ) . then ( async ( win ) => {
166175 const { performance } = win ;
167176 const resources = performance . getEntriesByType ( "resource" ) ;
168177 let total = 0 ;
169178 let self = 0 ;
170179 let react = 0 ;
171180 const deps = new Map ( ) ;
172181 const byFiles = new Map ( ) ;
173- resources . map ( ( resource ) => {
174- if ( resource . name . startsWith ( resourceUrlPrefix ) ) {
175- total += resource . transferSize ;
176- if ( reactChunkRegExp . test ( resource . name ) ) {
177- react += resource . transferSize ;
178- } else {
179- const resourcePkg = resource . name
180- . substring ( resourceUrlPrefix . length )
181- . split ( "/" , 1 ) [ 0 ] ;
182- if ( resourcePkg === pkgName ) {
183- self += resource . transferSize ;
182+
183+ await Promise . all (
184+ resources . map ( async ( resource ) => {
185+ if (
186+ resource . name . startsWith ( resourceUrlPrefix ) &&
187+ ! resource . name . endsWith ( ".LICENSE.txt" )
188+ ) {
189+ total += resource . transferSize ;
190+ if ( await isReactChunk ( resource . name ) ) {
191+ react += resource . transferSize ;
184192 } else {
185- deps . set (
186- resourcePkg ,
187- ( deps . get ( resourcePkg ) ?? 0 ) + resource . transferSize
188- ) ;
193+ const resourcePkg = resource . name
194+ . substring ( resourceUrlPrefix . length )
195+ . split ( "/" , 1 ) [ 0 ] ;
196+ if ( resourcePkg === pkgName ) {
197+ self += resource . transferSize ;
198+ } else {
199+ deps . set (
200+ resourcePkg ,
201+ ( deps . get ( resourcePkg ) ?? 0 ) + resource . transferSize
202+ ) ;
203+ }
189204 }
205+ // Remove the version part from the file path
206+ const filePath = resource . name
207+ . substring ( resourceUrlPrefix . length )
208+ . replace ( / ( [ ^ / ] + \/ ) \d + \. \d + \. \d + \/ / , "$1" ) ;
209+ byFiles . set ( filePath , resource . transferSize ) ;
190210 }
191- // Remove the version part from the file path
192- const filePath = resource . name
193- . substring ( resourceUrlPrefix . length )
194- . replace ( / ( [ ^ / ] + \/ ) \d + \. \d + \. \d + \/ / , "$1" ) ;
195- byFiles . set ( filePath , resource . transferSize ) ;
196- }
197- } ) ;
211+ } )
212+ ) ;
198213
199214 const lines = [ ] ;
200215 lines . push ( `${ brick } :` , ` total: ${ getSizeInKB ( total ) } ` ) ;
@@ -229,3 +244,19 @@ describe("brick size check", () => {
229244function getSizeInKB ( size ) {
230245 return `${ ( + ( size / 1024 ) . toFixed ( 2 ) ) . toLocaleString ( ) } KB` ;
231246}
247+
248+ async function isReactChunk ( resourceName ) {
249+ const response = await fetch ( `${ resourceName } .LICENSE.txt` ) ;
250+ if ( response . ok ) {
251+ const license = await response . text ( ) ;
252+ if (
253+ license . includes ( "@license React" ) &&
254+ / (?: r e a c t (?: - d o m (?: - c l i e n t ) ? ) ? | s c h e d u l e r ) \. p r o d u c t i o n (?: \. m i n ) ? \. j s / . test (
255+ license
256+ )
257+ ) {
258+ return true ;
259+ }
260+ }
261+ return false ;
262+ }
0 commit comments