@rnx-kit/cli 0.12.5 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +90 -65
  3. package/coverage/clover.xml +216 -225
  4. package/coverage/coverage-final.json +7 -6
  5. package/coverage/lcov-report/index.html +29 -29
  6. package/coverage/lcov-report/src/bundle/index.html +29 -29
  7. package/coverage/lcov-report/src/bundle/kit-config.ts.html +63 -117
  8. package/coverage/lcov-report/src/bundle/metro.ts.html +40 -163
  9. package/coverage/lcov-report/src/bundle/overrides.ts.html +28 -58
  10. package/coverage/lcov-report/src/bundler-plugin-defaults.ts.html +115 -0
  11. package/coverage/lcov-report/src/copy-assets.ts.html +36 -12
  12. package/coverage/lcov-report/src/index.html +35 -20
  13. package/coverage/lcov-report/src/metro-config.ts.html +49 -31
  14. package/coverage/lcov-report/src/typescript/index.html +1 -1
  15. package/coverage/lcov-report/src/typescript/project-cache.ts.html +5 -5
  16. package/coverage/lcov.info +408 -419
  17. package/lib/bundle/kit-config.d.ts +9 -15
  18. package/lib/bundle/kit-config.d.ts.map +1 -1
  19. package/lib/bundle/kit-config.js +29 -43
  20. package/lib/bundle/kit-config.js.map +1 -1
  21. package/lib/bundle/metro.d.ts +7 -11
  22. package/lib/bundle/metro.d.ts.map +1 -1
  23. package/lib/bundle/metro.js +10 -40
  24. package/lib/bundle/metro.js.map +1 -1
  25. package/lib/bundle/overrides.d.ts +11 -9
  26. package/lib/bundle/overrides.d.ts.map +1 -1
  27. package/lib/bundle/overrides.js +10 -18
  28. package/lib/bundle/overrides.js.map +1 -1
  29. package/lib/bundle/types.d.ts +4 -17
  30. package/lib/bundle/types.d.ts.map +1 -1
  31. package/lib/bundle.d.ts +8 -7
  32. package/lib/bundle.d.ts.map +1 -1
  33. package/lib/bundle.js +3 -19
  34. package/lib/bundle.js.map +1 -1
  35. package/lib/bundler-plugin-defaults.d.ts +3 -0
  36. package/lib/bundler-plugin-defaults.d.ts.map +1 -0
  37. package/lib/bundler-plugin-defaults.js +13 -0
  38. package/lib/bundler-plugin-defaults.js.map +1 -0
  39. package/lib/copy-assets.d.ts.map +1 -1
  40. package/lib/copy-assets.js +8 -2
  41. package/lib/copy-assets.js.map +1 -1
  42. package/lib/index.d.ts +1 -1
  43. package/lib/index.d.ts.map +1 -1
  44. package/lib/index.js +2 -1
  45. package/lib/index.js.map +1 -1
  46. package/lib/metro-config.d.ts +3 -2
  47. package/lib/metro-config.d.ts.map +1 -1
  48. package/lib/metro-config.js +7 -5
  49. package/lib/metro-config.js.map +1 -1
  50. package/lib/parsers.d.ts +2 -0
  51. package/lib/parsers.d.ts.map +1 -1
  52. package/lib/parsers.js +16 -1
  53. package/lib/parsers.js.map +1 -1
  54. package/lib/serve/kit-config.d.ts +6 -5
  55. package/lib/serve/kit-config.d.ts.map +1 -1
  56. package/lib/serve/kit-config.js +16 -6
  57. package/lib/serve/kit-config.js.map +1 -1
  58. package/lib/start.d.ts +2 -2
  59. package/lib/start.d.ts.map +1 -1
  60. package/lib/start.js +3 -9
  61. package/lib/start.js.map +1 -1
  62. package/package.json +9 -7
  63. package/react-native.config.js +66 -59
  64. package/src/bundle/kit-config.ts +42 -60
  65. package/src/bundle/metro.ts +15 -56
  66. package/src/bundle/overrides.ts +24 -34
  67. package/src/bundle/types.ts +17 -23
  68. package/src/bundle.ts +18 -36
  69. package/src/bundler-plugin-defaults.ts +10 -0
  70. package/src/copy-assets.ts +10 -2
  71. package/src/index.ts +1 -1
  72. package/src/metro-config.ts +12 -6
  73. package/src/parsers.ts +19 -0
  74. package/src/serve/kit-config.ts +23 -11
  75. package/src/start.ts +7 -13
  76. package/test/__mocks__/child_process.js +1 -1
  77. package/test/bundle/__mocks__/@rnx-kit/config.js +2 -3
  78. package/test/bundle/__mocks__/@rnx-kit/console.js +1 -0
  79. package/test/bundle/__mocks__/@rnx-kit/metro-service.js +1 -0
  80. package/test/bundle/kit-config.test.ts +102 -100
  81. package/test/bundle/metro.test.ts +58 -98
  82. package/test/bundle/overrides.test.ts +29 -25
  83. package/test/copy-assets/assembleAarBundle.test.ts +7 -6
  84. package/lib/types.d.ts +0 -5
  85. package/lib/types.d.ts.map +0 -1
  86. package/lib/types.js +0 -3
  87. package/lib/types.js.map +0 -1
  88. package/src/types.ts +0 -4
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">54.36% </span>
26
+ <span class="strong">54.6% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>81/149</span>
28
+ <span class='fraction'>83/152</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">47.36% </span>
33
+ <span class="strong">46.46% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>45/95</span>
35
+ <span class='fraction'>46/99</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">76.47% </span>
40
+ <span class="strong">77.77% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>13/17</span>
42
+ <span class='fraction'>14/18</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">54.05% </span>
47
+ <span class="strong">54.3% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>80/148</span>
49
+ <span class='fraction'>82/151</span>
50
50
  </div>
