| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 45f7d16 commit ff8a369
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -593,17 +593,17 @@ translators.set('addon', function translateAddon(url, source, isMain) { | |||
| 593 | 593 | }); | |
| 594 | 594 | ||
| 595 | 595 | // Strategy for loading a commonjs TypeScript module | |
| 596 | - translators.set('commonjs-typescript', function(url, source) { | ||
| 596 | + translators.set('commonjs-typescript', function(url, source, isMain) { | ||
| 597 | 597 | assertBufferSource(source, true, 'load'); | |
| 598 | 598 | const code = stripTypeScriptModuleTypes(stringify(source), url); | |
| 599 | 599 | debug(`Translating TypeScript ${url}`); | |
| 600 | - return FunctionPrototypeCall(translators.get('commonjs'), this, url, code, false); | ||
| 600 | + return FunctionPrototypeCall(translators.get('commonjs'), this, url, code, isMain); | ||
| 601 | 601 | }); | |
| 602 | 602 | ||
| 603 | 603 | // Strategy for loading an esm TypeScript module | |
| 604 | - translators.set('module-typescript', function(url, source) { | ||
| 604 | + translators.set('module-typescript', function(url, source, isMain) { | ||
| 605 | 605 | assertBufferSource(source, true, 'load'); | |
| 606 | 606 | const code = stripTypeScriptModuleTypes(stringify(source), url); | |
| 607 | 607 | debug(`Translating TypeScript ${url}`); | |
| 608 | - return FunctionPrototypeCall(translators.get('module'), this, url, code, false); | ||
| 608 | + return FunctionPrototypeCall(translators.get('module'), this, url, code, isMain); | ||
| 609 | 609 | }); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -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 | + }); | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1 @@ | |||
| 1 | + export const isMain = import.meta.main; | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments