@endo/compartment-mapper 0.9.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@endo/compartment-mapper",
3
- "version": "0.9.2",
3
+ "version": "1.0.0",
4
4
  "description": "The compartment mapper assembles Node applications in a sandbox",
5
5
  "keywords": [
6
6
  "node",
@@ -22,7 +22,10 @@
22
22
  "main": "./index.js",
23
23
  "types": "./types.d.ts",
24
24
  "exports": {
25
- ".": "./index.js",
25
+ ".": {
26
+ "types": "./types.d.ts",
27
+ "default": "./index.js"
28
+ },
26
29
  "./import.js": "./import.js",
27
30
  "./archive.js": "./archive.js",
28
31
  "./import-archive.js": "./import-archive.js",
@@ -32,21 +35,21 @@
32
35
  },
33
36
  "scripts": {
34
37
  "build": "exit 0",
35
- "prepack": "tsc --build jsconfig.build.json",
36
- "postpack": "git clean -f '*.d.ts*'",
38
+ "build:types": "tsc --build tsconfig.build.json",
39
+ "clean:types": "git clean -f '*.d.ts*'",
37
40
  "cover": "c8 ava",
38
41
  "lint": "yarn lint:types && yarn lint:js",
39
42
  "lint-fix": "eslint --fix .",
40
43
  "lint:js": "eslint .",
41
- "lint:types": "tsc -p jsconfig.json",
44
+ "lint:types": "tsc",
42
45
  "prettier-fixtures": "prettier --write --with-node-modules './test/fixtures-*/**/*.*js'",
43
46
  "test": "ava"
44
47
  },
45
48
  "dependencies": {
46
- "@endo/cjs-module-analyzer": "^0.2.35",
47
- "@endo/static-module-record": "^0.8.2",
48
- "@endo/zip": "^0.2.35",
49
- "ses": "^0.18.8"
49
+ "@endo/cjs-module-analyzer": "^1.0.0",
50
+ "@endo/static-module-record": "^1.0.0",
51
+ "@endo/zip": "^1.0.0",
52
+ "ses": "^1.0.0"
50
53
  },
51
54
  "devDependencies": {
52
55
  "ava": "^5.3.0",
@@ -56,7 +59,7 @@
56
59
  "eslint-config-airbnb-base": "^15.0.0",
57
60
  "eslint-config-prettier": "^8.8.0",
58
61
  "eslint-plugin-eslint-comments": "^3.1.2",
59
- "eslint-plugin-import": "^2.27.5",
62
+ "eslint-plugin-import": "^2.29.0",
60
63
  "prettier": "^3.0.0",
61
64
  "typescript": "~5.2.2"
62
65
  },
@@ -93,5 +96,8 @@
93
96
  ],
94
97
  "timeout": "2m"
95
98
  },
96
- "gitHead": "9c779d317c4b02133172dbe142c5b2d1727efc49"
99
+ "typeCoverage": {
100
+ "atLeast": 85.78
101
+ },
102
+ "gitHead": "6aa22009bf8128575c446aebceb0f9a01459d165"
97
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-cjs.d.ts","sourceRoot":"","sources":["bundle-cjs.js"],"names":[],"mappings":";;IA+BE;;;;;;;;;;;;MAsBC;;;AAxCH,8BAca"}
1
+ {"version":3,"file":"bundle-cjs.d.ts","sourceRoot":"","sources":["bundle-cjs.js"],"names":[],"mappings":";;IA+CE;;;;;;;;;;;;MAsBC;;;AArDH,8BA2Ba"}
package/src/bundle-cjs.js CHANGED
@@ -1,3 +1,4 @@
1
+ // @ts-nocheck
1
2
  /** quotes strings */
2
3
  const q = JSON.stringify;
3
4
 
@@ -5,7 +6,9 @@ const exportsCellRecord = exportsList =>
5
6
  ''.concat(
6
7
  ...exportsList.map(
7
8
  exportName => `\
8
- ${exportName}: cell(${q(exportName)}),
9
+ ${q(exportName)}: cell(${q(exportName)}${
10
+ exportName !== 'default' ? '' : `, {}`
11
+ }),
9
12
  `,
10
13
  ),
11
14
  );
