@@ -747,6 +747,39 @@ describe('Loader hooks', { concurrency: true }, () => {
747747 assert . strictEqual ( signal , null ) ;
748748 } ) ;
749749
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+
750783 it ( 'should handle mixed of opt-in modules and non-opt-in ones' , async ( ) => {
751784 const { code, signal, stdout, stderr } = await spawnPromisified ( execPath , [
752785 '--no-warnings' ,
0 commit comments