@rnx-kit/cli 0.12.4 → 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.
@@ -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 Thu May 12 2022 12:57:39 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>
@@ -291,11 +291,11 @@ FN:37,(anonymous_1)
291
291
  FN:39,(anonymous_2)
292
292
  FN:53,(anonymous_3)
293
293
  FN:58,(anonymous_4)
294
- FN:67,(anonymous_5)
295
- FN:77,(anonymous_6)
296
- FN:85,(anonymous_7)
297
- FN:101,(anonymous_8)
298
- FN:114,customizeMetroConfig
294
+ FN:68,(anonymous_5)
295
+ FN:79,(anonymous_6)
296
+ FN:91,(anonymous_7)
297
+ FN:107,(anonymous_8)
298
+ FN:120,customizeMetroConfig
299
299
  FNF:10
300
300
  FNH:2
301
301
  FNDA:6,createSerializerHook
@@ -321,77 +321,85 @@ DA:53,0
321
321
  DA:56,0
322
322
  DA:58,0
323
323
  DA:61,0
324
- DA:66,0
325
324
  DA:67,0
326
325
  DA:68,0
326
+ DA:69,0
327
+ DA:70,0
327
328
  DA:72,0
328
329
  DA:73,0
329
330
  DA:74,0
330
- DA:77,0
331
- DA:78,0
331
+ DA:75,0
332
332
  DA:79,0
333
333
  DA:80,0
334
+ DA:81,0
335
+ DA:83,0
334
336
  DA:84,0
335
337
  DA:85,0
336
- DA:86,0
337
- DA:87,0
338
+ DA:90,0
338
339
  DA:91,0
340
+ DA:92,0
339
341
  DA:93,0
340
- DA:98,6
341
- DA:101,2
342
- DA:123,6
343
- DA:125,6
344
- DA:126,6
345
- DA:127,1
346
- DA:128,5
347
- DA:129,2
342
+ DA:97,0
343
+ DA:99,0
344
+ DA:104,6
345
+ DA:107,2
346
+ DA:129,6
348
347
  DA:131,6
349
- DA:132,1
350
- DA:133,5
351
- DA:134,2
348
+ DA:132,6
349
+ DA:133,1
350
+ DA:134,5
351
+ DA:135,2
352
352
  DA:137,6
353
353
  DA:138,1
354
- DA:139,1
355
- DA:140,5
356
- DA:151,4
357
- DA:155,1
358
- DA:158,6
359
- DA:159,6
360
- DA:160,0
361
- DA:161,6
362
- DA:162,6
354
+ DA:139,5
355
+ DA:140,2
356
+ DA:143,6
357
+ DA:144,1
358
+ DA:145,1
359
+ DA:146,5
360
+ DA:157,4
361
+ DA:161,1
363
362
  DA:164,6
364
- LF:53
363
+ DA:165,6
364
+ DA:166,0
365
+ DA:167,6
366
+ DA:168,6
367
+ DA:170,6
368
+ LF:57
365
369
  LH:27
366
370
  BRDA:41,0,0,0
367
371
  BRDA:41,0,1,0
368
372
  BRDA:42,1,0,0
369
373
  BRDA:42,1,1,0
370
- BRDA:72,2,0,0
371
- BRDA:72,2,1,0
372
- BRDA:86,3,0,0
373
- BRDA:86,3,1,0
374
- BRDA:91,4,0,0
375
- BRDA:91,4,1,0
376
- BRDA:91,5,0,0
377
- BRDA:91,5,1,0
378
- BRDA:126,6,0,1
379
- BRDA:126,6,1,5
380
- BRDA:128,7,0,2
381
- BRDA:128,7,1,3
382
- BRDA:131,8,0,1
383
- BRDA:131,8,1,5
384
- BRDA:133,9,0,2
385
- BRDA:133,9,1,3
374
+ BRDA:70,2,0,0
375
+ BRDA:70,2,1,0
376
+ BRDA:73,3,0,0
377
+ BRDA:73,3,1,0
378
+ BRDA:81,4,0,0
379
+ BRDA:81,4,1,0
380
+ BRDA:92,5,0,0
381
+ BRDA:92,5,1,0
382
+ BRDA:97,6,0,0
383
+ BRDA:97,6,1,0
384
+ BRDA:97,7,0,0
385
+ BRDA:97,7,1,0
386
+ BRDA:132,8,0,1
387
+ BRDA:132,8,1,5
388
+ BRDA:134,9,0,2
389
+ BRDA:134,9,1,3
386
390
  BRDA:137,10,0,1
387
391
  BRDA:137,10,1,5