@@ -14,15 +17,28 @@ const exportsCellRecord = exportsList =>
14
17
  const runtime = function wrapCjsFunctor(num) {
15
18
  /* eslint-disable no-undef */
16
19
  return ({ imports = {} }) => {
20
+ const moduleCells = cells[num];
17
21
  const cModule = Object.freeze(
18
- Object.defineProperty({}, 'exports', cells[num].default),
22
+ Object.defineProperty({}, 'exports', moduleCells.default),
19
23
  );
20
24
  // TODO: specifier not found handling
21
25
  const requireImpl = specifier => cells[imports[specifier]].default.get();
22
26
  functors[num](Object.freeze(requireImpl), cModule.exports, cModule);
23
- Object.keys(cells[num])
27
+ // Update all named cells from module.exports.
28
+ Object.keys(moduleCells)
24
29
  .filter(k => k !== 'default' && k !== '*')
25
- .map(k => cells[num][k].set(cModule.exports[k]));
30
+ .map(k => moduleCells[k].set(cModule.exports[k]));
31
+ // Add new named cells from module.exports.
32
+ Object.keys(cModule.exports)
33
+ .filter(k => k !== 'default' && k !== '*')
34
+ .filter(k => moduleCells[k] === undefined)
35
+ .map(k => (moduleCells[k] = cell(k, cModule.exports[k])));
36
+ // Update the star cell from all cells.
37
+ const starExports = Object.create(null);
38
+ Object.keys(moduleCells)
39
+ .filter(k => k !== '*')
40
+ .map(k => Object.defineProperty(starExports, k, moduleCells[k]));
41
+ moduleCells['*'].set(Object.freeze(starExports));
26
42
  };
27
43
  /* eslint-enable no-undef */
28
44
  }.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"import-archive.d.ts","sourceRoot":"","sources":["import-archive.js"],"names":[],"mappings":"AAsPO,2CAZI,UAAU;;;;;;;;gBAUR,QAAQ,OAAO,YAAY,EAAE,WAAW,CAAC,CAmJrD;AAQM,wCALI,OAAO,YAAY,EAAE,MAAM,GAAG,OAAO,YAAY,EAAE,UAAU,mBAC7D,MAAM,kEAEJ,QAAQ,OAAO,YAAY,EAAE,WAAW,CAAC,CAsBrD;AAQM,0CALI,OAAO,YAAY,EAAE,MAAM,GAAG,OAAO,YAAY,EAAE,UAAU,mBAC7D,MAAM,WACN,OAAO,YAAY,EAAE,cAAc,GAAG,OAAO,YAAY,EAAE,kBAAkB,GAC3E,QAAQ,MAAM,CAAC,CAK3B;qCAvMa,kBAAkB"}
