@@ -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,65 @@ 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
+ [ '--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