Skip to content

Commit 47fea20

Browse files
committed
test: add vm-modules test
1 parent da0c386 commit 47fea20

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

test/vm-modules/index.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import fs from "node:fs"
2+
import { dirname, resolve } from "node:path";
3+
import { fileURLToPath } from "node:url";
4+
import vm from 'node:vm';
5+
6+
const __filename = fileURLToPath(import.meta.url);
7+
const __dirname = dirname(__filename);
8+
9+
const modulerefContents = fs.readFileSync(resolve(__dirname, "../../modules/index.js"), {encoding: "utf8"});
10+
const tslibjsContents = fs.readFileSync(resolve(__dirname, "../../tslib.js"), {encoding: "utf8"});
11+
const contextifiedObject = vm.createContext({});
12+
13+
async function linker(specifier, referencingModule) {
14+
if (specifier === '../tslib.js') {
15+
return new vm.SourceTextModule(tslibjsContents, { context: referencingModule.context });
16+
}
17+
throw new Error(`Unable to resolve dependency: ${specifier}`);
18+
}
19+
20+
const m = new vm.SourceTextModule(modulerefContents, { context: contextifiedObject })
21+
22+
await m.link(linker);
23+
await m.evaluate();

test/vm-modules/package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "module",
3+
"scripts": {
4+
"test": "node index.js"
5+
},
6+
"engines": {
7+
"node": "14"
8+
}
9+
}

0 commit comments

Comments
 (0)