@@ -3,17 +3,6 @@ import * as fixtures from '../common/fixtures.js';
33import assert from 'node:assert/strict' ;
44import { describe , it } from 'node:test' ;
55
6- const importMetaMainScript = `
7- import assert from 'node:assert/strict';
8-
9- assert.strictEqual(import.meta.main, true, 'import.meta.main should evaluate true in main module');
10-
11- const { isMain: importedModuleIsMain } = await import(
12- ${ JSON . stringify ( fixtures . fileURL ( 'es-modules/import-meta-main.mjs' ) ) }
13- );
14- assert.strictEqual(importedModuleIsMain, false, 'import.meta.main should evaluate false in imported module');
15- ` ;
16-
176function wrapScriptInEvalWorker ( script ) {
187 return `
198 import { Worker } from 'node:worker_threads';
@@ -33,6 +22,17 @@ function wrapScriptInUrlWorker(script) {
3322}
3423
3524describe ( 'import.meta.main in evaluated scripts' , ( ) => {
25+ const importMetaMainScript = `
26+ import assert from 'node:assert/strict';
27+
28+ assert.strictEqual(import.meta.main, true, 'import.meta.main should evaluate true in main module');
29+
30+ const { isMain: importedModuleIsMain } = await import(
31+ ${ JSON . stringify ( fixtures . fileURL ( 'es-modules/import-meta-main.mjs' ) ) }
32+ );
33+ assert.strictEqual(importedModuleIsMain, false, 'import.meta.main should evaluate false in imported module');
34+ ` ;
35+
3636 it ( 'should evaluate true in evaluated script' , async ( ) => {
3737 const result = await spawnPromisified (
3838 process . execPath ,
@@ -72,3 +72,61 @@ describe('import.meta.main in evaluated scripts', () => {
7272 } ) ;
7373 } ) ;
7474} ) ;
75+
76+ describe ( 'import.meta.main in typescript scripts' , ( ) => {
77+ const importMetaMainTSScript = `
78+ import assert from 'node:assert/strict';
79+
80+ assert.strictEqual(import.meta.main, true, 'import.meta.main should evaluate true in main module');
81+
82+ const { isMain: importedModuleIsMain } = await import(
83+ ${ JSON . stringify ( fixtures . fileURL ( 'es-modules/import-meta-main.ts' ) ) }
84+ );
85+ assert.strictEqual(importedModuleIsMain, false, 'import.meta.main should evaluate false in imported module');
86+ ` ;
87+
88+ it ( 'should evaluate true in evaluated script' , async ( ) => {
89+ const result = await spawnPromisified (
90+ process . execPath ,
91+ [ '--input-type=module-typescript' , '--disable-warning=ExperimentalWarning' , '--eval' , importMetaMainTSScript ] ,
92+ ) ;
93+ assert . deepStrictEqual ( result , {
94+ stderr : '' ,
95+ stdout : '' ,
96+ code : 0 ,
97+ signal : null ,
98+ } ) ;
99+ } ) ;
100+
101+ it ( 'should evaluate true in worker instantiated with module source by evaluated script' , async ( ) => {
102+ const result = await spawnPromisified (
103+ process . execPath ,
104+ [ '--input-type=module-typescript' ,
105+ '--disable-warning=ExperimentalWarning' ,
106+ '--eval' ,
107+ wrapScriptInEvalWorker ( importMetaMainTSScript ) ] ,
108+ ) ;
109+ assert . deepStrictEqual ( result , {
110+ stderr : '' ,
111+ stdout : '' ,
112+ code : 0 ,
113+ signal : null ,
114+ } ) ;
115+ } ) ;
116+
117+ it ( 'should evaluate true in worker instantiated with `data:` URL by evaluated script' , async ( ) => {
118+ const result = await spawnPromisified (
119+ process . execPath ,
120+ [ '--input-type=module' ,
121+ '--input-type=module-typescript' ,
122+ '--disable-warning=ExperimentalWarning' ,
123+ '--eval' , wrapScriptInUrlWorker ( importMetaMainTSScript ) ] ,
124+ ) ;
125+ assert . deepStrictEqual ( result , {
126+ stderr : '' ,
127+ stdout : '' ,
128+ code : 0 ,
129+ signal : null ,
130+ } ) ;
131+ } ) ;
132+ } ) ;
0 commit comments