@@ -747,6 +747,39 @@ describe('Loader hooks', { concurrency: true }, () => {
747
747
assert . strictEqual ( signal , null ) ;
748
748
} ) ;
749
749
750
+ it ( 'should support source maps in commonjs translator' , async ( ) => {
751
+ const readFile = async ( ) => { } ;
752
+ const hook = `
753
+ import { readFile } from 'node:fs/promises';
754
+ export ${
755
+ async function load ( url , context , nextLoad ) {
756
+ const resolved = await nextLoad ( url , context ) ;
757
+ if ( context . format === 'commonjs' ) {
758
+ resolved . source = await readFile ( new URL ( url ) ) ;
759
+ }
760
+ return resolved ;
761
+ }
762
+ } `;
763
+
764
+ const { code, signal, stdout, stderr } = await spawnPromisified ( execPath , [
765
+ '--no-warnings' ,
766
+ '--enable-source-maps' ,
767
+ '--import' ,
768
+ `data:text/javascript,${ encodeURIComponent ( `
769
+ import{ register } from "node:module";
770
+ register(${
771
+ JSON . stringify ( 'data:text/javascript,' + encodeURIComponent ( hook ) )
772
+ } );
773
+ ` ) } `,
774
+ fixtures . path ( 'source-map/throw-on-require.js' ) ,
775
+ ] ) ;
776
+
777
+ assert . strictEqual ( stdout , '' ) ;
778
+ assert . match ( stderr , / t h r o w - o n - r e q u i r e \. t s : 9 : 9 / ) ;
779
+ assert . strictEqual ( code , 1 ) ;
780
+ assert . strictEqual ( signal , null ) ;
781
+ } ) ;
782
+
750
783
it ( 'should handle mixed of opt-in modules and non-opt-in ones' , async ( ) => {
751
784
const { code, signal, stdout, stderr } = await spawnPromisified ( execPath , [
752
785
'--no-warnings' ,
0 commit comments