388
- BRDA:140,11,0,4
389
- BRDA:140,11,1,1
390
- BRDA:159,12,0,0
391
- BRDA:159,12,1,6
392
- BRDA:161,13,0,6
393
- BRDA:161,13,1,0
394
- BRF:28
392
+ BRDA:139,11,0,2
393
+ BRDA:139,11,1,3
394
+ BRDA:143,12,0,1
395
+ BRDA:143,12,1,5
396
+ BRDA:146,13,0,4
397
+ BRDA:146,13,1,1
398
+ BRDA:165,14,0,0
399
+ BRDA:165,14,1,6
400
+ BRDA:167,15,0,6
401
+ BRDA:167,15,1,0
402
+ BRF:32
395
403
  BRH:14
396
404
  end_of_record
397
405
  TN:
@@ -512,16 +520,16 @@ BRH:2
512
520
  end_of_record
513
521
  TN:
514
522
  SF:src/typescript/project-cache.ts
515
- FN:56,createProjectCache
516
- FN:68,findProjectRoot
517
- FN:87,readTSConfig
518
- FN:95,(anonymous_3)
519
- FN:102,createProjectInfo
520
- FN:119,(anonymous_5)
521
- FN:123,(anonymous_6)
522
- FN:151,getProjectInfo
523
- FN:166,clearPlatform
524
- FN:167,(anonymous_9)
523
+ FN:60,createProjectCache
524
+ FN:72,findProjectRoot
525
+ FN:91,readTSConfig
526
+ FN:110,(anonymous_3)
527
+ FN:117,createProjectInfo
528
+ FN:138,(anonymous_5)
529
+ FN:142,(anonymous_6)
530
+ FN:170,getProjectInfo
531
+ FN:193,clearPlatform
532
+ FN:194,(anonymous_9)
525
533
  FNF:10
526
534
  FNH:1
527
535
  FNDA:6,createProjectCache
@@ -534,66 +542,75 @@ FNDA:0,(anonymous_6)
534
542
  FNDA:0,getProjectInfo
535
543
  FNDA:0,clearPlatform
536
544
  FNDA:0,(anonymous_9)
537
- DA:59,6
538
- DA:60,6
539
- DA:66,6
540
- DA:70,0
541
- DA:71,0
542
- DA:72,0
543
- DA:77,0
544
- DA:78,0
545
- DA:79,0
546
- DA:84,0
545
+ DA:63,6
546
+ DA:64,6
547
+ DA:70,6
548
+ DA:74,0
549
+ DA:75,0
550
+ DA:76,0
551
+ DA:81,0
552
+ DA:82,0
553
+ DA:83,0
547
554
  DA:88,0
548
- DA:90,0
549
- DA:91,0
550
555
  DA:92,0
551
556
  DA:93,0
552
- DA:94,0
553
- DA:95,0
554
- DA:96,0
555
- DA:99,0
557
+ DA:102,0
558
+ DA:105,0
559
+ DA:106,0
556
560
  DA:107,0
557
- DA:118,0
558
- DA:119,0
561
+ DA:108,0
562
+ DA:109,0
563
+ DA:110,0
564
+ DA:111,0
565
+ DA:114,0
566
+ DA:122,0
559
567
  DA:123,0
560
- DA:124,0
561
568
  DA:125,0
562
- DA:126,0
563
- DA:127,0
564
- DA:128,0
569
+ DA:137,0
565
570
  DA:138,0
571
+ DA:142,0
572
+ DA:143,0
573
+ DA:144,0
566
574
  DA:145,0
567
- DA:155,0
568
- DA:156,0
569
- DA:158,0
570
- DA:159,0
571
- DA:160,0
572
- DA:161,0
573
- DA:163,0
574
- DA:167,0
575
- DA:168,0
576
- DA:169,0
577
- DA:170,0
578
- DA:171,0
579
- DA:173,0
580
- DA:178,6
581
- LF:44
575
+ DA:146,0
576
+ DA:147,0
577
+ DA:157,0
578
+ DA:164,0
579
+ DA:174,0
580
+ DA:175,0
581
+ DA:177,0
582
+ DA:181,0
583
+ DA:182,0
584
+ DA:188,0
585
+ DA:189,0
586
+ DA:190,0
587
+ DA:194,0
588
+ DA:195,0
589
+ DA:196,0
590
+ DA:197,0
591
+ DA:198,0
592
+ DA:200,0
593
+ DA:205,6
594
+ LF:49
582
595
  LH:4
