@@ -3,17 +3,6 @@ import * as fixtures from '../common/fixtures.js';
3
3
import assert from 'node:assert/strict' ;
4
4
import { describe , it } from 'node:test' ;
5
5
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
-
17
6
function wrapScriptInEvalWorker ( script ) {
18
7
return `
19
8
import { Worker } from 'node:worker_threads';
@@ -33,6 +22,17 @@ function wrapScriptInUrlWorker(script) {
33
22
}
34
23
35
24
describe ( '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
+
36
36
it ( 'should evaluate true in evaluated script' , async ( ) => {
37
37
const result = await spawnPromisified (
38
38
process . execPath ,
@@ -72,3 +72,61 @@ describe('import.meta.main in evaluated scripts', () => {
72
72
} ) ;
73
73
} ) ;
74
74
} ) ;
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