51
51
 
52
52
 
@@ -620,7 +620,16 @@
620
620
  <a name='L555'></a><a href='#L555'>555</a>
621
621
  <a name='L556'></a><a href='#L556'>556</a>
622
622
  <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
633
  <span class="cline-any cline-neutral">&nbsp;</span>
625
634
  <span class="cline-any cline-neutral">&nbsp;</span>
626
635
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -796,6 +805,13 @@
796
805
  <span class="cline-any cline-neutral">&nbsp;</span>
797
806
  <span class="cline-any cline-neutral">&nbsp;</span>
798
807
  <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-yes">3x</span>
809
+ <span class="cline-any cline-yes">3x</span>
810
+ <span class="cline-any cline-no">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-neutral">&nbsp;</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
799
815
  <span class="cline-any cline-neutral">&nbsp;</span>
800
816
  <span class="cline-any cline-neutral">&nbsp;</span>
801
817
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1188,6 +1204,7 @@ import {
1188
1204
  } from "@rnx-kit/tools-node/package";
1189
1205
  import type { AllPlatforms } from "@rnx-kit/tools-react-native";
1190
1206
  import { parsePlatform } from "@rnx-kit/tools-react-native";
1207
+ import type { SpawnSyncOptions } from "child_process";
1191
1208
  import { spawnSync } from "child_process";
1192
1209
  import * as fs from "fs-extra";
1193
1210
  import * as os from "os";
@@ -1352,6 +1369,13 @@ function getAndroidPaths(
1352
1369
  }
1353
1370
  }
1354
1371
  &nbsp;