583
- BRDA:71,0,0,0
584
- BRDA:71,0,1,0
585
- BRDA:78,1,0,0
586
- BRDA:78,1,1,0
587
- BRDA:91,2,0,0
588
- BRDA:91,2,1,0
589
- BRDA:93,3,0,0
590
- BRDA:93,3,1,0
591
- BRDA:159,4,0,0
592
- BRDA:159,4,1,0
593
- BRDA:169,5,0,0
594
- BRDA:169,5,1,0
595
- BRDA:170,6,0,0
596
- BRDA:170,6,1,0
597
- BRF:14
596
+ BRDA:75,0,0,0
597
+ BRDA:75,0,1,0
598
+ BRDA:82,1,0,0
599
+ BRDA:82,1,1,0
600
+ BRDA:93,2,0,0
601
+ BRDA:93,2,1,0
602
+ BRDA:106,3,0,0
603
+ BRDA:106,3,1,0
604
+ BRDA:108,4,0,0
605
+ BRDA:108,4,1,0
606
+ BRDA:123,5,0,0
607
+ BRDA:123,5,1,0
608
+ BRDA:181,6,0,0
609
+ BRDA:181,6,1,0
610
+ BRDA:196,7,0,0
611
+ BRDA:196,7,1,0
612
+ BRDA:197,8,0,0
613
+ BRDA:197,8,1,0
614
+ BRF:18
598
615
  BRH:0
599
616
  end_of_record
