@rnx-kit/cli 0.12.2 → 0.12.5

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 (42) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/coverage/clover.xml +224 -188
  3. package/coverage/coverage-final.json +3 -3
  4. package/coverage/lcov-report/index.html +27 -27
  5. package/coverage/lcov-report/src/bundle/index.html +1 -1
  6. package/coverage/lcov-report/src/bundle/kit-config.ts.html +1 -1
  7. package/coverage/lcov-report/src/bundle/metro.ts.html +1 -1
  8. package/coverage/lcov-report/src/bundle/overrides.ts.html +1 -1
  9. package/coverage/lcov-report/src/copy-assets.ts.html +480 -111
  10. package/coverage/lcov-report/src/index.html +30 -30
  11. package/coverage/lcov-report/src/metro-config.ts.html +40 -22
  12. package/coverage/lcov-report/src/typescript/index.html +13 -13
  13. package/coverage/lcov-report/src/typescript/project-cache.ts.html +97 -16
  14. package/coverage/lcov.info +399 -335
  15. package/lib/copy-assets.d.ts +10 -1
  16. package/lib/copy-assets.d.ts.map +1 -1
  17. package/lib/copy-assets.js +111 -32
  18. package/lib/copy-assets.js.map +1 -1
  19. package/lib/metro-config.d.ts.map +1 -1
  20. package/lib/metro-config.js +17 -8
  21. package/lib/metro-config.js.map +1 -1
  22. package/lib/start.d.ts.map +1 -1
  23. package/lib/start.js +27 -8
  24. package/lib/start.js.map +1 -1
  25. package/lib/test.js +3 -6
  26. package/lib/test.js.map +1 -1
  27. package/lib/typescript/project-cache.d.ts +1 -1
  28. package/lib/typescript/project-cache.d.ts.map +1 -1
  29. package/lib/typescript/project-cache.js +26 -4
  30. package/lib/typescript/project-cache.js.map +1 -1
  31. package/package.json +1 -1
  32. package/src/copy-assets.ts +169 -46
  33. package/src/metro-config.ts +17 -11
  34. package/src/start.ts +48 -8
  35. package/src/test.ts +3 -3
  36. package/src/typescript/project-cache.ts +35 -8
  37. package/test/__mocks__/child_process.js +5 -0
  38. package/test/__mocks__/fs-extra.js +2 -0
  39. package/test/__mocks__/fs.js +19 -0
  40. package/test/copy-assets/assembleAarBundle.test.ts +306 -0
  41. package/test/{copy-assets.test.ts → copy-assets/copyAssets.test.ts} +3 -13
  42. package/test/copy-assets/helpers.ts +13 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">29.14% </span>
26
+ <span class="strong">52.17% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>51/175</span>
28
+ <span class='fraction'>108/207</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">20.95% </span>
33
+ <span class="strong">46.45% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>22/105</span>
35
+ <span class='fraction'>59/127</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">38.46% </span>
40
+ <span class="strong">55.55% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/26</span>
42
+ <span class='fraction'>15/27</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">29.31% </span>
47
+ <span class="strong">52.19% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>51/174</span>
49
+ <span class='fraction'>107/205</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <div class="pad1">
66
66
  <table class="coverage-summary">
67
67
  <thead>
@@ -79,33 +79,33 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
- <td class="file low" data-value="copy-assets.ts"><a href="copy-assets.ts.html">copy-assets.ts</a></td>
83
- <td data-value="19.83" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 19%"></div><div class="cover-empty" style="width: 81%"></div></div>
82
+ <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">
84
+ <div class="chart"><div class="cover-fill" style="width: 54%"></div><div class="cover-empty" style="width: 46%"></div></div>
85
85
  </td>
86
- <td data-value="19.83" class="pct low">19.83%</td>
87
- <td data-value="121" class="abs low">24/121</td>
88
- <td data-value="10.38" class="pct low">10.38%</td>
89
- <td data-value="77" class="abs low">8/77</td>
90
- <td data-value="50" class="pct medium">50%</td>
91
- <td data-value="16" class="abs medium">8/16</td>
92
- <td data-value="19.83" class="pct low">19.83%</td>
93
- <td data-value="121" class="abs low">24/121</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>
94
94
  </tr>
