current commit
250829.2 · vm: sync-ify SourceTextModule linkage
'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);
});