193
await test('./__source__/Example'); // original source (uncompiled)
194
await test('./__source__/__compiled__/inline/Example'); // inline source map
195
await test('./__source__/__compiled__/external/Example'); // external source map
196
+ await test('./__source__/__compiled__/inline/index-map/Example'); // inline index map source map
197
+ await test('./__source__/__compiled__/external/index-map/Example'); // external index map source map
198
await test('./__source__/__compiled__/bundle/index', 'Example'); // bundle source map
199
await test('./__source__/__compiled__/no-columns/Example'); // simulated Webpack 'cheap-module-source-map'
200
});
227
await test('./__source__/ToDoList'); // original source (uncompiled)
228
await test('./__source__/__compiled__/inline/ToDoList'); // inline source map
229
await test('./__source__/__compiled__/external/ToDoList'); // external source map
230
+ await test('./__source__/__compiled__/inline/index-map/ToDoList'); // inline index map source map
231
+ await test('./__source__/__compiled__/external/index-map/ToDoList'); // external index map source map
232
await test('./__source__/__compiled__/bundle', 'ToDoList'); // bundle source map
233
await test('./__source__/__compiled__/no-columns/ToDoList'); // simulated Webpack 'cheap-module-source-map'
234
});
247
await test('./__source__/ComponentWithCustomHook'); // original source (uncompiled)
248
await test('./__source__/__compiled__/inline/ComponentWithCustomHook'); // inline source map
249
await test('./__source__/__compiled__/external/ComponentWithCustomHook'); // external source map
250
+ await test(
251
+ './__source__/__compiled__/inline/index-map/ComponentWithCustomHook',
252
+ ); // inline index map source map
253
+ await test(
254
+ './__source__/__compiled__/external/index-map/ComponentWithCustomHook',
255
+ ); // external index map source map
256
await test('./__source__/__compiled__/bundle', 'ComponentWithCustomHook'); // bundle source map
257
await test(
258
'./__source__/__compiled__/no-columns/ComponentWithCustomHook',
276
await test(
277
'./__source__/__compiled__/external/ComponentUsingHooksIndirectly',
278
); // external source map
279
+ await test(
280
+ './__source__/__compiled__/inline/index-map/ComponentUsingHooksIndirectly',
281
+ ); // inline index map source map
282
+ await test(
283
+ './__source__/__compiled__/external/index-map/ComponentUsingHooksIndirectly',
284
+ ); // external index map source map
285
await test(
286
'./__source__/__compiled__/bundle',
287
'ComponentUsingHooksIndirectly',
311
312
await test('./__source__/__compiled__/inline/ComponentWithNestedHooks'); // inline source map
313
await test('./__source__/__compiled__/external/ComponentWithNestedHooks'); // external source map
314
+ await test(
315
+ './__source__/__compiled__/inline/index-map/ComponentWithNestedHooks',
316
+ ); // inline index map source map
317
+ await test(
318
+ './__source__/__compiled__/external/index-map/ComponentWithNestedHooks',
319
+ ); // external index map source map
320
await test(
321
'./__source__/__compiled__/bundle',
322
'ComponentWithNestedHooks',
345
await test(
346
'./__source__/__compiled__/external/ComponentWithExternalCustomHooks',
347
); // external source map
348
+ await test(
349
+ './__source__/__compiled__/inline/index-map/ComponentWithExternalCustomHooks',
350
+ ); // inline index map source map
351
+ await test(
352
+ './__source__/__compiled__/external/index-map/ComponentWithExternalCustomHooks',
353
+ ); // external index map source map
354
await test(
355
'./__source__/__compiled__/bundle',
356
'ComponentWithExternalCustomHooks',
378
await test(
379
'./__source__/__compiled__/external/ComponentWithMultipleHooksPerLine',
380
); // external source map
381
+ await test(
382
+ './__source__/__compiled__/inline/index-map/ComponentWithMultipleHooksPerLine',
383
+ ); // inline index map source map
384
+ await test(
385
+ './__source__/__compiled__/external/index-map/ComponentWithMultipleHooksPerLine',
386
+ ); // external index map source map
387
await test(
388
'./__source__/__compiled__/bundle',
389
'ComponentWithMultipleHooksPerLine',
423
await test('./__source__/InlineRequire'); // original source (uncompiled)
424
await test('./__source__/__compiled__/inline/InlineRequire'); // inline source map
425
await test('./__source__/__compiled__/external/InlineRequire'); // external source map
426
+ await test('./__source__/__compiled__/inline/index-map/InlineRequire'); // inline index map source map
427
+ await test('./__source__/__compiled__/external/index-map/InlineRequire'); // external index map source map
428
await test('./__source__/__compiled__/bundle', 'InlineRequire'); // bundle source map
429
await test('./__source__/__compiled__/no-columns/InlineRequire'); // simulated Webpack 'cheap-module-source-map'
430
});
448
await test(
449
'./__source__/__compiled__/external/ContainingStringSourceMappingURL',
450
); // external source map
451
+ await test(
452
+ './__source__/__compiled__/inline/index-map/ContainingStringSourceMappingURL',
453
+ ); // inline index map source map
454
+ await test(
455
+ './__source__/__compiled__/external/index-map/ContainingStringSourceMappingURL',
456
+ ); // external index map source map
457
await test(
458
'./__source__/__compiled__/bundle',
459
'ContainingStringSourceMappingURL',
465
});
466
467
describe('extended source maps', () => {
426
- let parseMock;
427
-
468
beforeEach(() => {
429
- parseMock = jest.fn();
430
- jest.mock('@babel/parser', () => {
431
- const actual = jest.requireActual('@babel/parser');
432
- const parse = (...args) => {
433
- parseMock();
434
- return actual.parse(...args);
435
- };
436
- return {
437
- parse,
438
- ...actual,
439
- };
440
- });
469
+ const babelParser = require('@babel/parser');
470
+ const generateHookMapModule = require('../generateHookMap');
471
+ jest.spyOn(babelParser, 'parse');
472
+ jest.spyOn(generateHookMapModule, 'decodeHookMap');
473
});
474
475
it('should work for simple components', async () => {
479
expectHookNamesToEqual(hookNames, [
480
'count', // useState
481
]);
450
- expect(parseMock).toHaveBeenCalledTimes(0);
482
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
483
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
484
}
485
453
- await test('./__source__/Example'); // original source (uncompiled)
486
await test(
487
'./__source__/__compiled__/inline/fb-sources-extended/Example',
456
- ); // x_fb_sources extended inline source map
488
+ ); // x_facebook_sources extended inline source map
489
await test(
490
'./__source__/__compiled__/external/fb-sources-extended/Example',
459
- ); // x_fb_sources extended external source map
491
+ ); // x_facebook_sources extended external source map
492
await test(
493
'./__source__/__compiled__/inline/react-sources-extended/Example',
494
); // x_react_sources extended inline source map
495
await test(
496
'./__source__/__compiled__/external/react-sources-extended/Example',
497
); // x_react_sources extended external source map
498
+
499
+ // Using index map format for source maps
500
+ await test(
501
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/Example',
502
+ ); // x_facebook_sources extended inline index map source map
503
+ await test(
504
+ './__source__/__compiled__/external/fb-sources-extended/index-map/Example',
505
+ ); // x_facebook_sources extended external index map source map
506
+ await test(
507
+ './__source__/__compiled__/inline/react-sources-extended/index-map/Example',
508
+ ); // x_react_sources extended inline index map source map
509
+ await test(
510
+ './__source__/__compiled__/external/react-sources-extended/index-map/Example',
511
+ ); // x_react_sources extended external index map source map
512
+
513
// TODO test no-columns and bundle cases with extended source maps
514
});
515
537
'handleToggle', // useCallback
538
]);
539
493
- expect(parseMock).toHaveBeenCalledTimes(0);
540
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
541
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
542
}
543
496
- await test('./__source__/ToDoList'); // original source (uncompiled)
544
await test(
545
'./__source__/__compiled__/inline/fb-sources-extended/ToDoList',
499
- ); // x_fb_sources extended inline source map
546
+ ); // x_facebook_sources extended inline source map
547
await test(
548
'./__source__/__compiled__/external/fb-sources-extended/ToDoList',
502
- ); // x_fb_sources extended external source map
549
+ ); // x_facebook_sources extended external source map
550
await test(
551
'./__source__/__compiled__/inline/react-sources-extended/ToDoList',
552
); // x_react_sources extended inline source map
553
await test(
554
'./__source__/__compiled__/external/react-sources-extended/ToDoList',
555
); // x_react_sources extended external source map
556
+
557
+ // Using index map format for source maps
558
+ await test(
559
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/ToDoList',
560
+ ); // x_facebook_sources extended inline index map source map
561
+ await test(
562
+ './__source__/__compiled__/external/fb-sources-extended/index-map/ToDoList',
563
+ ); // x_facebook_sources extended external index map source map
564
+ await test(
565
+ './__source__/__compiled__/inline/react-sources-extended/index-map/ToDoList',
566
+ ); // x_react_sources extended inline index map source map
567
+ await test(
568
+ './__source__/__compiled__/external/react-sources-extended/index-map/ToDoList',
569
+ ); // x_react_sources extended external index map source map
570
+
571
// TODO test no-columns and bundle cases with extended source maps
572
});
573
580
'isDarkMode', // useIsDarkMode()
581
'isDarkMode', // useIsDarkMode -> useState()
582
]);
521
- expect(parseMock).toHaveBeenCalledTimes(0);
583
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
584
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
585
}
586
524
- await test('./__source__/ComponentWithCustomHook'); // original source (uncompiled)
587
await test(
588
'./__source__/__compiled__/inline/fb-sources-extended/ComponentWithCustomHook',
527
- ); // x_fb_sources extended inline source map
589
+ ); // x_facebook_sources extended inline source map
590
await test(
591
'./__source__/__compiled__/external/fb-sources-extended/ComponentWithCustomHook',
530
- ); // x_fb_sources extended external source map
592
+ ); // x_facebook_sources extended external source map
593
await test(
594
'./__source__/__compiled__/inline/react-sources-extended/ComponentWithCustomHook',
595
); // x_react_sources extended inline source map
596
await test(
597
'./__source__/__compiled__/external/react-sources-extended/ComponentWithCustomHook',
598
); // x_react_sources extended external source map
599
+
600
+ // Using index map format for source maps
601
+ await test(
602
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/ComponentWithCustomHook',
603
+ ); // x_facebook_sources extended inline index map source map
604
+ await test(
605
+ './__source__/__compiled__/external/fb-sources-extended/index-map/ComponentWithCustomHook',
606
+ ); // x_facebook_sources extended external index map source map
607
+ await test(
608
+ './__source__/__compiled__/inline/react-sources-extended/index-map/ComponentWithCustomHook',
609
+ ); // x_react_sources extended inline index map source map
610
+ await test(
611
+ './__source__/__compiled__/external/react-sources-extended/index-map/ComponentWithCustomHook',
612
+ ); // x_react_sources extended external index map source map
613
+
614
// TODO test no-columns and bundle cases with extended source maps
615
});
616
623
'darkMode', // useDarkMode()
624
'isDarkMode', // useState()
625
]);
549
- expect(parseMock).toHaveBeenCalledTimes(0);
626
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
627
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
628
}
629
630
await test(
631
'./__source__/__compiled__/inline/fb-sources-extended/ComponentUsingHooksIndirectly',
554
- ); // x_fb_sources extended inline source map
632
+ ); // x_facebook_sources extended inline source map
633
await test(
634
'./__source__/__compiled__/external/fb-sources-extended/ComponentUsingHooksIndirectly',
557
- ); // x_fb_sources extended external source map
635
+ ); // x_facebook_sources extended external source map
636
await test(
637
'./__source__/__compiled__/inline/react-sources-extended/ComponentUsingHooksIndirectly',
638
); // x_react_sources extended inline source map
639
await test(
640
'./__source__/__compiled__/external/react-sources-extended/ComponentUsingHooksIndirectly',
641
); // x_react_sources extended external source map
642
+
643
+ // Using index map format for source maps
644
+ await test(
645
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/ComponentUsingHooksIndirectly',
646
+ ); // x_facebook_sources extended inline index map source map
647
+ await test(
648
+ './__source__/__compiled__/external/fb-sources-extended/index-map/ComponentUsingHooksIndirectly',
649
+ ); // x_facebook_sources extended external index map source map
650
+ await test(
651
+ './__source__/__compiled__/inline/react-sources-extended/index-map/ComponentUsingHooksIndirectly',
652
+ ); // x_react_sources extended inline index map source map
653
+ await test(
654
+ './__source__/__compiled__/external/react-sources-extended/index-map/ComponentUsingHooksIndirectly',
655
+ ); // x_react_sources extended external index map source map
656
+
657
// TODO test no-columns and bundle cases with extended source maps
658
});
659
673
expectHookNamesToEqual(innerHookNames, [
674
'state', // useState()
675
]);
583
- expect(parseMock).toHaveBeenCalledTimes(0);
676
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
677
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
678
}
679
680
await test(
681
'./__source__/__compiled__/inline/fb-sources-extended/ComponentWithNestedHooks',
588
- ); // x_fb_sources extended inline source map
682
+ ); // x_facebook_sources extended inline source map
683
await test(
684
'./__source__/__compiled__/external/fb-sources-extended/ComponentWithNestedHooks',
591
- ); // x_fb_sources extended external source map
685
+ ); // x_facebook_sources extended external source map
686
await test(
687
'./__source__/__compiled__/inline/react-sources-extended/ComponentWithNestedHooks',
688
); // x_react_sources extended inline source map
689
await test(
690
'./__source__/__compiled__/external/react-sources-extended/ComponentWithNestedHooks',
691
); // x_react_sources extended external source map
692
+
693
+ // Using index map format for source maps
694
+ await test(
695
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/ComponentWithNestedHooks',
696
+ ); // x_facebook_sources extended inline index map source map
697
+ await test(
698
+ './__source__/__compiled__/external/fb-sources-extended/index-map/ComponentWithNestedHooks',
699
+ ); // x_facebook_sources extended external index map source map
700
+ await test(
701
+ './__source__/__compiled__/inline/react-sources-extended/index-map/ComponentWithNestedHooks',
702
+ ); // x_react_sources extended inline index map source map
703
+ await test(
704
+ './__source__/__compiled__/external/react-sources-extended/index-map/ComponentWithNestedHooks',
705
+ ); // x_react_sources extended external index map source map
706
+
707
// TODO test no-columns and bundle cases with extended source maps
708
});
709
715
'theme', // useTheme()
716
'theme', // useContext()
717
]);
609
- expect(parseMock).toHaveBeenCalledTimes(0);
718
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
719
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
720
}
721
722
// We can't test the uncompiled source here, because it either needs to get transformed,
724
725
await test(
726
'./__source__/__compiled__/inline/fb-sources-extended/ComponentWithExternalCustomHooks',
617
- ); // x_fb_sources extended inline source map
727
+ ); // x_facebook_sources extended inline source map
728
await test(
729
'./__source__/__compiled__/external/fb-sources-extended/ComponentWithExternalCustomHooks',
620
- ); // x_fb_sources extended external source map
730
+ ); // x_facebook_sources extended external source map
731
await test(
732
'./__source__/__compiled__/inline/react-sources-extended/ComponentWithExternalCustomHooks',
733
); // x_react_sources extended inline source map
734
await test(
735
'./__source__/__compiled__/external/react-sources-extended/ComponentWithExternalCustomHooks',
736
); // x_react_sources extended external source map
737
+
738
+ // Using index map format for source maps
739
+ await test(
740
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/ComponentWithExternalCustomHooks',
741
+ ); // x_facebook_sources extended inline index map source map
742
+ await test(
743
+ './__source__/__compiled__/external/fb-sources-extended/index-map/ComponentWithExternalCustomHooks',
744
+ ); // x_facebook_sources extended external index map source map
745
+ await test(
746
+ './__source__/__compiled__/inline/react-sources-extended/index-map/ComponentWithExternalCustomHooks',
747
+ ); // x_react_sources extended inline index map source map
748
+ await test(
749
+ './__source__/__compiled__/external/react-sources-extended/index-map/ComponentWithExternalCustomHooks',
750
+ ); // x_react_sources extended external index map source map
751
+
752
// TODO test no-columns and bundle cases with extended source maps
753
});
754
762
'c', // useContext()
763
'd', // useContext()
764
]);
640
- expect(parseMock).toHaveBeenCalledTimes(0);
765
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
766
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
767
}
768
769
await test(
770
'./__source__/__compiled__/inline/fb-sources-extended/ComponentWithMultipleHooksPerLine',
645
- ); // x_fb_sources extended inline source map
771
+ ); // x_facebook_sources extended inline source map
772
await test(
773
'./__source__/__compiled__/external/fb-sources-extended/ComponentWithMultipleHooksPerLine',
648
- ); // x_fb_sources extended external source map
774
+ ); // x_facebook_sources extended external source map
775
await test(
776
'./__source__/__compiled__/inline/react-sources-extended/ComponentWithMultipleHooksPerLine',
777
); // x_react_sources extended inline source map
778
await test(
779
'./__source__/__compiled__/external/react-sources-extended/ComponentWithMultipleHooksPerLine',
780
); // x_react_sources extended external source map
781
+
782
+ // Using index map format for source maps
783
+ await test(
784
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/ComponentWithMultipleHooksPerLine',
785
+ ); // x_facebook_sources extended inline index map source map
786
+ await test(
787
+ './__source__/__compiled__/external/fb-sources-extended/index-map/ComponentWithMultipleHooksPerLine',
788
+ ); // x_facebook_sources extended external index map source map
789
+ await test(
790
+ './__source__/__compiled__/inline/react-sources-extended/index-map/ComponentWithMultipleHooksPerLine',
791
+ ); // x_react_sources extended inline index map source map
792
+ await test(
793
+ './__source__/__compiled__/external/react-sources-extended/index-map/ComponentWithMultipleHooksPerLine',
794
+ ); // x_react_sources extended external index map source map
795
+
796
// TODO test no-columns and bundle cases with extended source maps
797
});
798
806
expectHookNamesToEqual(hookNames, [
807
'count', // useState()
808
]);
668
- expect(parseMock).toHaveBeenCalledTimes(0);
809
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
810
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
811
}
812
671
- await test('./__source__/InlineRequire'); // original source (uncompiled)
813
await test(
814
'./__source__/__compiled__/inline/fb-sources-extended/InlineRequire',
674
- ); // x_fb_sources extended inline source map
815
+ ); // x_facebook_sources extended inline source map
816
await test(
817
'./__source__/__compiled__/external/fb-sources-extended/InlineRequire',
677
- ); // x_fb_sources extended external source map
818
+ ); // x_facebook_sources extended external source map
819
await test(
820
'./__source__/__compiled__/inline/react-sources-extended/InlineRequire',
821
); // x_react_sources extended inline source map
822
await test(
823
'./__source__/__compiled__/external/react-sources-extended/InlineRequire',
824
); // x_react_sources extended external source map
825
+
826
+ // Using index map format for source maps
827
+ await test(
828
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/InlineRequire',
829
+ ); // x_facebook_sources extended inline index map source map
830
+ await test(
831
+ './__source__/__compiled__/external/fb-sources-extended/index-map/InlineRequire',
832
+ ); // x_facebook_sources extended external index map source map
833
+ await test(
834
+ './__source__/__compiled__/inline/react-sources-extended/index-map/InlineRequire',
835
+ ); // x_react_sources extended inline index map source map
836
+ await test(
837
+ './__source__/__compiled__/external/react-sources-extended/index-map/InlineRequire',
838
+ ); // x_react_sources extended external index map source map
839
+
840
// TODO test no-columns and bundle cases with extended source maps
841
});
842
847
expectHookNamesToEqual(hookNames, [
848
'count', // useState()
849
]);
694
- expect(parseMock).toHaveBeenCalledTimes(0);
850
+ expect(require('@babel/parser').parse).toHaveBeenCalledTimes(0);
851
+ expect(require('../generateHookMap').decodeHookMap).toHaveBeenCalled();
852
}
853
854
// We expect the inline sourceMappingURL to be invalid in this case; mute the warning.
855
console.warn = () => {};
856
700
- await test('./__source__/ContainingStringSourceMappingURL'); // original source (uncompiled)
857
await test(
858
'./__source__/__compiled__/inline/fb-sources-extended/ContainingStringSourceMappingURL',
703
- ); // x_fb_sources extended inline source map
859
+ ); // x_facebook_sources extended inline source map
860
await test(
861
'./__source__/__compiled__/external/fb-sources-extended/ContainingStringSourceMappingURL',
706
- ); // x_fb_sources extended external source map
862
+ ); // x_facebook_sources extended external source map
863
await test(
864
'./__source__/__compiled__/inline/react-sources-extended/ContainingStringSourceMappingURL',
865
); // x_react_sources extended inline source map
866
await test(
867
'./__source__/__compiled__/external/react-sources-extended/ContainingStringSourceMappingURL',
868
); // x_react_sources extended external source map
869
+
870
+ // Using index map format for source maps
871
+ await test(
872
+ './__source__/__compiled__/inline/fb-sources-extended/index-map/ContainingStringSourceMappingURL',
873
+ ); // x_facebook_sources extended inline index map source map
874
+ await test(
875
+ './__source__/__compiled__/external/fb-sources-extended/index-map/ContainingStringSourceMappingURL',
876
+ ); // x_facebook_sources extended external index map source map
877
+ await test(
878
+ './__source__/__compiled__/inline/react-sources-extended/index-map/ContainingStringSourceMappingURL',
879
+ ); // x_react_sources extended inline index map source map
880
+ await test(
881
+ './__source__/__compiled__/external/react-sources-extended/index-map/ContainingStringSourceMappingURL',
882
+ ); // x_react_sources extended external index map source map
883
+
884
// TODO test no-columns and bundle cases with extended source maps
885
});
886
});