1372
+ function run(command: string, args: string[], options: SpawnSyncOptions) {
1373
+ const { status } = spawnSync(command, args, options);
1374
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (status !== 0) {
1375
+ <span class="cstat-no" title="statement not covered" > process.exit(status || 1);</span>
1376
+ }
1377
+ }
1378
+ &nbsp;
1355
1379
  export async function assembleAarBundle(
1356
1380
  context: Context,
1357
1381
  packageName: string,
@@ -1417,7 +1441,7 @@ export async function assembleAarBundle(
1417
1441
  }
1418
1442
  &nbsp;
1419
1443
  // Run only one Gradle task at a time
1420
- spawnSync(gradlew, targets, { cwd: androidProject, stdio: "inherit", env });
1444
+ run(gradlew, targets, { cwd: androidProject, stdio: "inherit", env });
1421
1445
  } else {
1422
1446
  const reactNativePath = findPackageDependencyDir("react-native");
1423
1447
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!reactNativePath) {
@@ -1496,7 +1520,7 @@ export async function assembleAarBundle(
1496
1520
  await fs.writeFile(path.join(buildDir, "settings.gradle"), settingsGradle);
1497
1521
  &nbsp;
1498
1522
  // Run only one Gradle task at a time
1499
- spawnSync(gradlew, targets, { cwd: buildDir, stdio: "inherit", env });
1523
+ run(gradlew, targets, { cwd: buildDir, stdio: "inherit", env });
1500
1524
  }
1501
1525
  &nbsp;
1502
1526
  await Promise.all(targetsToCopy.map(([src, dest]) =&gt; fs.copy(src, dest)));
@@ -1741,7 +1765,7 @@ export const rnxCopyAssetsCommand = {
1741
1765
  <div class='footer quiet pad2 space-top1 center small'>
1742
1766
  Code coverage generated by
1743
1767
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1744
- at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
1768
+ at Mon Jun 20 2022 17:47:27 GMT+0000 (Coordinated Universal Time)
1745
1769
  </div>
1746
1770
  <script src="../prettify.js"></script>
1747
1771
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">52.17% </span>
26
+ <span class="strong">52.6% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>108/207</span>
28
+ <span class='fraction'>111/211</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">46.45% </span>
33
+ <span class="strong">46.56% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>59/127</span>
35
+ <span class='fraction'>61/131</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">55.55% </span>
40
+ <span class="strong">58.62% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>15/27</span>
42
+ <span class='fraction'>17/29</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">52.19% </span>
47
+ <span class="strong">52.63% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>107/205</span>
49
+ <span class='fraction'>110/209</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,18 +79,33 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
+ <td class="file high" data-value="bundler-plugin-defaults.ts"><a href="bundler-plugin-defaults.ts.html">bundler-plugin-defaults.ts</a></td>
83
+ <td data-value="100" class="pic high">
84
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
+ </td>
86
+ <td data-value="100" class="pct high">100%</td>
87
+ <td data-value="1" class="abs high">1/1</td>
88
+ <td data-value="100" class="pct high">100%</td>
89
+ <td data-value="0" class="abs high">0/0</td>
90
+ <td data-value="100" class="pct high">100%</td>
91
+ <td data-value="1" class="abs high">1/1</td>
92
+ <td data-value="100" class="pct high">100%</td>
93
+ <td data-value="1" class="abs high">1/1</td>
94
+ </tr>
95
+
96
+ <tr>
82
97
  <td class="file medium" data-value="copy-assets.ts"><a href="copy-assets.ts.html">copy-assets.ts</a></td>
83
- <td data-value="54.36" class="pic medium">
98
+ <td data-value="54.6" class="pic medium">
84
99
  <div class="chart"><div class="cover-fill" style="width: 54%"></div><div class="cover-empty" style="width: 46%"></div></div>
85
100
  </td>
86
- <td data-value="54.36" class="pct medium">54.36%</td>
87
- <td data-value="149" class="abs medium">81/149</td>
88
- <td data-value="47.36" class="pct low">47.36%</td>
89
- <td data-value="95" class="abs low">45/95</td>
90
- <td data-value="76.47" class="pct medium">76.47%</td>
91
- <td data-value="17" class="abs medium">13/17</td>
92
- <td data-value="54.05" class="pct medium">54.05%</td>
93
- <td data-value="148" class="abs medium">80/148</td>
101
+ <td data-value="54.6" class="pct medium">54.6%</td>
102
+ <td data-value="152" class="abs medium">83/152</td>
103
+ <td data-value="46.46" class="pct low">46.46%</td>
104
+ <td data-value="99" class="abs low">46/99</td>
105
+ <td data-value="77.77" class="pct medium">77.77%</td>
106
+ <td data-value="18" class="abs medium">14/18</td>
107
+ <td data-value="54.3" class="pct medium">54.3%</td>
108
+ <td data-value="151" class="abs medium">82/151</td>
94
109
  </tr>
95
110
 
96
111
  <tr>
@@ -100,8 +115,8 @@
100
115
  </td>
101
116
  <td data-value="46.55" class="pct low">46.55%</td>
102
117
  <td data-value="58" class="abs low">27/58</td>
103
- <td data-value="43.75" class="pct low">43.75%</td>
104
- <td data-value="32" class="abs low">14/32</td>
118
+ <td data-value="46.87" class="pct low">46.87%</td>
119
+ <td data-value="32" class="abs low">15/32</td>
105
120
  <td data-value="20" class="pct low">20%</td>
106
121
  <td data-value="10" class="abs low">2/10</td>
107
122
  <td data-value="47.36" class="pct low">47.36%</td>
@@ -116,7 +131,7 @@
116
131
  <div class='footer quiet pad2 space-top1 center small'>
117
132
  Code coverage generated by
118
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
134
+ at Mon Jun 20 2022 17:47:27 GMT+0000 (Coordinated Universal Time)
120
135
  </div>
121
136
  <script src="../prettify.js"></script>
122
137
  <script>
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">43.75% </span>
33
+ <span class="strong">46.87% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>14/32</span>
35
+ <span class='fraction'>15/32</span>
36
36
  </div>
37
37
 
38
38
 
@@ -234,7 +234,13 @@
234
234
  <a name='L169'></a><a href='#L169'>169</a>
235
235
  <a name='L170'></a><a href='#L170'>170</a>
236
236
  <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
238
244
  <span class="cline-any cline-neutral">&nbsp;</span>
239
245
  <span class="cline-any cline-neutral">&nbsp;</span>
240
246
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -267,12 +273,16 @@
267
273
  <span class="cline-any cline-neutral">&nbsp;</span>
268
274
  <span class="cline-any cline-neutral">&nbsp;</span>
269
275
  <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-yes">6x</span>
271
276
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">6x</span>
273
- <span class="cline-any cline-yes">6x</span>
274
277
  <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-yes">6x</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-yes">9x</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-yes">9x</span>
283
+ <span class="cline-any cline-yes">9x</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-yes">9x</span>
276
286
  <span class="cline-any cline-no">&nbsp;</span>
277
287
  <span class="cline-any cline-no">&nbsp;</span>
278
288
  <span class="cline-any cline-no">&nbsp;</span>
@@ -337,7 +347,7 @@
337
347
  <span class="cline-any cline-neutral">&nbsp;</span>
338
348
  <span class="cline-any cline-neutral">&nbsp;</span>
339
349
  <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-yes">6x</span>
350
+ <span class="cline-any cline-yes">9x</span>
341
351
  <span class="cline-any cline-neutral">&nbsp;</span>
342
352
  <span class="cline-any cline-neutral">&nbsp;</span>
343
353
  <span class="cline-any cline-yes">2x</span>
@@ -362,24 +372,26 @@
362
372
  <span class="cline-any cline-neutral">&nbsp;</span>
363
373
  <span class="cline-any cline-neutral">&nbsp;</span>
364
374
  <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">6x</span>
366
375
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-yes">6x</span>
368
- <span class="cline-any cline-yes">6x</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-yes">10x</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-yes">10x</span>
380
+ <span class="cline-any cline-yes">10x</span>
369
381
  <span class="cline-any cline-yes">1x</span>
382
+ <span class="cline-any cline-yes">9x</span>
370
383
  <span class="cline-any cline-yes">5x</span>
371
- <span class="cline-any cline-yes">2x</span>
372
384
  <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-yes">6x</span>
385
+ <span class="cline-any cline-yes">10x</span>
374
386
  <span class="cline-any cline-yes">1x</span>
387
+ <span class="cline-any cline-yes">9x</span>
375
388
  <span class="cline-any cline-yes">5x</span>
376
- <span class="cline-any cline-yes">2x</span>
377
389
  <span class="cline-any cline-neutral">&nbsp;</span>
378
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-yes">10x</span>
392
+ <span class="cline-any cline-yes">4x</span>
393
+ <span class="cline-any cline-yes">4x</span>
379
394
  <span class="cline-any cline-yes">6x</span>
380
- <span class="cline-any cline-yes">1x</span>
381
- <span class="cline-any cline-yes">1x</span>
382
- <span class="cline-any cline-yes">5x</span>
383
395
  <span class="cline-any cline-neutral">&nbsp;</span>
384
396
  <span class="cline-any cline-neutral">&nbsp;</span>
385
397
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -394,18 +406,19 @@
394
406
  <span class="cline-any cline-neutral">&nbsp;</span>
395
407
  <span class="cline-any cline-neutral">&nbsp;</span>
396
408
  <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-yes">1x</span>
409
+ <span class="cline-any cline-yes">2x</span>
398
410
  <span class="cline-any cline-neutral">&nbsp;</span>
399
411
  <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-yes">6x</span>
401
- <span class="cline-any cline-yes">6x</span>
412
+ <span class="cline-any cline-yes">10x</span>
413
+ <span class="cline-any cline-yes">10x</span>
402
414
  <span class="cline-any cline-no">&nbsp;</span>
403
- <span class="cline-any cline-yes">6x</span>
404
- <span class="cline-any cline-yes">6x</span>
415
+ <span class="cline-any cline-yes">10x</span>
416
+ <span class="cline-any cline-yes">9x</span>
405
417
  <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-yes">6x</span>
418
+ <span class="cline-any cline-yes">10x</span>
407
419
  <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
420
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { TypeScriptValidationOptions } from "@rnx-kit/config";
421
+ import {
409
422
  CyclicDependencies,
410
423
  PluginOptions as CyclicDetectorOptions,
411
424
  } from "@rnx-kit/metro-plugin-cyclic-dependencies-detector";
@@ -422,7 +435,6 @@ import { AllPlatforms } from "@rnx-kit/tools-react-native/platform";
422
435
  import { Project } from "@rnx-kit/typescript-service";
423
436
  &nbsp;
424
437
  import { createProjectCache } from "./typescript/project-cache";
425
- import type { TypeScriptValidationOptions } from "./types";
426
438
  &nbsp;
427
439
  import type { DeltaResult, Graph } from "metro";
428
440
  import type { InputConfigT, SerializerConfigT } from "metro-config";
@@ -435,10 +447,14 @@ import type { InputConfigT, SerializerConfigT } from "metro-config";
435
447
  * Source file in node_modules (external packages) are ignored.
436
448
  *
437
449
  * @param options TypeScript validation options
450
+ * @param print Optional function to use when printing status messages to the Metro console
438
451
  * @returns Hook function
439
452
  */
440
- function createSerializerHook(options: TypeScriptValidationOptions) {
441
- const projectCache = createProjectCache(options.print);
453
+ function createSerializerHook(
454
+ options: TypeScriptValidationOptions,
455
+ print?: (message: string) =&gt; void
456
+ ) {
457
+ const projectCache = createProjectCache(print);
442
458
  &nbsp;
443
459
  const patternNodeModules = /[/\\]node_modules[/\\]/;
444
460
  const excludeNodeModules = <span class="fstat-no" title="function not covered" >(p</span>: string) =&gt; <span class="cstat-no" title="statement not covered" >!patternNodeModules.test(p);</span>
@@ -523,13 +539,15 @@ const emptySerializerHook = <span class="fstat-no" title="function not covered"
523
539
  * @param detectDuplicateDependencies When true, duplicate dependency checking is enabled with a default set of options. Otherwise, the object allows for fine-grained control over the detection process.
524
540
  * @param typescriptValidation When true, TypeScript type-checking is enabled with a default set of options. Otherwise, the object allows for fine-grained control over the type-checking process.
525
541
  * @param treeShake When true, tree shaking is enabled.
542
+ * @param print Optional function to use when printing status messages to the Metro console
526
543
  */
527
544
  export function customizeMetroConfig(
528
545
  metroConfigReadonly: InputConfigT,
529
546
  detectCyclicDependencies: boolean | CyclicDetectorOptions,
530
547
  detectDuplicateDependencies: boolean | DuplicateDetectorOptions,
531
548
  typescriptValidation: boolean | TypeScriptValidationOptions,
532
- treeShake: boolean
549
+ treeShake: boolean,
550
+ print?: (message: string) =&gt; void
533
551
  ): void {
534
552
  // We will be making changes to the Metro configuration. Coerce from a
535
553
  // type with readonly props to a type where the props are writeable.
@@ -570,9 +588,9 @@ export function customizeMetroConfig(
570
588
  &nbsp;
571
589
  let hook = emptySerializerHook;
572
590
  <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof typescriptValidation === "object") {
573
- <span class="cstat-no" title="statement not covered" > hook = createSerializerHook(typescriptValidation);</span>
591
+ <span class="cstat-no" title="statement not covered" > hook = createSerializerHook(typescriptValidation, print);</span>
574
592
  } else if (typescriptValidation !== false) {
575
- hook = createSerializerHook({});
593
+ hook = createSerializerHook({}, print);
576
594
  }
577
595
  metroConfig.serializer.experimentalSerializerHook = hook;
578
596
  }
@@ -583,7 +601,7 @@ export function customizeMetroConfig(
583
601
  <div class='footer quiet pad2 space-top1 center small'>
584
602
  Code coverage generated by
585
603
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
586
- at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
604
+ at Mon Jun 20 2022 17:47:27 GMT+0000 (Coordinated Universal Time)
587
605
  </div>
588
606
  <script src="../prettify.js"></script>
589
607
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
104
+ at Mon Jun 20 2022 17:47:27 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -334,14 +334,14 @@
334
334
  <span class="cline-any cline-neutral">&nbsp;</span>
335
335
  <span class="cline-any cline-neutral">&nbsp;</span>
336
336
  <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-yes">6x</span>
338
- <span class="cline-any cline-yes">6x</span>
337
+ <span class="cline-any cline-yes">9x</span>
338
+ <span class="cline-any cline-yes">9x</span>
339
339
  <span class="cline-any cline-neutral">&nbsp;</span>
340
340
  <span class="cline-any cline-neutral">&nbsp;</span>
341
341
  <span class="cline-any cline-neutral">&nbsp;</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
343
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">6x</span>
344
+ <span class="cline-any cline-yes">9x</span>
345
345
  <span class="cline-any cline-neutral">&nbsp;</span>
346
346
  <span class="cline-any cline-neutral">&nbsp;</span>
347
347
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -476,7 +476,7 @@
476
476
  <span class="cline-any cline-neutral">&nbsp;</span>
477
477
  <span class="cline-any cline-neutral">&nbsp;</span>
478
478
  <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-yes">6x</span>
479
+ <span class="cline-any cline-yes">9x</span>
480
480
  <span class="cline-any cline-neutral">&nbsp;</span>
481
481
  <span class="cline-any cline-neutral">&nbsp;</span>
482
482
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -697,7 +697,7 @@ export function createProjectCache(
697
697
  <div class='footer quiet pad2 space-top1 center small'>
698
698
  Code coverage generated by
699
699
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
700
- at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
700
+ at Mon Jun 20 2022 17:47:27 GMT+0000 (Coordinated Universal Time)
701
701
  </div>
702
702
  <script src="../../prettify.js"></script>
703
703
  <script>