95
95
 
96
96
  <tr>
97
- <td class="file medium" data-value="metro-config.ts"><a href="metro-config.ts.html">metro-config.ts</a></td>
98
- <td data-value="50" class="pic medium">
99
- <div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
97
+ <td class="file low" data-value="metro-config.ts"><a href="metro-config.ts.html">metro-config.ts</a></td>
98
+ <td data-value="46.55" class="pic low">
99
+ <div class="chart"><div class="cover-fill" style="width: 46%"></div><div class="cover-empty" style="width: 54%"></div></div>
100
100
  </td>
101
- <td data-value="50" class="pct medium">50%</td>
102
- <td data-value="54" class="abs medium">27/54</td>
103
- <td data-value="50" class="pct medium">50%</td>
104
- <td data-value="28" class="abs medium">14/28</td>
101
+ <td data-value="46.55" class="pct low">46.55%</td>
102
+ <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>
105
105
  <td data-value="20" class="pct low">20%</td>
106
106
  <td data-value="10" class="abs low">2/10</td>
107
- <td data-value="50.94" class="pct medium">50.94%</td>
108
- <td data-value="53" class="abs medium">27/53</td>
107
+ <td data-value="47.36" class="pct low">47.36%</td>
108
+ <td data-value="57" class="abs low">27/57</td>
109
109
  </tr>
110
110
 
111
111
  </tbody>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Mon May 09 2022 19:29:43 GMT+0000 (Coordinated Universal Time)
119
+ at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">50% </span>
26
+ <span class="strong">46.55% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>27/54</span>
28
+ <span class='fraction'>27/58</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">50% </span>
33
+ <span class="strong">43.75% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>14/28</span>
35
+ <span class='fraction'>14/32</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">50.94% </span>
47
+ <span class="strong">47.36% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>27/53</span>
49
+ <span class='fraction'>27/57</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -228,7 +228,13 @@
228
228
  <a name='L163'></a><a href='#L163'>163</a>
229
229
  <a name='L164'></a><a href='#L164'>164</a>
230
230
  <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
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>
232
238
  <span class="cline-any cline-neutral">&nbsp;</span>
233
239
  <span class="cline-any cline-neutral">&nbsp;</span>
234
240
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -293,21 +299,27 @@
293
299
  <span class="cline-any cline-neutral">&nbsp;</span>
294
300
  <span class="cline-any cline-neutral">&nbsp;</span>
295
301
  <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-no">&nbsp;</span>
296
304
  <span class="cline-any cline-no">&nbsp;</span>
297
305
  <span class="cline-any cline-no">&nbsp;</span>
298
306
  <span class="cline-any cline-no">&nbsp;</span>
299
- <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-neutral">&nbsp;</span>
301
307
  <span class="cline-any cline-neutral">&nbsp;</span>
302
308
  <span class="cline-any cline-no">&nbsp;</span>
303
309
  <span class="cline-any cline-no">&nbsp;</span>
304
310
  <span class="cline-any cline-no">&nbsp;</span>
311
+ <span class="cline-any cline-no">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
313
  <span class="cline-any cline-neutral">&nbsp;</span>
306
314
  <span class="cline-any cline-neutral">&nbsp;</span>
307
315
  <span class="cline-any cline-no">&nbsp;</span>
308
316
  <span class="cline-any cline-no">&nbsp;</span>
309
317
  <span class="cline-any cline-no">&nbsp;</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
319
  <span class="cline-any cline-no">&nbsp;</span>
320
+ <span class="cline-any cline-no">&nbsp;</span>
321
+ <span class="cline-any cline-no">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
323
  <span class="cline-any cline-neutral">&nbsp;</span>
312
324
  <span class="cline-any cline-neutral">&nbsp;</span>
313
325
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -457,22 +469,28 @@ function createSerializerHook(options: TypeScriptValidationOptions) {
457
469
  excludeNodeModules
458
470
  );
459
471
  &nbsp;
460
- // Map each file to a TypeScript project, and apply its delta operation.
472
+ // Try to map each file to a TypeScript project, and apply its delta operation.
473
+ // Some projects may not actually be TypeScript projects (ignore those).
461
474
  const tsprojectsToValidate: Set&lt;Project&gt; = <span class="cstat-no" title="statement not covered" >new Set();</span>
