'use strict'; // Flags: --experimental-vm-modules --js-source-phase-imports require('../common'); const assert = require('assert'); const { SourceTextModule } = require('vm'); const test = require('node:test'); test('deep linking', async function depth() { const foo = new SourceTextModule('export default 5'); foo.linkRequests([]); foo.instantiate(); function getProxy(parentName, parentModule) { const mod = new SourceTextModule(` import ${parentName} from '${parentName}'; export default ${parentName}; `); mod.linkRequests([parentModule]); mod.instantiate(); return mod; } const bar = getProxy('foo', foo); const baz = getProxy('bar', bar); const barz = getProxy('baz', baz); await barz.evaluate(); assert.strictEqual(barz.namespace.default, 5); });