1
+ {"version":3,"file":"import-archive.d.ts","sourceRoot":"","sources":["import-archive.js"],"names":[],"mappings":"AAyPO,2CAZI,UAAU;;;;;;;;gBAUR,QAAQ,OAAO,YAAY,EAAE,WAAW,CAAC,CAmJrD;AAQM,wCALI,OAAO,YAAY,EAAE,MAAM,GAAG,OAAO,YAAY,EAAE,UAAU,mBAC7D,MAAM,kEAEJ,QAAQ,OAAO,YAAY,EAAE,WAAW,CAAC,CAsBrD;AAQM,0CALI,OAAO,YAAY,EAAE,MAAM,GAAG,OAAO,YAAY,EAAE,UAAU,mBAC7D,MAAM,WACN,OAAO,YAAY,EAAE,cAAc,GAAG,OAAO,YAAY,EAAE,kBAAkB,GAC3E,QAAQ,MAAM,CAAC,CAK3B;qCAvMa,kBAAkB"}
@@ -95,6 +95,9 @@ const makeArchiveImportHookMaker = (
95
95
  // module is a "builtin" module and the policy needs to be enforced.
96
96
  enforceModulePolicy(moduleSpecifier, compartmentDescriptor, {
97
97
  exit: true,
98
+ errorHint: `Blocked in loading. ${q(
99
+ moduleSpecifier,
100
+ )} was not in the archive and an attempt was made to load it as a builtin`,
98
101
  });
99
102
  const record = await exitModuleImportHook(moduleSpecifier);
100
103
  if (record) {
@@ -1 +1 @@
1
- {"version":3,"file":"import-hook.d.ts","sourceRoot":"","sources":["import-hook.js"],"names":[],"mappings":"AAuEO;IAJiC,OAAO,GAApC,OAAO,MAAM,EAAE,GAAG,CAAC;IACW,oBAAoB,GAAlD,oBAAoB;IAClB,oBAAoB,GAAC,SAAS,CA0B1C;AAuBM,gDApBI,MAAM,GAAC,UAAU,gBACjB,MAAM;IAEY,OAAO;IACuB,sBAAsB;IACpD,WAAW;IACZ,aAAa;IACN,cAAc;IAOtB,oBAAoB,EAApC,MAAM;IACU,oBAAoB,EAApC,MAAM;IACyB,oBAAoB;IACN,aAAa;IACxD,eAAe,CAoR3B;yBAtYa,OAAO,KAAK,EAAE,UAAU;+BACxB,OAAO,KAAK,EAAE,gBAAgB;4CAC9B,OAAO,KAAK,EAAE,6BAA6B;8CAC3C,OAAO,KAAK,EAAE,+BAA+B;qBAC7C,OAAO,YAAY,EAAE,MAAM;yBAC3B,OAAO,YAAY,EAAE,UAAU;qBAC/B,OAAO,YAAY,EAAE,MAAM;sBAC3B,OAAO,YAAY,EAAE,OAAO;iCAC5B,OAAO,YAAY,EAAE,kBAAkB;oCACvC,OAAO,YAAY,EAAE,qBAAqB;8BAC1C,OAAO,YAAY,EAAE,eAAe;0CACpC,OAAO,YAAY,EAAE,2BAA2B;mCAChD,OAAO,YAAY,EAAE,oBAAoB"}
1
+ {"version":3,"file":"import-hook.d.ts","sourceRoot":"","sources":["import-hook.js"],"names":[],"mappings":"AAuEO;IAJiC,OAAO,GAApC,OAAO,MAAM,EAAE,GAAG,CAAC;IACW,oBAAoB,GAAlD,oBAAoB;IAClB,oBAAoB,GAAC,SAAS,CA0B1C;AAuBM,gDApBI,MAAM,GAAC,UAAU,gBACjB,MAAM;IAEY,OAAO;IACuB,sBAAsB;IACpD,WAAW;IACZ,aAAa;IACN,cAAc;IAOtB,oBAAoB,EAApC,MAAM;IACU,oBAAoB,EAApC,MAAM;IACyB,oBAAoB;IACN,aAAa;IACxD,eAAe,CAqR3B;yBAvYa,OAAO,KAAK,EAAE,UAAU;+BACxB,OAAO,KAAK,EAAE,gBAAgB;4CAC9B,OAAO,KAAK,EAAE,6BAA6B;8CAC3C,OAAO,KAAK,EAAE,+BAA+B;qBAC7C,OAAO,YAAY,EAAE,MAAM;yBAC3B,OAAO,YAAY,EAAE,UAAU;qBAC/B,OAAO,YAAY,EAAE,MAAM;sBAC3B,OAAO,YAAY,EAAE,OAAO;iCAC5B,OAAO,YAAY,EAAE,kBAAkB;oCACvC,OAAO,YAAY,EAAE,qBAAqB;8BAC1C,OAAO,YAAY,EAAE,eAAe;0CACpC,OAAO,YAAY,EAAE,2BAA2B;mCAChD,OAAO,YAAY,EAAE,oBAAoB"}
@@ -220,6 +220,9 @@ export const makeImportHookMaker = (
220
220
  // hook returns something. Otherwise, we need to fall back to the 'cannot find' error below.
221
221
  enforceModulePolicy(moduleSpecifier, compartmentDescriptor, {
222
222
  exit: true,
223
+ errorHint: `Blocked in loading. ${q(
224
+ moduleSpecifier,
225
+ )} was not in the compartment map and an attempt was made to load it as a builtin`,
223
226
  });
224
227
  if (archiveOnly) {
225
228
  // Return a place-holder.
@@ -251,10 +254,8 @@ export const makeImportHookMaker = (
251
254
  // Collate candidate locations for the moduleSpecifier,
252
255
  // to support Node.js conventions and similar.
253
256
  const candidates = [moduleSpecifier];
254
- if (moduleSpecifier !== '.') {
255
- for (const candidateSuffix of searchSuffixes) {
256
- candidates.push(`${moduleSpecifier}${candidateSuffix}`);
257
- }
257
+ for (const candidateSuffix of searchSuffixes) {
258
+ candidates.push(`${moduleSpecifier}${candidateSuffix}`);
258
259
  }
259
260
 
260
261
  const { maybeRead } = unpackReadPowers(readPowers);
package/src/link.d.ts CHANGED
@@ -18,5 +18,5 @@ export type CompartmentDescriptor = import('./types.js').CompartmentDescriptor;
18
18
  export type CompartmentMapDescriptor = import('./types.js').CompartmentMapDescriptor;
19
19
  export type DeferredAttenuatorsProvider = import('./types.js').DeferredAttenuatorsProvider;
20
20
  export type LinkOptions = import('./types.js').LinkOptions;
21
- export type ERef<T_1> = import('@endo/eventual-send').ERef<T>;
21
+ export type ERef<T_1> = any;
22
22
  //# sourceMappingURL=link.d.ts.map
package/src/link.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["link.js"],"names":[],"mappings":"AAgJO,iDAPI,OAAO,MAAM,EAAE,QAAQ,CAAC,8BACxB,OAAO,MAAM,EAAE,MAAM,CAAC,qBAEtB,OAAO,MAAM,EAAE,oBAAoB,CAAC,qBACpC,gBAAgB,GACd,OAAO,CA0BnB;AAuKM,sEAHI,wBAAwB,wIACxB,WAAW;;;;;EA0IrB;AAMM,yCAHI,wBAAwB,WACxB,WAAW,eAGqB;4BA5d7B,OAAO,KAAK,EAAE,aAAa;0BAC3B,OAAO,KAAK,EAAE,WAAW;sBACzB,OAAO,YAAY,EAAE,OAAO;mCAC5B,OAAO,YAAY,EAAE,oBAAoB;+BACzC,OAAO,YAAY,EAAE,gBAAgB;+BACrC,OAAO,YAAY,EAAE,gBAAgB;uBACrC,OAAO,YAAY,EAAE,QAAQ;+BAC7B,OAAO,YAAY,EAAE,gBAAgB;oCACrC,OAAO,YAAY,EAAE,qBAAqB;uCAC1C,OAAO,YAAY,EAAE,wBAAwB;0CAC7C,OAAO,YAAY,EAAE,2BAA2B;0BAChD,OAAO,YAAY,EAAE,WAAW;wBACpB,OAAO,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["link.js"],"names":[],"mappings":"AA+IO,iDAPI,OAAO,MAAM,EAAE,QAAQ,CAAC,8BACxB,OAAO,MAAM,EAAE,MAAM,CAAC,qBAEtB,OAAO,MAAM,EAAE,oBAAoB,CAAC,qBACpC,gBAAgB,GACd,OAAO,CA0BnB;AAmKM,sEAHI,wBAAwB,wIACxB,WAAW;;;;;EA0IrB;AAMM,yCAHI,wBAAwB,WACxB,WAAW,eAGqB;4BAvd7B,OAAO,KAAK,EAAE,aAAa;0BAC3B,OAAO,KAAK,EAAE,WAAW;sBACzB,OAAO,YAAY,EAAE,OAAO;mCAC5B,OAAO,YAAY,EAAE,oBAAoB;+BACzC,OAAO,YAAY,EAAE,gBAAgB;+BACrC,OAAO,YAAY,EAAE,gBAAgB;uBACrC,OAAO,YAAY,EAAE,QAAQ;+BAC7B,OAAO,YAAY,EAAE,gBAAgB;oCACrC,OAAO,YAAY,EAAE,qBAAqB;uCAC1C,OAAO,YAAY,EAAE,wBAAwB;0CAC7C,OAAO,YAAY,EAAE,2BAA2B;0BAChD,OAAO,YAAY,EAAE,WAAW"}
package/src/link.js CHANGED
@@ -19,7 +19,6 @@ import { parseExtension } from './extension.js';
19
19
  import {
20
20
  enforceModulePolicy,
21
21
  ATTENUATORS_COMPARTMENT,
22
- diagnoseMissingCompartmentError,
23
22
  attenuateGlobals,
24
23
  makeDeferredAttenuatorsProvider,
25
24
  } from './policy.js';
@@ -232,10 +231,14 @@ const makeModuleMapHook = (
232
231
  return undefined; // fall through to import hook
233
232
  }
234
233
  if (foreignModuleSpecifier !== undefined) {
234
+ // archive goes through foreignModuleSpecifier for local modules too
235
235
  if (!moduleSpecifier.startsWith('./')) {
236
- // archive goes through foreignModuleSpecifier for local modules too
236
+ // This code path seems to only be reached on subsequent imports of the same specifier in the same compartment.
237
+ // The check should be redundant and is only left here out of abundance of caution.
237
238
  enforceModulePolicy(moduleSpecifier, compartmentDescriptor, {
238
239
  exit: false,
240
+ errorHint:
241
+ 'This check should not be reachable. If you see this error, please file an issue.',
239
242
  });
240
243
  }
241
244
 
@@ -244,12 +247,7 @@ const makeModuleMapHook = (
244
247
  throw Error(
245
248
  `Cannot import from missing compartment ${q(
246
249
  foreignCompartmentName,
247
- )}${diagnoseMissingCompartmentError({
248
- moduleSpecifier,
249
- compartmentDescriptor,
250
- foreignModuleSpecifier,
251
- foreignCompartmentName,
252
- })}`,
250
+ )}}`,
253
251
  );
254
252
  }
255
253
  return foreignCompartment.module(foreignModuleSpecifier);
@@ -279,20 +277,17 @@ const makeModuleMapHook = (
279
277
  throw Error(
280
278
  `Cannot import from missing compartment ${q(
281
279
  foreignCompartmentName,
282
- )}${diagnoseMissingCompartmentError({
283
- moduleSpecifier,
284
- compartmentDescriptor,
285
- foreignModuleSpecifier,
286
- foreignCompartmentName,
287
- })}`,
280
+ )}`,
288
281
  );
289
282
  }
290
283
 
291
- // Despite all non-exit modules not allowed by policy being dropped
292
- // while building the graph, this check is necessary because module
293
- // is written back to the compartment map below.
294
284
  enforceModulePolicy(scopePrefix, compartmentDescriptor, {
295
285
  exit: false,
286
+ errorHint: `Blocked in linking. ${q(
287
+ moduleSpecifier,
288
+ )} is part of the compartment map and resolves to ${q(
289
+ foreignCompartmentName,
290
+ )}.`,
296
291
  });
297
292
  // The following line is weird.
298
293
  // Information is flowing backward.
@@ -1 +1 @@
1
- {"version":3,"file":"node-modules.d.ts","sourceRoot":"","sources":["node-modules.js"],"names":[],"mappings":"AAssBO,yDAXI,MAAM,GAAG,UAAU,GAAG,eAAe,mBACrC,MAAM,QACN,IAAI,MAAM,CAAC,qBACX,MAAM,mBACN,MAAM;;yBAGN,MAAM;aACN,MAAM;gBACJ,QAAQ,wBAAwB,CAAC,CA+C7C;uBAhvBa,OAAO,YAAY,EAAE,QAAQ;qBAC7B,OAAO,YAAY,EAAE,MAAM;0BAC3B,OAAO,YAAY,EAAE,WAAW;0BAChC,OAAO,YAAY,EAAE,WAAW;uCAChC,OAAO,YAAY,EAAE,wBAAwB;+BAC7C,OAAO,YAAY,EAAE,gBAAgB;8BACrC,OAAO,YAAY,EAAE,eAAe;oCACpC,OAAO,YAAY,EAAE,qBAAqB;yBAC1C,OAAO,YAAY,EAAE,UAAU;8BAC/B,OAAO,YAAY,EAAE,eAAe;;;;;;;oBAQrC,OAAO,MAAM,EAAE,IAAI,CAAC;;WAKnB,MAAM;UACN,MAAM;UACN,MAAM,MAAM,CAAC;iBACb,MAAM,MAAM,CAAC;qBACb,OAAO;qBACP,OAAO,MAAM,EAAE,MAAM,CAAC;qBACtB,OAAO,MAAM,EAAE,MAAM,CAAC;;;;;yBACtB,OAAO,MAAM,EAAE,MAAM,CAAC;;;;;aAEtB,OAAO,MAAM,EAAE,QAAQ,CAAC;;;;;WAExB,OAAO,MAAM,EAAE,QAAQ,CAAC;;0CAKzB,OAAO,MAAM,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;iDA+E/C,MAAM,KACJ,QAAQ,MAAM,CAAC"}
1
+ {"version":3,"file":"node-modules.d.ts","sourceRoot":"","sources":["node-modules.js"],"names":[],"mappings":"AAisBO,yDAXI,MAAM,GAAG,UAAU,GAAG,eAAe,mBACrC,MAAM,QACN,IAAI,MAAM,CAAC,qBACX,MAAM,mBACN,MAAM;;yBAGN,MAAM;aACN,MAAM;gBACJ,QAAQ,wBAAwB,CAAC,CA+C7C;uBA3uBa,OAAO,YAAY,EAAE,QAAQ;qBAC7B,OAAO,YAAY,EAAE,MAAM;0BAC3B,OAAO,YAAY,EAAE,WAAW;0BAChC,OAAO,YAAY,EAAE,WAAW;uCAChC,OAAO,YAAY,EAAE,wBAAwB;+BAC7C,OAAO,YAAY,EAAE,gBAAgB;8BACrC,OAAO,YAAY,EAAE,eAAe;oCACpC,OAAO,YAAY,EAAE,qBAAqB;yBAC1C,OAAO,YAAY,EAAE,UAAU;8BAC/B,OAAO,YAAY,EAAE,eAAe;;;;;;;oBAQrC,OAAO,MAAM,EAAE,IAAI,CAAC;;WAKnB,MAAM;UACN,MAAM;UACN,MAAM,MAAM,CAAC;iBACb,MAAM,MAAM,CAAC;qBACb,OAAO;qBACP,OAAO,MAAM,EAAE,MAAM,CAAC;qBACtB,OAAO,MAAM,EAAE,MAAM,CAAC;;;;;yBACtB,OAAO,MAAM,EAAE,MAAM,CAAC;;;;;aAEtB,OAAO,MAAM,EAAE,QAAQ,CAAC;;;;;WAExB,OAAO,MAAM,EAAE,QAAQ,CAAC;;0CAKzB,OAAO,MAAM,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;iDA+E/C,MAAM,KACJ,QAAQ,MAAM,CAAC"}
@@ -566,7 +566,7 @@ const graphPackages = async (
566
566
  * @param {Graph} graph
567
567
  * @param {Set<string>} tags - build tags about the target environment
568
568
  * for selecting relevant exports, e.g., "browser" or "node".
569
- * @param {object} policy
569
+ * @param {object|undefined} policy
570
570
  * @returns {CompartmentMapDescriptor}
571
571
  */
572
572
  const translateGraph = (
@@ -611,11 +611,6 @@ const translateGraph = (
611
611
  },
612
612
  policy,
613
613
  );
614
- // do not include compartments for packages not covered by policy
615
- if (policy && !packagePolicy) {
616
- // eslint-disable-next-line no-continue
617
- continue;
618
- }
619
614
 
620
615
  /**
621
616
  * @param {string} dependencyName
@@ -1 +1 @@
1
- {"version":3,"file":"parse-cjs-shared-export-wrapper.d.ts","sourceRoot":"","sources":["parse-cjs-shared-export-wrapper.js"],"names":[],"mappings":"AA8BO,2CAPI,UAAU,GAAG,MAAM,GAAG,SAAS,YAC/B,MAAM,GACJ;IACZ,QAAY,EAAC,MAAM,GAAC,IAAI,CAAC;IACzB,OAAW,EAAE,MAAM,GAAC,IAAI,CAAA;CACrB,CAgCH;AAmBM;IAZe,uBAAuB,EAAlC,MAAM;IACU,WAAW,EAA3B,WAAW;IACgB,eAAe,EAA1C,OAAO,MAAM,EAAE,MAAM,CAAC;IACX,QAAQ,EAAnB,MAAM;IAC8B,UAAU,EAA9C,MAAM,GAAG,UAAU,GAAG,SAAS;;;iBAElB,GAAG;;mBACP,GAAG;;;EA0GtB;qBAlLa,OAAO,YAAY,EAAE,MAAM;yBAC3B,OAAO,YAAY,EAAE,UAAU"}
1
+ {"version":3,"file":"parse-cjs-shared-export-wrapper.d.ts","sourceRoot":"","sources":["parse-cjs-shared-export-wrapper.js"],"names":[],"mappings":"AA8BO,2CAPI,UAAU,GAAG,MAAM,GAAG,SAAS,YAC/B,MAAM,GACJ;IACZ,QAAY,EAAC,MAAM,GAAC,IAAI,CAAC;IACzB,OAAW,EAAE,MAAM,GAAC,IAAI,CAAA;CACrB,CAgCH;AAmBM;IAZe,uBAAuB,EAAlC,MAAM;IACU,WAAW,EAA3B,WAAW;IACgB,eAAe,EAA1C,OAAO,MAAM,EAAE,MAAM,CAAC;IACX,QAAQ,EAAnB,MAAM;IAC8B,UAAU,EAA9C,MAAM,GAAG,UAAU,GAAG,SAAS;;;iBAElB,GAAG;;mBACP,GAAG;;;EA+GtB;qBAvLa,OAAO,YAAY,EAAE,MAAM;yBAC3B,OAAO,YAAY,EAAE,UAAU"}
@@ -132,6 +132,11 @@ export const wrap = ({
132
132
  });
133
133
 
134
134
  const require = (/** @type {string} */ importSpecifier) => {
135
+ if (!has(resolvedImports, importSpecifier)) {
136
+ throw new Error(
137
+ `Cannot find module "${importSpecifier}" in "${location}"`,
138
+ );
139
+ }
135
140
  const namespace = compartment.importNow(resolvedImports[importSpecifier]);
136
141
  // If you read this file carefully, you'll see it's not possible for a cjs module to not have the default anymore.
137
142
  // It's currently possible to require modules that were not created by this file though.
@@ -1 +1 @@
1
- {"version":3,"file":"policy-format.d.ts","sourceRoot":"","sources":["policy-format.js"],"names":[],"mappings":"AAqBO,kDALI,MAAM,SACN,MAAM,YACN,MAAM,GACJ,OAAO,GAAG,MAAM,CAqB5B;AAQM,wDAFM,OAAO,CAGmB;AAOhC,6DAHI,qBAAqB,GACnB,OAAO,CAQnB;AAOM,mEAHI,qBAAqB,GACnB,4BAA4B,CAuBxC;AAyBM,0DALI,OAAO,QACP,MAAM,6BAEJ,IAAI,CA0DhB;AAOM,4CAHI,OAAO,GACL,IAAI,CAgChB;oCA9Ma,OAAO,YAAY,EAAE,qBAAqB;2CAC1C,OAAO,YAAY,EAAE,4BAA4B"}
1
+ {"version":3,"file":"policy-format.d.ts","sourceRoot":"","sources":["policy-format.js"],"names":[],"mappings":"AAqBO,kDALI,MAAM,SACN,MAAM,YACN,MAAM,GACJ,OAAO,GAAG,MAAM,CAqB5B;AAQM,kDAHI,GAAG,GACD,OAAO,CAGmB;AAOhC,6DAHI,qBAAqB,GACnB,OAAO,CAQnB;AAOM,mEAHI,qBAAqB,GACnB,4BAA4B,CAuBxC;AAyBM,0DALI,OAAO,QACP,MAAM,6BAEJ,IAAI,CA0DhB;AAOM,4CAHI,OAAO,GACL,IAAI,CAgChB;oCA9Ma,OAAO,YAAY,EAAE,qBAAqB;2CAC1C,OAAO,YAAY,EAAE,4BAA4B"}
@@ -43,7 +43,7 @@ export const policyLookupHelper = (packagePolicy, field, itemName) => {
43
43
  /**
44
44
  * Checks if the policy value is set to wildcard to allow everything
45
45
  *
46
- * @param {*} policyValue
46
+ * @param {any} policyValue
47
47
  * @returns {boolean}
48
48
  */
49
49
  export const isAllowingEverything = policyValue =>
@@ -122,7 +122,7 @@ export const assertPackagePolicy = (allegedPackagePolicy, path, url) => {
122
122
  const packagePolicy = Object(allegedPackagePolicy);
123
123
  assert(
124
124
  allegedPackagePolicy === packagePolicy && !isArray(allegedPackagePolicy),
125
- `${path} must be an object, got ${allegedPackagePolicy}${inUrl}`,
125
+ `${path} must be an object, got ${q(allegedPackagePolicy)}${inUrl}`,
126
126
  );
127
127
  const {
128
128
  packages,
package/src/policy.d.ts CHANGED
@@ -7,14 +7,8 @@ export function dependencyAllowedByPolicy(namingKit: PackageNamingKit, packagePo
7
7
  export function getPolicyForPackage(namingKit: PackageNamingKit, policy: object | undefined): object | undefined;
8
8
  export function makeDeferredAttenuatorsProvider(compartments: Record<string, Compartment>, compartmentDescriptors: Record<string, CompartmentDescriptor>): DeferredAttenuatorsProvider;
9
9
  export function attenuateGlobals(globalThis: object, globals: object, packagePolicy: object, attenuators: DeferredAttenuatorsProvider, pendingJobs: Array<Promise<any>>, name?: string): void;
10
- export function enforceModulePolicy(specifier: string, compartmentDescriptor: object, info?: object): void;
10
+ export function enforceModulePolicy(specifier: string, compartmentDescriptor: import('./types.js').CompartmentDescriptor, info?: object): void;
11
11
  export function attenuateModuleHook(specifier: string, originalModuleRecord: ThirdPartyStaticModuleInterface, policy: object, attenuators: DeferredAttenuatorsProvider): Promise<ThirdPartyStaticModuleInterface>;
12
- export function diagnoseMissingCompartmentError({ moduleSpecifier, compartmentDescriptor, foreignModuleSpecifier, foreignCompartmentName, }: {
13
- moduleSpecifier: string;
14
- compartmentDescriptor: object;
15
- foreignModuleSpecifier: string;
16
- foreignCompartmentName: string;
17
- }): string;
18
12
  export type PackageNamingKit = import('./types.js').PackageNamingKit;
19
13
  export type AttenuationDefinition = import('./types.js').AttenuationDefinition;
20
14
  export type FullAttenuationDefinition = import('./types.js').FullAttenuationDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["policy.js"],"names":[],"mappings":"AAsBA;;GAEG;AACH,sDAAuD;AA0ChD,0CAHI,MAAM,GACJ,MAAM,MAAM,CAAC,CAezB;AA0BM,qDAJI,gBAAgB,uBAEd,OAAO,CASnB;AAgCM,+CAJI,gBAAgB,UAChB,MAAM,GAAC,SAAS,GACd,MAAM,GAAC,SAAS,CA4B5B;AAgDM,8DAJI,OAAO,MAAM,EAAE,WAAW,CAAC,0BAC3B,OAAO,MAAM,EAAE,qBAAqB,CAAC,GACnC,2BAA2B,CA2CvC;AAmDM,6CARI,MAAM,WACN,MAAM,iBACN,MAAM,eACN,2BAA2B,eAC3B,mBAAc,SACd,MAAM,GACJ,IAAI,CAgDhB;AASM,+CAJI,MAAM,yBACN,MAAM,SACN,MAAM,QA0BhB;AA+CM,+CANI,MAAM,wBACN,+BAA+B,UAC/B,MAAM,eACN,2BAA2B,GACzB,QAAQ,+BAA+B,CAAC,CAyBpD;AAaM;IANkB,eAAe,EAA7B,MAAM;IACQ,qBAAqB,EAAnC,MAAM;IACQ,sBAAsB,EAApC,MAAM;IACQ,sBAAsB,EAApC,MAAM;IACJ,MAAM,CA+ClB;+BApgBa,OAAO,YAAY,EAAE,gBAAgB;oCACrC,OAAO,YAAY,EAAE,qBAAqB;wCAC1C,OAAO,YAAY,EAAE,yBAAyB;4CAC9C,OAAO,YAAY,EAAE,6BAA6B;yBAClD,OAAO,YAAY,EAAE,UAAU;0CAC/B,OAAO,YAAY,EAAE,2BAA2B;oCAChD,OAAO,YAAY,EAAE,qBAAqB;8CAE1C,OAAO,KAAK,EAAE,+BAA+B"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["policy.js"],"names":[],"mappings":"AAsBA;;GAEG;AACH,sDAAuD;AA0ChD,0CAHI,MAAM,GACJ,MAAM,MAAM,CAAC,CAezB;AA0BM,qDAJI,gBAAgB,iBAChB,GAAG,GACD,OAAO,CASnB;AASM,+CAJI,gBAAgB,UAChB,MAAM,GAAC,SAAS,GACd,MAAM,GAAC,SAAS,CAsB5B;AAgDM,8DAJI,OAAO,MAAM,EAAE,WAAW,CAAC,0BAC3B,OAAO,MAAM,EAAE,qBAAqB,CAAC,GACnC,2BAA2B,CA2CvC;AAmDM,6CARI,MAAM,WACN,MAAM,iBACN,MAAM,eACN,2BAA2B,eAC3B,mBAAc,SACd,MAAM,GACJ,IAAI,CAgDhB;AAeM,+CAJI,MAAM,yBACN,OAAO,YAAY,EAAE,qBAAqB,SAC1C,MAAM,QAgChB;AA+CM,+CANI,MAAM,wBACN,+BAA+B,UAC/B,MAAM,eACN,2BAA2B,GACzB,QAAQ,+BAA+B,CAAC,CAyBpD;+BAzba,OAAO,YAAY,EAAE,gBAAgB;oCACrC,OAAO,YAAY,EAAE,qBAAqB;wCAC1C,OAAO,YAAY,EAAE,yBAAyB;4CAC9C,OAAO,YAAY,EAAE,6BAA6B;yBAClD,OAAO,YAAY,EAAE,UAAU;0CAC/B,OAAO,YAAY,EAAE,2BAA2B;oCAChD,OAAO,YAAY,EAAE,qBAAqB;8CAE1C,OAAO,KAAK,EAAE,+BAA+B"}
package/src/policy.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  isAllowingEverything,
18
18
  } from './policy-format.js';
19
19
 
20
- const { entries, values, assign, keys, freeze } = Object;
20
+ const { create, entries, values, assign, keys, freeze } = Object;
21
21
  const q = JSON.stringify;
22
22
 
23
23
  /**
@@ -101,7 +101,7 @@ const generateCanonicalName = ({ isEntry = false, name, path }) => {
101
101
  * packagePolicy is required, when policy is not set, skipping needs to be handled by the caller.
102
102
  *
103
103
  * @param {PackageNamingKit} namingKit
104
- * @param {*} packagePolicy
104
+ * @param {any} packagePolicy
105
105
  * @returns {boolean}
106
106
  */
107
107
  export const dependencyAllowedByPolicy = (namingKit, packagePolicy) => {
@@ -113,29 +113,6 @@ export const dependencyAllowedByPolicy = (namingKit, packagePolicy) => {
113
113
  return !!policyLookupHelper(packagePolicy, 'packages', canonicalName);
114
114
  };
115
115
 
116
- const validateDependencies = (policy, canonicalName) => {
117
- const packages = policy.resources[canonicalName].packages;
118
- if (!packages || isAllowingEverything(packages)) {
119
- return;
120
- }
121
-
122
- const packageNames = keys(packages);
123
- const attenuators = detectAttenuators(policy);
124
- // Join attenuators with packageNames into a Set to deduplicate and check if all are listed in policy.resources
125
- const allSpecifiers = new Set([...packageNames, ...attenuators]);
126
- for (const specifier of allSpecifiers) {
127
- if (!(specifier in policy.resources)) {
128
- throw Error(
129
- `Package ${q(specifier)} is allowed for ${q(
130
- canonicalName,
131
- )} to import but its policy is not defined. Please add a policy for ${q(
132
- specifier,
133
- )}`,
134
- );
135
- }
136
- }
137
- };
138
-
139
116
  /**
140
117
  * Returns the policy applicable to the canonicalName of the package
141
118
  *
@@ -154,20 +131,14 @@ export const getPolicyForPackage = (namingKit, policy) => {
154
131
  if (canonicalName === ATTENUATORS_COMPARTMENT) {
155
132
  return {
156
133
  defaultAttenuator: policy.defaultAttenuator,
157
- packages: detectAttenuators(policy).reduce((packages, specifier) => {
158
- packages[specifier] = true;
159
- return packages;
160
- }, {}),
134
+ packages: 'any',
161
135
  };
162
136
  }
163
- if (policy.resources && policy.resources[canonicalName]) {
164
- validateDependencies(policy, canonicalName);
137
+ if (policy.resources && policy.resources[canonicalName] !== undefined) {
165
138
  return policy.resources[canonicalName];
166
139
  } else {
167
- console.warn(
168
- `No policy for '${canonicalName}', omitting from compartment map.`,
169
- );
170
- return undefined;
140
+ // Allow skipping policy entries for packages with no powers.
141
+ return create(null);
171
142
  }
172
143
  };
173
144
 
@@ -357,15 +328,25 @@ export const attenuateGlobals = (
357
328
  freezeGlobalThisUnlessOptedOut();
358
329
  };
359
330
 
331
+ const diagnoseModulePolicy = errorHint => {
332
+ if (!errorHint) {
333
+ return '';
334
+ }
335
+ return ` (info: ${errorHint})`;
336
+ };
360
337
  /**
361
338
  * Throws if importing of the specifier is not allowed by the policy
362
339
  *
363
340
  * @param {string} specifier
364
- * @param {object} compartmentDescriptor
341
+ * @param {import('./types.js').CompartmentDescriptor} compartmentDescriptor
365
342
  * @param {object} [info]
366
343
  */
367
- export const enforceModulePolicy = (specifier, compartmentDescriptor, info) => {
368
- const { policy, modules } = compartmentDescriptor;
344
+ export const enforceModulePolicy = (
345
+ specifier,
346
+ compartmentDescriptor,
347
+ info = {},
348
+ ) => {
349
+ const { policy, modules, label } = compartmentDescriptor;
369
350
  if (!policy) {
370
351
  return;
371
352
  }
@@ -373,9 +354,11 @@ export const enforceModulePolicy = (specifier, compartmentDescriptor, info) => {
373
354
  if (!info.exit) {
374
355
  if (!modules[specifier]) {
375
356
  throw Error(
376
- `Importing ${q(specifier)} was not allowed by policy packages:${q(
357
+ `Importing ${q(specifier)} in ${q(
358
+ label,
359
+ )} was not allowed by packages policy ${q(
377
360
  policy.packages,
378
- )}`,
361
+ )}${diagnoseModulePolicy(info.errorHint)}`,
379
362
  );
380
363
  }
381
364
  return;
@@ -385,7 +368,7 @@ export const enforceModulePolicy = (specifier, compartmentDescriptor, info) => {
385
368
  throw Error(
386
369
  `Importing ${q(specifier)} was not allowed by policy builtins:${q(
387
370
  policy.builtins,
388
- )}`,
371
+ )}${diagnoseModulePolicy(info.errorHint)}`,
389
372
  );
390
373
  }
391
374
  };
@@ -459,61 +442,3 @@ export const attenuateModuleHook = async (
459
442
  originalModuleRecord,
460
443
  });
461
444
  };
462
-
463
- const padDiagnosis = text => ` (${text})`;
464
- /**
465
- * Provide dignostic information for a missing compartment error
466
- *
467
- * @param {object} args
468
- * @param {string} args.moduleSpecifier
469
- * @param {object} args.compartmentDescriptor
470
- * @param {string} args.foreignModuleSpecifier
471
- * @param {string} args.foreignCompartmentName
472
- * @returns {string}
473
- */
474
- export const diagnoseMissingCompartmentError = ({
475
- moduleSpecifier,
476
- compartmentDescriptor,
477
- foreignModuleSpecifier,
478
- foreignCompartmentName,
479
- }) => {
480
- const { policy, name, scopes } = compartmentDescriptor;
481
-
482
- if (policy) {
483
- if (!policy.packages) {
484
- return padDiagnosis(
485
- `There were no allowed packages specified in policy for ${q(name)}`,
486
- );
487
- }
488
- if (name === ATTENUATORS_COMPARTMENT) {
489
- return padDiagnosis(
490
- `Attenuator ${q(
491
- moduleSpecifier,
492
- )} was imported but there is no policy resources entry defined for it.`,
493
- );
494
- }
495
-
496
- const scopeNames = entries(scopes)
497
- .filter(([_name, scope]) => scope.compartment === foreignCompartmentName)
498
- .map(([scopeName]) => scopeName);
499
- if (scopeNames.length === 1 && scopeNames[0] === moduleSpecifier) {
500
- return padDiagnosis(
501
- `Package ${q(
502
- moduleSpecifier,
503
- )} is missing. Are you sure there is an entry in policy resources specified for it?`,
504
- );
505
- } else {
506
- return padDiagnosis(
507
- `Package ${q(moduleSpecifier)} resolves to ${q(
508
- foreignModuleSpecifier,
509
- )} in ${q(
510
- foreignCompartmentName,
511
- )} which seems disallowed by policy. There is likely an override defined that causes another package to be imported as ${q(
512
- moduleSpecifier,
513
- )}.`,
514
- );
515
- }
516
- }
517
- // Omit diagnostics when parent package had no policy - it means there was no policy.
518
- return '';
519
- };
package/src/types.d.ts CHANGED
@@ -107,7 +107,7 @@ export type MaybeReadFn = (location: string) => Promise<Uint8Array | undefined>;
107
107
  * Must return the given logical location if the real location does not exist.
108
108
  */
109
109
  export type CanonicalFn = (location: string) => Promise<string>;
110
- export type HashFn = (bytes: Uint8Array) => string;
110
+ export type HashFn = (bytes: string | Uint8Array) => string;
111
111
  export type Application = {
112
112
  import: ExecuteFn;
113
113
  sha512?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.js"],"names":[],"mappings":"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"}
package/src/types.js CHANGED
@@ -133,7 +133,7 @@ export {};
133
133
 
134
134
  /**
135
135
  * @callback HashFn
136
- * @param {Uint8Array} bytes
136
+ * @param {string | Uint8Array} bytes
137
137
  * @returns {string} hash
138
138
  */
139
139