diff --git a/packages/compartment-mapper/src/import-archive-lite.js b/packages/compartment-mapper/src/import-archive-lite.js index 774e8e0773..6d48630f7d 100644 --- a/packages/compartment-mapper/src/import-archive-lite.js +++ b/packages/compartment-mapper/src/import-archive-lite.js @@ -230,32 +230,6 @@ const makeArchiveImportHookMaker = ( return makeImportHook; }; -/** - * Creates a fake module namespace object that passes a brand check. - * - * @param {typeof Compartment} Compartment - * @returns {ModuleExportsNamespace} - */ -const makeFauxModuleExportsNamespace = Compartment => { - const compartment = new Compartment( - {}, - {}, - { - resolveHook() { - return '.'; - }, - async importHook() { - return { - imports: [], - execute() {}, - exports: [], - }; - }, - }, - ); - return compartment.module('.'); -}; - // Have to give it a name to capture the external meaning of Compartment // Otherwise @param {typeof Compartment} takes the Compartment to mean // the const variable defined within the function. @@ -377,7 +351,7 @@ export const parseArchive = async ( languageForExtension, modules: Object.fromEntries( Object.keys(modules || {}).map(specifier => { - return [specifier, makeFauxModuleExportsNamespace(Compartment)]; + return [specifier, { namespace: {} }]; }), ), Compartment, diff --git a/packages/compartment-mapper/src/link.js b/packages/compartment-mapper/src/link.js index c417c85974..f080687565 100644 --- a/packages/compartment-mapper/src/link.js +++ b/packages/compartment-mapper/src/link.js @@ -449,13 +449,14 @@ export const link = ( scopes, ); - const compartment = new Compartment(create(null), undefined, { + const compartment = new Compartment({ + name: location, resolveHook, importHook, moduleMapHook, transforms, __shimTransforms__, - name: location, + __options__: true, }); if (!archiveOnly) { diff --git a/packages/compartment-mapper/test/bundle.test.js b/packages/compartment-mapper/test/bundle.test.js index 2fcf01e692..abc5fc0075 100644 --- a/packages/compartment-mapper/test/bundle.test.js +++ b/packages/compartment-mapper/test/bundle.test.js @@ -61,7 +61,10 @@ test('bundles work', async t => { const print = entry => { log.push(entry); }; - const compartment = new Compartment({ print }); + const compartment = new Compartment({ + globals: { print }, + __options__: true, + }); compartment.evaluate(bundle); t.deepEqual(log, expectedLog); }); @@ -93,7 +96,10 @@ test.failing('bundle cjs-compat', async t => { const print = entry => { log.push(entry); }; - const compartment = new Compartment({ print }); + const compartment = new Compartment({ + globals: { print }, + __options__: true, + }); compartment.evaluate(bundle); t.deepEqual(log, expectedLog); }); diff --git a/packages/compartment-mapper/test/main.test.js b/packages/compartment-mapper/test/main.test.js index 47e24585e6..8200845e4f 100644 --- a/packages/compartment-mapper/test/main.test.js +++ b/packages/compartment-mapper/test/main.test.js @@ -95,11 +95,14 @@ test('makeBundle / importArchive', async t => { const archiverBundle = await makeBundle(readPowers.read, archiverLocation); const archiverCompartment = new Compartment({ - TextEncoder, - TextDecoder, - URL, - // See https://github.com/Agoric/agoric-sdk/issues/9515 - assert: globalThis.assert, + globals: { + TextEncoder, + TextDecoder, + URL, + // See https://github.com/Agoric/agoric-sdk/issues/9515 + assert: globalThis.assert, + }, + __options__: true, }); const evasiveArchiverBundle = archiverBundle .replace(/(?