462
475
  <span class="cstat-no" title="statement not covered" > adds.concat(updates).forEach(<span class="fstat-no" title="function not covered" >(s</span>ourceFile) =&gt; {</span>
463
- const { tsproject, tssourceFiles } = <span class="cstat-no" title="statement not covered" >projectCache.getProjectInfo(</span>
464
- sourceFile,
465
- platform
466
- );
467
- <span class="cstat-no" title="statement not covered" > if (tssourceFiles.has(sourceFile)) {</span>
468
- <span class="cstat-no" title="statement not covered" > tsproject.setFile(sourceFile);</span>
469
- <span class="cstat-no" title="statement not covered" > tsprojectsToValidate.add(tsproject);</span>
476
+ const projectInfo = <span class="cstat-no" title="statement not covered" >projectCache.getProjectInfo(sourceFile, platform);</span>
477
+ <span class="cstat-no" title="statement not covered" > if (projectInfo) {</span>
478
+ // This is a TypeScript project. Validate it.
479
+ const { tsproject, tssourceFiles } = <span class="cstat-no" title="statement not covered" >projectInfo;</span>
480
+ <span class="cstat-no" title="statement not covered" > if (tssourceFiles.has(sourceFile)) {</span>
481
+ <span class="cstat-no" title="statement not covered" > tsproject.setFile(sourceFile);</span>
482
+ <span class="cstat-no" title="statement not covered" > tsprojectsToValidate.add(tsproject);</span>
483
+ }
470
484
  }
471
485
  });
472
486
  <span class="cstat-no" title="statement not covered" > deletes.forEach(<span class="fstat-no" title="function not covered" >(s</span>ourceFile) =&gt; {</span>
473
- const { tsproject } = <span class="cstat-no" title="statement not covered" >projectCache.getProjectInfo(sourceFile, platform);</span>
474
- <span class="cstat-no" title="statement not covered" > tsproject.removeFile(sourceFile);</span>
475
- <span class="cstat-no" title="statement not covered" > tsprojectsToValidate.add(tsproject);</span>
487
+ const projectInfo = <span class="cstat-no" title="statement not covered" >projectCache.getProjectInfo(sourceFile, platform);</span>
488
+ <span class="cstat-no" title="statement not covered" > if (projectInfo) {</span>
489
+ // This is a TypeScript project. Validate it.
490
+ const { tsproject } = <span class="cstat-no" title="statement not covered" >projectInfo;</span>
491
+ <span class="cstat-no" title="statement not covered" > tsproject.removeFile(sourceFile);</span>
492
+ <span class="cstat-no" title="statement not covered" > tsprojectsToValidate.add(tsproject);</span>
493
+ }
476
494
  });
477
495
  &nbsp;
478
496
  // Validate all projects which changed, printing all type errors.
@@ -565,7 +583,7 @@ export function customizeMetroConfig(
565
583
  <div class='footer quiet pad2 space-top1 center small'>
566
584
  Code coverage generated by
567
585
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
568
- at Mon May 09 2022 19:29:43 GMT+0000 (Coordinated Universal Time)
586
+ at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
569
587
  </div>
570
588
  <script src="../prettify.js"></script>
571
589
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">8.69% </span>
26
+ <span class="strong">7.84% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>4/46</span>
28
+ <span class='fraction'>4/51</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/14</span>
35
+ <span class='fraction'>0/18</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">9.09% </span>
47
+ <span class="strong">8.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>4/44</span>
49
+ <span class='fraction'>4/49</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file low" data-value="project-cache.ts"><a href="project-cache.ts.html">project-cache.ts</a></td>
83
- <td data-value="8.69" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 8%"></div><div class="cover-empty" style="width: 92%"></div></div>
83
+ <td data-value="7.84" class="pic low">
84
+ <div class="chart"><div class="cover-fill" style="width: 7%"></div><div class="cover-empty" style="width: 93%"></div></div>
85
85
  </td>
86
- <td data-value="8.69" class="pct low">8.69%</td>
87
- <td data-value="46" class="abs low">4/46</td>
86
+ <td data-value="7.84" class="pct low">7.84%</td>
87
+ <td data-value="51" class="abs low">4/51</td>
88
88
  <td data-value="0" class="pct low">0%</td>
89
- <td data-value="14" class="abs low">0/14</td>
89
+ <td data-value="18" class="abs low">0/18</td>
90
90
  <td data-value="10" class="pct low">10%</td>
91
91
  <td data-value="10" class="abs low">1/10</td>
92
- <td data-value="9.09" class="pct low">9.09%</td>
93
- <td data-value="44" class="abs low">4/44</td>
92
+ <td data-value="8.16" class="pct low">8.16%</td>
93
+ <td data-value="49" class="abs low">4/49</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -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 Mon May 09 2022 19:29:43 GMT+0000 (Coordinated Universal Time)
104
+ at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -23,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">8.69% </span>
26
+ <span class="strong">7.84% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>4/46</span>
28
+ <span class='fraction'>4/51</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/14</span>
35
+ <span class='fraction'>0/18</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">9.09% </span>
47
+ <span class="strong">8.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>4/44</span>
49
+ <span class='fraction'>4/49</span>
50
50
  </div>
51
51
 
52
52
 
@@ -245,7 +245,38 @@
245
245
  <a name='L180'></a><a href='#L180'>180</a>
246
246
  <a name='L181'></a><a href='#L181'>181</a>
247
247
  <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
280
  <span class="cline-any cline-neutral">&nbsp;</span>
250
281
  <span class="cline-any cline-neutral">&nbsp;</span>
251
282
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -333,6 +364,17 @@
333
364
  <span class="cline-any cline-neutral">&nbsp;</span>
334
365
  <span class="cline-any cline-neutral">&nbsp;</span>
335
366
  <span class="cline-any cline-no">&nbsp;</span>
367
+ <span class="cline-any cline-no">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-no">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
378
  <span class="cline-any cline-neutral">&nbsp;</span>
337
379
  <span class="cline-any cline-no">&nbsp;</span>
338
380
  <span class="cline-any cline-no">&nbsp;</span>
@@ -352,6 +394,10 @@
352
394
  <span class="cline-any cline-neutral">&nbsp;</span>
353
395
  <span class="cline-any cline-neutral">&nbsp;</span>
354
396
  <span class="cline-any cline-no">&nbsp;</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
401
  <span class="cline-any cline-neutral">&nbsp;</span>
356
402
  <span class="cline-any cline-neutral">&nbsp;</span>
357
403
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -403,11 +449,19 @@
403
449
  <span class="cline-any cline-no">&nbsp;</span>
404
450
  <span class="cline-any cline-neutral">&nbsp;</span>
405
451
  <span class="cline-any cline-no">&nbsp;</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
455
  <span class="cline-any cline-no">&nbsp;</span>
407
456
  <span class="cline-any cline-no">&nbsp;</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
461
  <span class="cline-any cline-neutral">&nbsp;</span>
410
462
  <span class="cline-any cline-no">&nbsp;</span>
463
+ <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-no">&nbsp;</span>
411
465
  <span class="cline-any cline-neutral">&nbsp;</span>
412
466
  <span class="cline-any cline-neutral">&nbsp;</span>
413
467
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -438,6 +492,7 @@ import {
438
492
  Project,
439
493
  readConfigFile,
440
494
  } from "@rnx-kit/typescript-service";
495
+ import fs from "fs";
441
496
  import path from "path";
442
497
  import ts from "typescript";
443
498
  &nbsp;
@@ -473,7 +528,10 @@ export interface ProjectCache {
473
528
  * @param sourceFile Source file
474
529
  * @returns Project targeting the given platform and containing the given source file
475
530
  */
476
- getProjectInfo(sourceFile: string, platform: AllPlatforms): ProjectInfo;
531
+ getProjectInfo(
532
+ sourceFile: string,
533
+ platform: AllPlatforms
534
+ ): ProjectInfo | undefined;
477
535
  }
478
536
  &nbsp;
479
537
  /**
@@ -513,8 +571,19 @@ export function createProjectCache(
513
571
  <span class="cstat-no" title="statement not covered" > return root;</span>
514
572
  }
515
573
  &nbsp;
516
- function <span class="fstat-no" title="function not covered" >readTSConfig(</span>root: string): ts.ParsedCommandLine {
574
+ function <span class="fstat-no" title="function not covered" >readTSConfig(</span>root: string): ts.ParsedCommandLine | undefined {
517
575
  const configFileName = <span class="cstat-no" title="statement not covered" >path.join(root, "tsconfig.json");</span>
576
+ <span class="cstat-no" title="statement not covered" > if (!fs.existsSync(configFileName)) {</span>
577
+ // Allow for packages that aren't TypeScript.
578
+ //
579
+ // Example: Users who enable bundling with all the config defaults will
580
+ // have type validation enabled automatically. They may not actually be
581
+ // using TypeScript.
582
+ //
583
+ // We shouldn't break them. We should use TS validation only for TS packages.
584
+ //
585
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
586
+ }
518
587
  &nbsp;
519
588
  const cmdLine = <span class="cstat-no" title="statement not covered" >readConfigFile(configFileName);</span>
520
589
  <span class="cstat-no" title="statement not covered" > if (!cmdLine) {</span>
@@ -531,9 +600,13 @@ export function createProjectCache(
531
600
  function <span class="fstat-no" title="function not covered" >createProjectInfo(</span>
532
601
  root: string,
533
602
  platform: AllPlatforms
534
- ): ProjectInfo {
603
+ ): ProjectInfo | undefined {
535
604
  // Load the TypeScript configuration file for this project.
536
605
  const cmdLine = <span class="cstat-no" title="statement not covered" >readTSConfig(root);</span>
606
+ <span class="cstat-no" title="statement not covered" > if (!cmdLine) {</span>
607
+ // Not a TypeScript project
608
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
609
+ }
537
610
  &nbsp;
538
611
  // Trim down the list of source files found by TypeScript. This ensures
539
612
  // that only explicitly added files are loaded and parsed by TypeScript.
@@ -580,15 +653,23 @@ export function createProjectCache(
580
653
  function <span class="fstat-no" title="function not covered" >getProjectInfo(</span>
581
654
  sourceFile: string,
582
655
  platform: AllPlatforms
583
- ): ProjectInfo {
656
+ ): ProjectInfo | undefined {
584
657
  const root = <span class="cstat-no" title="statement not covered" >findProjectRoot(sourceFile);</span>
585
658
  <span class="cstat-no" title="statement not covered" > projects[root] ||= {};</span>
586
659
  &nbsp;
587
- let info = <span class="cstat-no" title="statement not covered" >projects[root][platform];</span>
588
- <span class="cstat-no" title="statement not covered" > if (!info) {</span>
589
- <span class="cstat-no" title="statement not covered" > info = createProjectInfo(root, platform);</span>
590
- <span class="cstat-no" title="statement not covered" > projects[root][platform] = info;</span>
660
+ const platforms = <span class="cstat-no" title="statement not covered" >projects[root];</span>
661
+ &nbsp;
662
+ // Have we seen the project/platform for this source file before,
663
+ // even if what we saw is 'undefined' (e.g. not a TS project)?
664
+ <span class="cstat-no" title="statement not covered" > if (Object.prototype.hasOwnProperty.call(platforms, platform)) {</span>
665
+ <span class="cstat-no" title="statement not covered" > return platforms[platform];</span>
591
666
  }
667
+ &nbsp;
668
+ // We haven't seen this project/platform before. Try to load it,
669
+ // even if it isn't a TS project. Cache the result so we don't
670
+ // do this again.
671
+ const info = <span class="cstat-no" title="statement not covered" >createProjectInfo(root, platform);</span>
672
+ <span class="cstat-no" title="statement not covered" > platforms[platform] = info;</span>
592
673
  <span class="cstat-no" title="statement not covered" > return info;</span>
593
674
  }
594
675
  &nbsp;
@@ -616,7 +697,7 @@ export function createProjectCache(
616
697
  <div class='footer quiet pad2 space-top1 center small'>
617
698
  Code coverage generated by
618
699
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
619
- at Mon May 09 2022 19:29:43 GMT+0000 (Coordinated Universal Time)
700
+ at Thu May 12 2022 19:21:06 GMT+0000 (Coordinated Universal Time)
620
701
  </div>
621
702
  <script src="../../prettify.js"></script>
622
703
  <script>