@@ -1 +1 @@
1
- {"version":3,"file":"metro-config.d.ts","sourceRoot":"","sources":["../src/metro-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,IAAI,qBAAqB,EACvC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAEL,OAAO,IAAI,wBAAwB,EACpC,MAAM,0CAA0C,CAAC;AAUlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AAoFpE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,mBAAmB,EAAE,YAAY,EACjC,wBAAwB,EAAE,OAAO,GAAG,qBAAqB,EACzD,2BAA2B,EAAE,OAAO,GAAG,wBAAwB,EAC/D,oBAAoB,EAAE,OAAO,GAAG,2BAA2B,EAC3D,SAAS,EAAE,OAAO,GACjB,IAAI,CA6CN"}
1
+ {"version":3,"file":"metro-config.d.ts","sourceRoot":"","sources":["../src/metro-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,IAAI,qBAAqB,EACvC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAEL,OAAO,IAAI,wBAAwB,EACpC,MAAM,0CAA0C,CAAC;AAUlD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AA0FpE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,mBAAmB,EAAE,YAAY,EACjC,wBAAwB,EAAE,OAAO,GAAG,qBAAqB,EACzD,2BAA2B,EAAE,OAAO,GAAG,wBAAwB,EAC/D,oBAAoB,EAAE,OAAO,GAAG,2BAA2B,EAC3D,SAAS,EAAE,OAAO,GACjB,IAAI,CA6CN"}
@@ -34,19 +34,28 @@ function createSerializerHook(options) {
34
34
  const adds = Array.from(delta.added.values(), (module) => module.path).filter(excludeNodeModules);
35
35
  const updates = Array.from(delta.modified.values(), (module) => module.path).filter(excludeNodeModules);
36
36
  const deletes = Array.from(delta.deleted.values()).filter(excludeNodeModules);
37
- // Map each file to a TypeScript project, and apply its delta operation.
37
+ // Try to map each file to a TypeScript project, and apply its delta operation.
38
+ // Some projects may not actually be TypeScript projects (ignore those).
38
39
  const tsprojectsToValidate = new Set();
39
40
  adds.concat(updates).forEach((sourceFile) => {
40
- const { tsproject, tssourceFiles } = projectCache.getProjectInfo(sourceFile, platform);
41
- if (tssourceFiles.has(sourceFile)) {
42
- tsproject.setFile(sourceFile);
43
- tsprojectsToValidate.add(tsproject);
41
+ const projectInfo = projectCache.getProjectInfo(sourceFile, platform);
42
+ if (projectInfo) {
43
+ // This is a TypeScript project. Validate it.
44
+ const { tsproject, tssourceFiles } = projectInfo;
45
+ if (tssourceFiles.has(sourceFile)) {
46
+ tsproject.setFile(sourceFile);
47
+ tsprojectsToValidate.add(tsproject);
48
+ }
44
49
  }
45
50
  });
46
51
  deletes.forEach((sourceFile) => {
47
- const { tsproject } = projectCache.getProjectInfo(sourceFile, platform);
48
- tsproject.removeFile(sourceFile);
49
- tsprojectsToValidate.add(tsproject);
52
+ const projectInfo = projectCache.getProjectInfo(sourceFile, platform);
53
+ if (projectInfo) {
54
+ // This is a TypeScript project. Validate it.
55
+ const { tsproject } = projectInfo;
56
+ tsproject.removeFile(sourceFile);
57
+ tsprojectsToValidate.add(tsproject);
58
+ }
50
59
  });
51
60
  // Validate all projects which changed, printing all type errors.
52
61
  let isValid = true;
@@ -1 +1 @@
1
- {"version":3,"file":"metro-config.js","sourceRoot":"","sources":["../src/metro-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metro-config.js","sourceRoot":"","sources":["../src/metro-config.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export interface ProjectCache {
30
30
  * @param sourceFile Source file
31
31
  * @returns Project targeting the given platform and containing the given source file
32
32
  */
33
- getProjectInfo(sourceFile: string, platform: AllPlatforms): ProjectInfo;
33
+ getProjectInfo(sourceFile: string, platform: AllPlatforms): ProjectInfo | undefined;
34
34
  }
35
35
  /**
36
36
  * Create an empty cache for holding TypeScript projects.
@@ -1 +1 @@
1
- {"version":3,"file":"project-cache.d.ts","sourceRoot":"","sources":["../../src/typescript/project-cache.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAEb,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAEL,OAAO,EAER,MAAM,6BAA6B,CAAC;AAIrC,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAE5C;;;;;;;OAOG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,WAAW,CAAC;CACzE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,YAAY,CA4Hd"}
1
+ {"version":3,"file":"project-cache.d.ts","sourceRoot":"","sources":["../../src/typescript/project-cache.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAEb,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAEL,OAAO,EAER,MAAM,6BAA6B,CAAC;AAKrC,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAE5C;;;;;;;OAOG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,YAAY,GACrB,WAAW,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,YAAY,CAmJd"}
@@ -8,6 +8,7 @@ const tools_node_1 = require("@rnx-kit/tools-node");
8
8
  const platform_1 = require("@rnx-kit/tools-react-native/platform");
9
9
  const typescript_react_native_resolver_1 = require("@rnx-kit/typescript-react-native-resolver");
10
10
  const typescript_service_1 = require("@rnx-kit/typescript-service");
11
+ const fs_1 = __importDefault(require("fs"));
11
12
  const path_1 = __importDefault(require("path"));
12
13
  const typescript_1 = __importDefault(require("typescript"));
13
14
  /**
@@ -37,6 +38,17 @@ function createProjectCache(print) {
37
38
  }
38
39
  function readTSConfig(root) {
39
40
  const configFileName = path_1.default.join(root, "tsconfig.json");
41
+ if (!fs_1.default.existsSync(configFileName)) {
42
+ // Allow for packages that aren't TypeScript.
43
+ //
44
+ // Example: Users who enable bundling with all the config defaults will
45
+ // have type validation enabled automatically. They may not actually be
46
+ // using TypeScript.
47
+ //
48
+ // We shouldn't break them. We should use TS validation only for TS packages.
49
+ //
50
+ return undefined;
51
+ }
40
52
  const cmdLine = (0, typescript_service_1.readConfigFile)(configFileName);
41
53
  if (!cmdLine) {
42
54
  throw new Error(`Failed to load '${configFileName}'`);
@@ -51,6 +63,10 @@ function createProjectCache(print) {
51
63
  function createProjectInfo(root, platform) {
52
64
  // Load the TypeScript configuration file for this project.
53
65
  const cmdLine = readTSConfig(root);
66
+ if (!cmdLine) {
67
+ // Not a TypeScript project
68
+ return undefined;
69
+ }
54
70
  // Trim down the list of source files found by TypeScript. This ensures
55
71
  // that only explicitly added files are loaded and parsed by TypeScript.
56
72
  // This is a perf optimization. We don't want to spend cycles on files
@@ -87,11 +103,17 @@ function createProjectCache(print) {
87
103
  function getProjectInfo(sourceFile, platform) {
88
104
  const root = findProjectRoot(sourceFile);
89
105
  projects[root] || (projects[root] = {});
90
- let info = projects[root][platform];
91
- if (!info) {
92
- info = createProjectInfo(root, platform);
93
- projects[root][platform] = info;
106
+ const platforms = projects[root];
107
+ // Have we seen the project/platform for this source file before,
108
+ // even if what we saw is 'undefined' (e.g. not a TS project)?
109
+ if (Object.prototype.hasOwnProperty.call(platforms, platform)) {
110
+ return platforms[platform];
94
111
  }
112
+ // We haven't seen this project/platform before. Try to load it,
113
+ // even if it isn't a TS project. Cache the result so we don't
114
+ // do this again.
115
+ const info = createProjectInfo(root, platform);
116
+ platforms[platform] = info;
95
117
  return info;
96
118
  }
97
119
  function clearPlatform(platform) {