@endo/compartment-mapper
Advanced tools
Comparing version 0.3.2 to 0.4.0
@@ -6,2 +6,21 @@ # Change Log | ||
## [0.4.0](https://github.com/endojs/endo/compare/@endo/compartment-mapper@0.3.2...@endo/compartment-mapper@0.4.0) (2021-06-16) | ||
### ⚠ BREAKING CHANGES | ||
* **compartment-mapper:** Required exits on archives | ||
### Features | ||
* **compartment-mapper:** Developer dependencies ([44f86cd](https://github.com/endojs/endo/commit/44f86cd6788b8f6bdc5492619866995ede73488b)) | ||
* **compartment-mapper:** Required exits on archives ([f5e6378](https://github.com/endojs/endo/commit/f5e6378f4c4dc2c017d3c94544a3e22d762ade27)) | ||
### Bug Fixes | ||
* **compartment-mapper:** Missing node-powers from published files ([277fd47](https://github.com/endojs/endo/commit/277fd47e359ee90d31a521fadbac90a4853649f4)) | ||
### [0.3.2](https://github.com/endojs/endo/compare/@endo/compartment-mapper@0.3.1...@endo/compartment-mapper@0.3.2) (2021-06-14) | ||
@@ -8,0 +27,0 @@ |
{ | ||
"name": "@endo/compartment-mapper", | ||
"version": "0.3.2", | ||
"version": "0.4.0", | ||
"description": "The compartment mapper assembles Node applications in a sandbox", | ||
@@ -42,9 +42,9 @@ "keywords": [ | ||
"dependencies": { | ||
"@endo/cjs-module-analyzer": "^0.2.2", | ||
"@endo/static-module-record": "^0.5.2", | ||
"@endo/zip": "^0.2.2", | ||
"ses": "^0.13.2" | ||
"@endo/cjs-module-analyzer": "^0.2.3", | ||
"@endo/static-module-record": "^0.5.3", | ||
"@endo/zip": "^0.2.3", | ||
"ses": "^0.13.3" | ||
}, | ||
"devDependencies": { | ||
"@endo/eslint-config": "^0.3.9", | ||
"@endo/eslint-config": "^0.3.10", | ||
"ava": "^3.12.1", | ||
@@ -69,2 +69,3 @@ "babel-eslint": "^10.0.3", | ||
"index.js", | ||
"node-powers.js", | ||
"src" | ||
@@ -90,3 +91,3 @@ ], | ||
}, | ||
"gitHead": "68cb467c5be67d84ea8f980076c3407365213854" | ||
"gitHead": "f91c84cde6cfe82c085ebe316da939d04ca74aa4" | ||
} |
@@ -143,8 +143,7 @@ // @ts-check | ||
* @param {string} moduleLocation | ||
* @param {Object} [options] | ||
* @param {ModuleTransforms} [options.moduleTransforms] | ||
* @param {ArchiveOptions} [options] | ||
* @returns {Promise<Uint8Array>} | ||
*/ | ||
export const makeArchive = async (powers, moduleLocation, options) => { | ||
const { moduleTransforms } = options || {}; | ||
const { moduleTransforms, modules = {}, dev = false } = options || {}; | ||
const { read } = unpackReadPowers(powers); | ||
@@ -171,2 +170,3 @@ const { | ||
moduleSpecifier, | ||
{ dev }, | ||
); | ||
@@ -191,2 +191,3 @@ | ||
resolve, | ||
modules, | ||
makeImportHook, | ||
@@ -193,0 +194,0 @@ moduleTransforms, |
@@ -306,3 +306,3 @@ // @ts-check | ||
); | ||
const importHook = makeImportHook(location, parse); | ||
const importHook = makeImportHook(location, parse, exitModules); | ||
const moduleMapHook = makeModuleMapHook( | ||
@@ -309,0 +309,0 @@ compartments, |
@@ -7,3 +7,10 @@ // @ts-check | ||
const { apply } = Reflect; | ||
const { freeze } = Object; | ||
const { hasOwnProperty } = Object.prototype; | ||
/** | ||
* @param {Record<string, never>} haystack | ||
* @param {string} needle | ||
*/ | ||
const has = (haystack, needle) => apply(hasOwnProperty, haystack, [needle]); | ||
@@ -22,2 +29,3 @@ /** | ||
* @param {Record<string, CompartmentDescriptor>} compartments | ||
* @param {Record<string, never>} exitModules | ||
* @returns {ImportHookMaker} | ||
@@ -30,2 +38,3 @@ */ | ||
compartments = {}, | ||
exitModules = {}, | ||
) => { | ||
@@ -49,8 +58,15 @@ // per-assembly: | ||
if (moduleSpecifier !== '.' && !moduleSpecifier.startsWith('./')) { | ||
packageSources[moduleSpecifier] = { | ||
exit: moduleSpecifier, | ||
}; | ||
// Return a place-holder. | ||
// Archived compartments are not executed. | ||
return freeze({ imports: [], execute() {} }); | ||
if (has(exitModules, moduleSpecifier)) { | ||
packageSources[moduleSpecifier] = { | ||
exit: moduleSpecifier, | ||
}; | ||
// Return a place-holder. | ||
// Archived compartments are not executed. | ||
return freeze({ imports: [], exports: [], execute() {} }); | ||
} | ||
throw new Error( | ||
`Cannot find external module ${q( | ||
moduleSpecifier, | ||
)} in package ${packageLocation}`, | ||
); | ||
} | ||
@@ -57,0 +73,0 @@ |
@@ -29,3 +29,3 @@ // @ts-check | ||
export const loadLocation = async (readPowers, moduleLocation, options) => { | ||
const { moduleTransforms = {} } = options || {}; | ||
const { moduleTransforms = {}, dev = false } = options || {}; | ||
@@ -53,2 +53,3 @@ const { read } = unpackReadPowers(readPowers); | ||
moduleSpecifier, | ||
{ dev }, | ||
); | ||
@@ -55,0 +56,0 @@ |
@@ -30,3 +30,3 @@ // @ts-check | ||
const { create, keys, values } = Object; | ||
const { assign, create, keys, values } = Object; | ||
@@ -207,2 +207,3 @@ const decoder = new TextDecoder(); | ||
* @param {Set<string>} tags | ||
* @param {boolean} dev | ||
* @returns {Promise<undefined>} | ||
@@ -217,2 +218,3 @@ */ | ||
tags, | ||
dev, | ||
) => { | ||
@@ -236,3 +238,7 @@ if (graph[packageLocation] !== undefined) { | ||
const children = []; | ||
for (const name of keys(packageDescriptor.dependencies || {}).sort()) { | ||
const predicates = packageDescriptor.dependencies || {}; | ||
if (dev) { | ||
assign(predicates, packageDescriptor.devDependencies || {}); | ||
} | ||
for (const name of keys(predicates).sort()) { | ||
children.push( | ||
@@ -298,3 +304,11 @@ // Mutual recursion ahead: | ||
dependencies[name] = dependency.packageLocation; | ||
await graphPackage(name, readDescriptor, canonical, graph, dependency, tags); | ||
await graphPackage( | ||
name, | ||
readDescriptor, | ||
canonical, | ||
graph, | ||
dependency, | ||
tags, | ||
false, | ||
); | ||
}; | ||
@@ -317,2 +331,4 @@ | ||
* package.json, which was already read when searching for the package.json. | ||
* @param {boolean} dev - whether to use devDependencies from this package (and | ||
* only this package). | ||
*/ | ||
@@ -325,2 +341,3 @@ const graphPackages = async ( | ||
mainPackageDescriptor, | ||
dev, | ||
) => { | ||
@@ -360,2 +377,3 @@ const memo = create(null); | ||
tags, | ||
dev, | ||
); | ||
@@ -442,2 +460,4 @@ return graph; | ||
* @param {string} moduleSpecifier | ||
* @param {Object} [options] | ||
* @param {boolean} [options.dev] | ||
* @returns {Promise<CompartmentMapDescriptor>} | ||
@@ -451,3 +471,5 @@ */ | ||
moduleSpecifier, | ||
options = {}, | ||
) => { | ||
const { dev = false } = options; | ||
const { read, canonical } = unpackReadPowers(readPowers); | ||
@@ -460,4 +482,5 @@ const graph = await graphPackages( | ||
packageDescriptor, | ||
dev, | ||
); | ||
return translateGraph(packageLocation, moduleSpecifier, graph, tags); | ||
}; |
@@ -149,2 +149,3 @@ // @ts-check | ||
* @param {ParseFn} parse | ||
* @param {Record<string, Object>} exitModules | ||
* @returns {ImportHook} | ||
@@ -172,3 +173,3 @@ */ | ||
* @property {Array<Transform>} [__shimTransforms__] | ||
* @property {Record<string, string>} [modules] | ||
* @property {Record<string, Object>} [modules] | ||
* @property {typeof Compartment.prototype.constructor} [Compartment] | ||
@@ -232,2 +233,4 @@ */ | ||
* @property {ModuleTransforms} [moduleTransforms] | ||
* @property {Record<string, any>} [modules] | ||
* @property {boolean} [dev] | ||
*/ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
125222
34
2608
Updated@endo/zip@^0.2.3
Updatedses@^0.13.3