@@ -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,65 @@ 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+ [ '--experimental-strip-types' ,
92+ '--input-type=module-typescript' ,
93+ '--disable-warning=ExperimentalWarning' ,
94+ '--eval' , importMetaMainTSScript ] ,
95+ ) ;
96+ assert . deepStrictEqual ( result , {
97+ stderr : '' ,
98+ stdout : '' ,
99+ code : 0 ,
100+ signal : null ,
101+ } ) ;
102+ } ) ;
103+
104+ it ( 'should evaluate true in worker instantiated with module source by evaluated script' , async ( ) => {
105+ const result = await spawnPromisified (
106+ process . execPath ,
107+ [ '--experimental-strip-types' ,
108+ '--input-type=module-typescript' ,
109+ '--disable-warning=ExperimentalWarning' ,
110+ '--eval' , wrapScriptInEvalWorker ( importMetaMainTSScript ) ] ,
111+ ) ;
112+ assert . deepStrictEqual ( result , {
113+ stderr : '' ,
114+ stdout : '' ,
115+ code : 0 ,
116+ signal : null ,
117+ } ) ;
118+ } ) ;
119+
120+ it ( 'should evaluate true in worker instantiated with `data:` URL by evaluated script' , async ( ) => {
121+ const result = await spawnPromisified (
122+ process . execPath ,
123+ [ '--input-type=module' ,
124+ '--experimental-strip-types' ,
125+ '--input-type=module-typescript' ,
126+ '--disable-warning=ExperimentalWarning' ,
127+ '--eval' , wrapScriptInUrlWorker ( importMetaMainTSScript ) ] ,
128+ ) ;
129+ assert . deepStrictEqual ( result , {
130+ stderr : '' ,
131+ stdout : '' ,
132+ code : 0 ,
133+ signal : null ,
134+ } ) ;
135+ } ) ;
136+ } ) ;
0 commit comments