From d6187de85bb974553d6988013f79552aac4cf19e Mon Sep 17 00:00:00 2001 From: grypez <143971198+grypez@users.noreply.github.com> Date: Thu, 15 Aug 2024 10:12:47 -0400 Subject: [PATCH 1/6] test(shims): Add bundling tests Adds an initial test suite (copied from `@endo/ses`) ensuring that this bundled shims work as intended after import. The primary behavior under test is that `import '@ocap/shims/endoify'` produces the same environment as `import 'ses'`. Future tests may also ensure that the bundled `eventual-send` also works as intended. --- packages/shims/package.json | 4 +- packages/shims/test/with-endoify.test.js | 178 +++++ packages/shims/test/without-endoify.test.js | 177 +++++ yarn.lock | 782 +++++++++++++++++++- 4 files changed, 1122 insertions(+), 19 deletions(-) create mode 100644 packages/shims/test/with-endoify.test.js create mode 100644 packages/shims/test/without-endoify.test.js diff --git a/packages/shims/package.json b/packages/shims/package.json index d064ddcbb..620d955b3 100644 --- a/packages/shims/package.json +++ b/packages/shims/package.json @@ -26,7 +26,8 @@ "changelog:validate": "../../scripts/validate-changelog.sh @ocap/shims", "clean": "rimraf --glob ./dist './*.tsbuildinfo'", "publish:preview": "yarn npm publish --tag preview", - "test": "vitest run --config vitest.config.ts --passWithNoTests", + "test": "yarn test:bundles && vitest run --config vitest.config.ts --passWithNoTests", + "test:bundles": "ava", "test:clean": "yarn test --no-cache --coverage.clean", "test:dev": "yarn test --coverage false", "test:verbose": "yarn test --reporter verbose", @@ -39,6 +40,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", + "ava": "^6.1.3", "deepmerge": "^4.3.1", "mkdirp": "^3.0.1", "rimraf": "^6.0.1", diff --git a/packages/shims/test/with-endoify.test.js b/packages/shims/test/with-endoify.test.js new file mode 100644 index 000000000..e57e6ec03 --- /dev/null +++ b/packages/shims/test/with-endoify.test.js @@ -0,0 +1,178 @@ +/** + * Adapted from @endo/packages/ses/test/ses.test.js + */ + +import test from 'ava'; +import '@ocap/shims/endoify'; + +/* eslint-disable no-proto, no-empty-function */ + +test('tamed constructors', t => { + t.plan(12); + + function F() {} + t.throws(() => F.__proto__.constructor(''), { instanceOf: TypeError }); + + async function AF() {} + t.throws(() => AF.__proto__.constructor(''), { instanceOf: TypeError }); + + function* G() {} + t.throws(() => G.__proto__.constructor(''), { instanceOf: TypeError }); + + async function* AG() {} + t.throws(() => AG.__proto__.constructor(''), { instanceOf: TypeError }); + + t.throws(() => Error.__proto__.constructor(''), { instanceOf: TypeError }); + t.throws(() => Function.prototype.constructor(''), { instanceOf: TypeError }); + + const c = new Compartment({ + globals: { console }, + __options__: true, + }); + + t.throws(() => c.evaluate("Error.__proto__.constructor('')"), { + instanceOf: TypeError, + }); + t.throws(() => c.evaluate("Function.prototype.constructor('')"), { + instanceOf: TypeError, + }); + + t.throws(() => c.evaluate("function F() {}; F.__proto__.constructor('')"), { + instanceOf: TypeError, + }); + t.throws( + () => c.evaluate("async function AF() {}; AF.__proto__.constructor('')"), + { instanceOf: TypeError }, + ); + t.throws(() => c.evaluate("function* G() {}; G.__proto__.constructor('')"), { + instanceOf: TypeError, + }); + t.throws( + () => c.evaluate("async function* AG() {}; AG.__proto__.constructor('')"), + { instanceOf: TypeError }, + ); +}); + +test('frozen', t => { + t.plan(4); + + t.truthy(Object.isFrozen(Object)); + t.truthy(Object.isFrozen(Object.prototype)); + + const c = new Compartment(); + t.truthy(c.evaluate('Object.isFrozen(Object)')); + t.truthy(c.evaluate('Object.isFrozen(Object.prototype)')); +}); + +test('create', t => { + const c = new Compartment(); + t.is(1, 1); + t.is(c.evaluate('1+1'), 2); +}); + +test('SES compartment does not see primal realm names', t => { + const hidden = 1; // eslint-disable-line no-unused-vars + const c = new Compartment(); + t.throws(() => c.evaluate('hidden+1'), { instanceOf: ReferenceError }); +}); + +test('SES compartment also has compartments', t => { + const c = new Compartment(); + t.is(1, 1); + t.is(c.evaluate('1+1'), 2); + t.is(c.evaluate("const s2 = new Compartment(); s2.evaluate('1+2')"), 3); +}); + +// test('SESRealm has SES.confine', t => { +// const s = SES.makeSESRootRealm(); +// t.is(1, 1); +// t.is(s.evaluate('1+1'), 2); +// t.is(s.evaluate(`SES.confine('1+2')`), 3); +// // it evals in the current RootRealm. We might test this by adding +// // something to the global, except that global has been frozen. todo: +// // if/when we add endowments to makeSESRootRealm(), set one and then test +// // that SES.confine can see it +// // s = SES.makeSESRootRealm({ a: 2 }); +// // t.is(s.evaluate(`SES.confine('a+2')`), 4); + +// // SES.confine accepts endowments, which are made available in the global +// // lexical scope (*not* copied onto the global object, which is frozen +// // anyways), so they'll be available for only the duration of the eval, and +// // only as unbound names (so they could be found statically in the AST) +// t.is(s.evaluate(`SES.confine('b+2', { b: 3 })`), 5); +// t.throws(() => s.evaluate(`SES.confine('b+2')`), ReferenceError); +// // }); + +test('SES compartment has harden', t => { + const c = new Compartment({ + globals: { a: 123 }, + __options__: true, + }); + const obj = c.evaluate('harden({a})'); + t.is(obj.a, 123, 'expected object'); + if (!harden.isFake) { + t.throws(() => (obj.a = 'ignored')); + t.is(obj.a, 123, 'hardened object retains value'); + } +}); + +// test('SESRealm.SES wraps exceptions', t => { +// const s = SES.makeSESRootRealm(); +// function fail() { +// missing; // eslint-disable-line no-unused-expressions,no-undef +// } +// function check(failStr) { +// try { +// SES.confine(failStr); +// } catch (e) { +// if (e instanceof ReferenceError) { +// return 'inner ReferenceError'; +// } +// return 'wrong exception type'; +// } +// return 'did not throw'; +// } +// const failStr = `${fail}; fail()`; +// t.is( +// s.evaluate(`${check}; check(failStr)`, { failStr }), +// 'inner ReferenceError', +// ); +// // }); + +// test('primal realm SES does not have confine', t => { +// // we actually want to see if 'Object.SES' is present or not +// // eslint-disable-next-line no-prototype-builtins +// t.is(Object.hasOwnProperty('SES'), false); +// // }); + +test('main use case', t => { + function power(a) { + return a + 1; + } + /** + * @param {number} arg + * @returns {number} + */ + function attenuate(arg) { + if (arg <= 0) { + throw TypeError('only positive numbers'); + } + return power(arg); + } + const attenuatedPower = new Compartment({ + globals: { power }, + __options__: true, + }).evaluate(`(${attenuate})`); + function use(arg) { + return power(arg); + } + const c = new Compartment({ + globals: { power: attenuatedPower }, + __options__: true, + }); + const user = c.evaluate(`(${use})`); + t.is(user(1), 2); + t.throws(() => user(-1), { instanceOf: c.globalThis.TypeError }); +}); + +/* eslint-enable no-proto, no-empty-function */ \ No newline at end of file diff --git a/packages/shims/test/without-endoify.test.js b/packages/shims/test/without-endoify.test.js new file mode 100644 index 000000000..f9e7c4663 --- /dev/null +++ b/packages/shims/test/without-endoify.test.js @@ -0,0 +1,177 @@ +/** + * Adapted from @endo/packages/ses/test/ses.test.js + */ + +import test from 'ava'; + +/* eslint-disable no-proto, no-empty-function */ + +test.failing('tamed constructors', t => { + t.plan(12); + + function F() {} + t.throws(() => F.__proto__.constructor(''), { instanceOf: TypeError }); + + async function AF() {} + t.throws(() => AF.__proto__.constructor(''), { instanceOf: TypeError }); + + function* G() {} + t.throws(() => G.__proto__.constructor(''), { instanceOf: TypeError }); + + async function* AG() {} + t.throws(() => AG.__proto__.constructor(''), { instanceOf: TypeError }); + + t.throws(() => Error.__proto__.constructor(''), { instanceOf: TypeError }); + t.throws(() => Function.prototype.constructor(''), { instanceOf: TypeError }); + + const c = new Compartment({ + globals: { console }, + __options__: true, + }); + + t.throws(() => c.evaluate("Error.__proto__.constructor('')"), { + instanceOf: TypeError, + }); + t.throws(() => c.evaluate("Function.prototype.constructor('')"), { + instanceOf: TypeError, + }); + + t.throws(() => c.evaluate("function F() {}; F.__proto__.constructor('')"), { + instanceOf: TypeError, + }); + t.throws( + () => c.evaluate("async function AF() {}; AF.__proto__.constructor('')"), + { instanceOf: TypeError }, + ); + t.throws(() => c.evaluate("function* G() {}; G.__proto__.constructor('')"), { + instanceOf: TypeError, + }); + t.throws( + () => c.evaluate("async function* AG() {}; AG.__proto__.constructor('')"), + { instanceOf: TypeError }, + ); +}); + +test.failing('frozen', t => { + t.plan(4); + + t.truthy(Object.isFrozen(Object)); + t.truthy(Object.isFrozen(Object.prototype)); + + const c = new Compartment(); + t.truthy(c.evaluate('Object.isFrozen(Object)')); + t.truthy(c.evaluate('Object.isFrozen(Object.prototype)')); +}); + +test.failing('create', t => { + const c = new Compartment(); + t.is(1, 1); + t.is(c.evaluate('1+1'), 2); +}); + +test.failing('SES compartment does not see primal realm names', t => { + const hidden = 1; // eslint-disable-line no-unused-vars + const c = new Compartment(); + t.throws(() => c.evaluate('hidden+1'), { instanceOf: ReferenceError }); +}); + +test.failing('SES compartment also has compartments', t => { + const c = new Compartment(); + t.is(1, 1); + t.is(c.evaluate('1+1'), 2); + t.is(c.evaluate("const s2 = new Compartment(); s2.evaluate('1+2')"), 3); +}); + +// test.failing('SESRealm has SES.confine', t => { +// const s = SES.makeSESRootRealm(); +// t.is(1, 1); +// t.is(s.evaluate('1+1'), 2); +// t.is(s.evaluate(`SES.confine('1+2')`), 3); +// // it evals in the current RootRealm. We might test this by adding +// // something to the global, except that global has been frozen. todo: +// // if/when we add endowments to makeSESRootRealm(), set one and then test +// // that SES.confine can see it +// // s = SES.makeSESRootRealm({ a: 2 }); +// // t.is(s.evaluate(`SES.confine('a+2')`), 4); + +// // SES.confine accepts endowments, which are made available in the global +// // lexical scope (*not* copied onto the global object, which is frozen +// // anyways), so they'll be available for only the duration of the eval, and +// // only as unbound names (so they could be found statically in the AST) +// t.is(s.evaluate(`SES.confine('b+2', { b: 3 })`), 5); +// t.throws(() => s.evaluate(`SES.confine('b+2')`), ReferenceError); +// // }); + +test.failing('SES compartment has harden', t => { + const c = new Compartment({ + globals: { a: 123 }, + __options__: true, + }); + const obj = c.evaluate('harden({a})'); + t.is(obj.a, 123, 'expected object'); + if (!harden.isFake) { + t.throws(() => (obj.a = 'ignored')); + t.is(obj.a, 123, 'hardened object retains value'); + } +}); + +// test.failing('SESRealm.SES wraps exceptions', t => { +// const s = SES.makeSESRootRealm(); +// function fail() { +// missing; // eslint-disable-line no-unused-expressions,no-undef +// } +// function check(failStr) { +// try { +// SES.confine(failStr); +// } catch (e) { +// if (e instanceof ReferenceError) { +// return 'inner ReferenceError'; +// } +// return 'wrong exception type'; +// } +// return 'did not throw'; +// } +// const failStr = `${fail}; fail()`; +// t.is( +// s.evaluate(`${check}; check(failStr)`, { failStr }), +// 'inner ReferenceError', +// ); +// // }); + +// test.failing('primal realm SES does not have confine', t => { +// // we actually want to see if 'Object.SES' is present or not +// // eslint-disable-next-line no-prototype-builtins +// t.is(Object.hasOwnProperty('SES'), false); +// // }); + +test.failing('main use case', t => { + function power(a) { + return a + 1; + } + /** + * @param {number} arg + * @returns {number} + */ + function attenuate(arg) { + if (arg <= 0) { + throw TypeError('only positive numbers'); + } + return power(arg); + } + const attenuatedPower = new Compartment({ + globals: { power }, + __options__: true, + }).evaluate(`(${attenuate})`); + function use(arg) { + return power(arg); + } + const c = new Compartment({ + globals: { power: attenuatedPower }, + __options__: true, + }); + const user = c.evaluate(`(${use})`); + t.is(user(1), 2); + t.throws(() => user(-1), { instanceOf: c.globalThis.TypeError }); +}); + +/* eslint-enable no-proto, no-empty-function */ \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 5f921a116..7b0a99ffa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -730,6 +730,25 @@ __metadata: languageName: node linkType: hard +"@mapbox/node-pre-gyp@npm:^1.0.5": + version: 1.0.11 + resolution: "@mapbox/node-pre-gyp@npm:1.0.11" + dependencies: + detect-libc: "npm:^2.0.0" + https-proxy-agent: "npm:^5.0.0" + make-dir: "npm:^3.1.0" + node-fetch: "npm:^2.6.7" + nopt: "npm:^5.0.0" + npmlog: "npm:^5.0.1" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.11" + bin: + node-pre-gyp: bin/node-pre-gyp + checksum: 10/59529a2444e44fddb63057152452b00705aa58059079191126c79ac1388ae4565625afa84ed4dd1bf017d1111ab6e47907f7c5192e06d83c9496f2f3e708680a + languageName: node + linkType: hard + "@metamask/auto-changelog@npm:^3.4.4": version: 3.4.4 resolution: "@metamask/auto-changelog@npm:3.4.4" @@ -1296,6 +1315,7 @@ __metadata: "@endo/eventual-send": "npm:^1.2.2" "@endo/lockdown": "npm:^1.0.7" "@metamask/auto-changelog": "npm:^3.4.4" + ava: "npm:^6.1.3" deepmerge: "npm:^4.3.1" mkdirp: "npm:^3.0.1" rimraf: "npm:^6.0.1" @@ -1322,6 +1342,16 @@ __metadata: languageName: node linkType: hard +"@rollup/pluginutils@npm:^4.0.0": + version: 4.2.1 + resolution: "@rollup/pluginutils@npm:4.2.1" + dependencies: + estree-walker: "npm:^2.0.1" + picomatch: "npm:^2.2.2" + checksum: 10/503a6f0a449e11a2873ac66cfdfb9a3a0b77ffa84c5cad631f5e4bc1063c850710e8d5cd5dab52477c0d66cda2ec719865726dbe753318cd640bab3fff7ca476 + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.18.1": version: 4.18.1 resolution: "@rollup/rollup-android-arm-eabi@npm:4.18.1" @@ -1469,6 +1499,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/merge-streams@npm:^2.1.0": + version: 2.3.0 + resolution: "@sindresorhus/merge-streams@npm:2.3.0" + checksum: 10/798bcb53cd1ace9df84fcdd1ba86afdc9e0cd84f5758d26ae9b1eefd8e8887e5fc30051132b9e74daf01bb41fa5a2faf1369361f83d76a3b3d7ee938058fd71c + languageName: node + linkType: hard + "@spruceid/siwe-parser@npm:2.1.0": version: 2.1.0 resolution: "@spruceid/siwe-parser@npm:2.1.0" @@ -1842,6 +1879,28 @@ __metadata: languageName: node linkType: hard +"@vercel/nft@npm:^0.26.2": + version: 0.26.5 + resolution: "@vercel/nft@npm:0.26.5" + dependencies: + "@mapbox/node-pre-gyp": "npm:^1.0.5" + "@rollup/pluginutils": "npm:^4.0.0" + acorn: "npm:^8.6.0" + acorn-import-attributes: "npm:^1.9.2" + async-sema: "npm:^3.1.1" + bindings: "npm:^1.4.0" + estree-walker: "npm:2.0.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.2" + node-gyp-build: "npm:^4.2.2" + resolve-from: "npm:^5.0.0" + bin: + nft: out/cli.js + checksum: 10/7571af955e3633109b92fbba705c036cbf0225b8f7a990aad444917ea3a7cb9c4e201bc086837d9c7a3650da9e1b5741e3b6dd6159485cf686ae4b228078db86 + languageName: node + linkType: hard + "@vitest/coverage-v8@npm:^2.0.5": version: 2.0.5 resolution: "@vitest/coverage-v8@npm:2.0.5" @@ -2029,6 +2088,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-attributes@npm:^1.9.2": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 10/8bfbfbb6e2467b9b47abb4d095df717ab64fce2525da65eabee073e85e7975fb3a176b6c8bba17c99a7d8ede283a10a590272304eb54a93c4aa1af9790d47a8b + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -2038,7 +2106,16 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.9.0": +"acorn-walk@npm:^8.3.2": + version: 8.3.3 + resolution: "acorn-walk@npm:8.3.3" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10/59701dcb7070679622ba8e9c7f37577b4935565747ca0fd7c1c3ad30b3f1b1b008276282664e323b5495eb49f77fa12d3816fd06dc68e18f90fbebe759f71450 + languageName: node + linkType: hard + +"acorn@npm:^8.11.0, acorn@npm:^8.11.3, acorn@npm:^8.6.0, acorn@npm:^8.9.0": version: 8.12.1 resolution: "acorn@npm:8.12.1" bin: @@ -2145,7 +2222,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.1.0": +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" checksum: 10/70fdf883b704d17a5dfc9cde206e698c16bcd74e7f196ab821511651aee4f9f76c9514bdfa6ca3a27b5e49138b89cb222a28caf3afe4567570139577f991df32 @@ -2183,6 +2260,16 @@ __metadata: languageName: node linkType: hard +"are-we-there-yet@npm:^2.0.0": + version: 2.0.0 + resolution: "are-we-there-yet@npm:2.0.0" + dependencies: + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10/ea6f47d14fc33ae9cbea3e686eeca021d9d7b9db83a306010dd04ad5f2c8b7675291b127d3fcbfcbd8fec26e47b3324ad5b469a6cc3733a582f2fe4e12fc6756 + languageName: node + linkType: hard + "are-we-there-yet@npm:^3.0.0": version: 3.0.0 resolution: "are-we-there-yet@npm:3.0.0" @@ -2226,6 +2313,13 @@ __metadata: languageName: node linkType: hard +"array-find-index@npm:^1.0.1": + version: 1.0.2 + resolution: "array-find-index@npm:1.0.2" + checksum: 10/aac128bf369e1ac6c06ff0bb330788371c0e256f71279fb92d745e26fb4b9db8920e485b4ec25e841c93146bf71a34dcdbcefa115e7e0f96927a214d237b7081 + languageName: node + linkType: hard + "array-includes@npm:^3.1.4": version: 3.1.7 resolution: "array-includes@npm:3.1.7" @@ -2273,6 +2367,13 @@ __metadata: languageName: node linkType: hard +"arrgv@npm:^1.0.2": + version: 1.0.2 + resolution: "arrgv@npm:1.0.2" + checksum: 10/470bbb406ea3b34810dd8b03c0b33282617a42d9fce0ab45d58596efefd042fc548eda49161fa8e3f607cbe9df90e7a67003a09043ab9081eff70f97c63dd0e2 + languageName: node + linkType: hard + "arrify@npm:^2.0.1": version: 2.0.1 resolution: "arrify@npm:2.0.1" @@ -2280,6 +2381,13 @@ __metadata: languageName: node linkType: hard +"arrify@npm:^3.0.0": + version: 3.0.0 + resolution: "arrify@npm:3.0.0" + checksum: 10/d6c6f3dad9571234f320e130d57fddb2cc283c87f2ac7df6c7005dffc5161b7bb9376f4be655ed257050330336e84afc4f3020d77696ad231ff580a94ae5aba6 + languageName: node + linkType: hard + "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -2287,6 +2395,13 @@ __metadata: languageName: node linkType: hard +"async-sema@npm:^3.1.1": + version: 3.1.1 + resolution: "async-sema@npm:3.1.1" + checksum: 10/ee0225c2e7b72ae76d66157499f61a881a050824019edc54fa6ec789313076790729557556fbbe237af0083173c66fb2edf1c9cc45c522c5f846b66c0a94ddb3 + languageName: node + linkType: hard + "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -2294,6 +2409,61 @@ __metadata: languageName: node linkType: hard +"ava@npm:^6.1.3": + version: 6.1.3 + resolution: "ava@npm:6.1.3" + dependencies: + "@vercel/nft": "npm:^0.26.2" + acorn: "npm:^8.11.3" + acorn-walk: "npm:^8.3.2" + ansi-styles: "npm:^6.2.1" + arrgv: "npm:^1.0.2" + arrify: "npm:^3.0.0" + callsites: "npm:^4.1.0" + cbor: "npm:^9.0.1" + chalk: "npm:^5.3.0" + chunkd: "npm:^2.0.1" + ci-info: "npm:^4.0.0" + ci-parallel-vars: "npm:^1.0.1" + cli-truncate: "npm:^4.0.0" + code-excerpt: "npm:^4.0.0" + common-path-prefix: "npm:^3.0.0" + concordance: "npm:^5.0.4" + currently-unhandled: "npm:^0.4.1" + debug: "npm:^4.3.4" + emittery: "npm:^1.0.1" + figures: "npm:^6.0.1" + globby: "npm:^14.0.0" + ignore-by-default: "npm:^2.1.0" + indent-string: "npm:^5.0.0" + is-plain-object: "npm:^5.0.0" + is-promise: "npm:^4.0.0" + matcher: "npm:^5.0.0" + memoize: "npm:^10.0.0" + ms: "npm:^2.1.3" + p-map: "npm:^7.0.1" + package-config: "npm:^5.0.0" + picomatch: "npm:^3.0.1" + plur: "npm:^5.1.0" + pretty-ms: "npm:^9.0.0" + resolve-cwd: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + strip-ansi: "npm:^7.1.0" + supertap: "npm:^3.0.1" + temp-dir: "npm:^3.0.0" + write-file-atomic: "npm:^5.0.1" + yargs: "npm:^17.7.2" + peerDependencies: + "@ava/typescript": "*" + peerDependenciesMeta: + "@ava/typescript": + optional: true + bin: + ava: entrypoints/cli.mjs + checksum: 10/89d2ba8b3b6f60e1c12094d84f0087455e43a4a4c7191ae33b462c653ec7343efc5475ffb9c93f1e27effd1fbd9e0e5b1392f7b70693246d0ba726c554bff830 + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -2334,6 +2504,22 @@ __metadata: languageName: node linkType: hard +"bindings@npm:^1.4.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10/593d5ae975ffba15fbbb4788fe5abd1e125afbab849ab967ab43691d27d6483751805d98cb92f7ac24a2439a8a8678cd0131c535d5d63de84e383b0ce2786133 + languageName: node + linkType: hard + +"blueimp-md5@npm:^2.10.0": + version: 2.19.0 + resolution: "blueimp-md5@npm:2.19.0" + checksum: 10/84dc5f86e0d890e50c067a52b85654ec02e56d019c6af88f5a2810b1353adfd37b09ae34f540ef5cd1f19fe0023cb69d0dd68877123044cc49fbf6e7ff4c9a18 + languageName: node + linkType: hard + "bn.js@npm:5.2.1, bn.js@npm:^5.2.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" @@ -2480,6 +2666,13 @@ __metadata: languageName: node linkType: hard +"callsites@npm:^4.1.0": + version: 4.2.0 + resolution: "callsites@npm:4.2.0" + checksum: 10/9a740675712076a38208967d7f80b525c9c7f4524c2af5d3936c5e278a601af0423a07e91f79679fec0546f3a52514d56969c6fe65f84d794e64a36b1f5eda8a + languageName: node + linkType: hard + "camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" @@ -2506,6 +2699,15 @@ __metadata: languageName: node linkType: hard +"cbor@npm:^9.0.1": + version: 9.0.2 + resolution: "cbor@npm:9.0.2" + dependencies: + nofilter: "npm:^3.1.0" + checksum: 10/a64f7d4dafed933adeafe7745e2ce9f39a2e669eba73db96de6bd1b39c2dbde4bdd51d0240beed179cc429a7dc8653c8d7c991c5addb9f4e0cee8cd167d87116 + languageName: node + linkType: hard + "chai@npm:^5.1.1": version: 5.1.1 resolution: "chai@npm:5.1.1" @@ -2616,6 +2818,27 @@ __metadata: languageName: node linkType: hard +"chunkd@npm:^2.0.1": + version: 2.0.1 + resolution: "chunkd@npm:2.0.1" + checksum: 10/bab8cc08c752a3648984385dc6f61d751e89dbeef648d22a3b661e1d470eaa0f5182f0b4303710f13ae83d2f85144f8eb2dde7a975861d9021b5c56b881f457b + languageName: node + linkType: hard + +"ci-info@npm:^4.0.0": + version: 4.0.0 + resolution: "ci-info@npm:4.0.0" + checksum: 10/c983bb7ff1b06648f4a47432201abbd58291147d8ab5043dbb5c03e1a0e3fb2347f40d29b66a3044f28ffeb5dade01ac35aa6bd4e7464a44d9a49a3d7532415a + languageName: node + linkType: hard + +"ci-parallel-vars@npm:^1.0.1": + version: 1.0.1 + resolution: "ci-parallel-vars@npm:1.0.1" + checksum: 10/ae859831f7e8e3585db731b8306c336616e37bd709dad1d7775ea4c0731aefd94741dabb48201edc6827d000008fd7fb72cb977967614ee2d99d6b499f0c35fe + languageName: node + linkType: hard + "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -2636,6 +2859,16 @@ __metadata: languageName: node linkType: hard +"cli-truncate@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-truncate@npm:4.0.0" + dependencies: + slice-ansi: "npm:^5.0.0" + string-width: "npm:^7.0.0" + checksum: 10/d5149175fd25ca985731bdeec46a55ec237475cf74c1a5e103baea696aceb45e372ac4acbaabf1316f06bd62e348123060f8191ffadfeedebd2a70a2a7fb199d + languageName: node + linkType: hard + "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -2665,6 +2898,15 @@ __metadata: languageName: node linkType: hard +"code-excerpt@npm:^4.0.0": + version: 4.0.0 + resolution: "code-excerpt@npm:4.0.0" + dependencies: + convert-to-spaces: "npm:^2.0.1" + checksum: 10/d57137d8f4825879283a828cc02a1115b56858dc54ed06c625c8f67d6685d1becd2fbaa7f0ab19ecca1f5cca03f8c97bbc1f013cab40261e4d3275032e65efe9 + languageName: node + linkType: hard + "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -2697,7 +2939,7 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.3": +"color-support@npm:^1.1.2, color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: @@ -2729,6 +2971,13 @@ __metadata: languageName: node linkType: hard +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: 10/09c180e8d8495d42990d617f4d4b7522b5da20f6b236afe310192d401d1da8147a7835ae1ea37797ba0c2238ef3d06f3492151591451df34539fdb4b2630f2b3 + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -2736,7 +2985,23 @@ __metadata: languageName: node linkType: hard -"console-control-strings@npm:^1.1.0": +"concordance@npm:^5.0.4": + version: 5.0.4 + resolution: "concordance@npm:5.0.4" + dependencies: + date-time: "npm:^3.1.0" + esutils: "npm:^2.0.3" + fast-diff: "npm:^1.2.0" + js-string-escape: "npm:^1.0.1" + lodash: "npm:^4.17.15" + md5-hex: "npm:^3.0.1" + semver: "npm:^7.3.2" + well-known-symbols: "npm:^2.0.0" + checksum: 10/156bb786746c2f0f821fd8339da2e38f4307e30ad9c078c24e636892a3c98ae5fcabf8812ff4baa54f1fcd4d88e9efe3050279d928abd524f48d551be26814c2 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 10/27b5fa302bc8e9ae9e98c03c66d76ca289ad0c61ce2fe20ab288d288bee875d217512d2edb2363fc83165e88f1c405180cf3f5413a46e51b4fe1a004840c6cdb @@ -2750,6 +3015,13 @@ __metadata: languageName: node linkType: hard +"convert-to-spaces@npm:^2.0.1": + version: 2.0.1 + resolution: "convert-to-spaces@npm:2.0.1" + checksum: 10/bbb324e5916fe9866f65c0ff5f9c1ea933764d0bdb09fccaf59542e40545ed483db6b2339c6d9eb56a11965a58f1a6038f3174f0e2fb7601343c7107ca5e2751 + languageName: node + linkType: hard + "cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" @@ -2821,6 +3093,15 @@ __metadata: languageName: node linkType: hard +"currently-unhandled@npm:^0.4.1": + version: 0.4.1 + resolution: "currently-unhandled@npm:0.4.1" + dependencies: + array-find-index: "npm:^1.0.1" + checksum: 10/53fb803e582737bdb5de6b150f0924dd9abf7be606648b4c2871db1c682bf288e248e8066ef10548979732a680cfb6c047294e3877846c2cf2f8d40437d8a741 + languageName: node + linkType: hard + "data-urls@npm:^5.0.0": version: 5.0.0 resolution: "data-urls@npm:5.0.0" @@ -2831,6 +3112,15 @@ __metadata: languageName: node linkType: hard +"date-time@npm:^3.1.0": + version: 3.1.0 + resolution: "date-time@npm:3.1.0" + dependencies: + time-zone: "npm:^1.0.0" + checksum: 10/f9cfcd1b15dfeabab15c0b9d18eb9e4e2d9d4371713564178d46a8f91ad577a290b5178b80050718d02d9c0cf646f8a875011e12d1ed05871e9f72c72c8a8fe6 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5": version: 4.3.5 resolution: "debug@npm:4.3.5" @@ -2993,6 +3283,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.0.0": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 10/b4ea018d623e077bd395f168a9e81db77370dde36a5b01d067f2ad7989924a81d31cb547ff764acb2aa25d50bb7fdde0b0a93bec02212b0cb430621623246d39 + languageName: node + linkType: hard + "detect-newline@npm:3.1.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -3086,6 +3383,20 @@ __metadata: languageName: node linkType: hard +"emittery@npm:^1.0.1": + version: 1.0.3 + resolution: "emittery@npm:1.0.3" + checksum: 10/5ba4fc3aff76e299e1b3d97ebf22df1b5813f6ae231ba023f7edf9a75c6547dff63fc0445d80291b44044486958ab79a8ca285d3e6fd66f3d6aacaa14d56aa24 + languageName: node + linkType: hard + +"emoji-regex@npm:^10.3.0": + version: 10.3.0 + resolution: "emoji-regex@npm:10.3.0" + checksum: 10/b9b084ebe904f13bb4b66ee4c29fb41a7a4a1165adcc33c1ce8056c0194b882cc91ebdc782f1a779b5d7ea7375c5064643a7734893d7c657b44c5c6b9d7bf1e7 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -3318,6 +3629,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10/9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + languageName: node + linkType: hard + "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -3325,6 +3643,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 10/20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e + languageName: node + linkType: hard + "eslint-config-prettier@npm:^8.8.0": version: 8.8.0 resolution: "eslint-config-prettier@npm:8.8.0" @@ -3632,7 +3957,7 @@ __metadata: languageName: node linkType: hard -"estree-walker@npm:^2.0.2": +"estree-walker@npm:2.0.2, estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" checksum: 10/b02109c5d46bc2ed47de4990eef770f7457b1159a229f0999a09224d2b85ffeed2d7679cffcff90aeb4448e94b0168feb5265b209cdec29aad50a3d6e93d21e2 @@ -3648,7 +3973,7 @@ __metadata: languageName: node linkType: hard -"esutils@npm:^2.0.2": +"esutils@npm:^2.0.2, esutils@npm:^2.0.3": version: 2.0.3 resolution: "esutils@npm:2.0.3" checksum: 10/b23acd24791db11d8f65be5ea58fd9a6ce2df5120ae2da65c16cfc5331ff59d5ac4ef50af66cd4bde238881503ec839928a0135b99a036a9cdfa22d17fd56cdb @@ -3756,7 +4081,14 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9": +"fast-diff@npm:^1.2.0": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10/9e57415bc69cd6efcc720b3b8fe9fdaf42dcfc06f86f0f45378b1fa512598a8aac48aa3928c8751d58e2f01bb4ba4f07e4f3d9bc0d57586d45f1bd1e872c6cde + languageName: node + linkType: hard + +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -3817,6 +4149,15 @@ __metadata: languageName: node linkType: hard +"figures@npm:^6.0.1": + version: 6.1.0 + resolution: "figures@npm:6.1.0" + dependencies: + is-unicode-supported: "npm:^2.0.0" + checksum: 10/9822d13630bee8e6a9f2da866713adf13854b07e0bfde042defa8bba32d47a1c0b2afa627ce73837c674cf9a5e3edce7e879ea72cb9ea7960b2390432d8e1167 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -3826,6 +4167,13 @@ __metadata: languageName: node linkType: hard +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10/b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -3835,6 +4183,13 @@ __metadata: languageName: node linkType: hard +"find-up-simple@npm:^1.0.0": + version: 1.0.0 + resolution: "find-up-simple@npm:1.0.0" + checksum: 10/91c3d51c1111b5eb4e6e6d71d21438f6571a37a69dc288d4222b98996756e2f472fa5393a4dddb5e1a84929405d87e86f4bdce798ba84ee513b79854960ec140 + languageName: node + linkType: hard + "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -3973,6 +4328,23 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^3.0.0": + version: 3.0.2 + resolution: "gauge@npm:3.0.2" + dependencies: + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.2" + console-control-strings: "npm:^1.0.0" + has-unicode: "npm:^2.0.1" + object-assign: "npm:^4.1.1" + signal-exit: "npm:^3.0.0" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.2" + checksum: 10/46df086451672a5fecd58f7ec86da74542c795f8e00153fbef2884286ce0e86653c3eb23be2d0abb0c4a82b9b2a9dec3b09b6a1cf31c28085fa0376599a26589 + languageName: node + linkType: hard + "gauge@npm:^4.0.3": version: 4.0.4 resolution: "gauge@npm:4.0.4" @@ -4003,6 +4375,13 @@ __metadata: languageName: node linkType: hard +"get-east-asian-width@npm:^1.0.0": + version: 1.2.0 + resolution: "get-east-asian-width@npm:1.2.0" + checksum: 10/c9b280e7c7c67fb89fa17e867c4a9d1c9f1321aba2a9ee27bff37fb6ca9552bccda328c70a80c1f83a0e39ba1b7e3427e60f47823402d19e7a41b83417ec047a + languageName: node + linkType: hard + "get-func-name@npm:^2.0.1": version: 2.0.2 resolution: "get-func-name@npm:2.0.2" @@ -4185,6 +4564,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^14.0.0": + version: 14.0.2 + resolution: "globby@npm:14.0.2" + dependencies: + "@sindresorhus/merge-streams": "npm:^2.1.0" + fast-glob: "npm:^3.3.2" + ignore: "npm:^5.2.4" + path-type: "npm:^5.0.0" + slash: "npm:^5.1.0" + unicorn-magic: "npm:^0.1.0" + checksum: 10/67660da70fc1223f7170c1a62ba6c373385e9e39765d952b6518606dec15ed8c7958e9dae6ba5752a31dbc1e9126f146938b830ad680fe794141734ffc3fbb75 + languageName: node + linkType: hard + "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -4201,7 +4594,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 @@ -4426,6 +4819,13 @@ __metadata: languageName: node linkType: hard +"ignore-by-default@npm:^2.1.0": + version: 2.1.0 + resolution: "ignore-by-default@npm:2.1.0" + checksum: 10/2b2df4622b6a07a3e91893987be8f060dc553f7736b67e72aa2312041c450a6fa8371733d03c42f45a02e47ec824e961c2fba63a3d94fc59cbd669220a5b0d7a + languageName: node + linkType: hard + "ignore@npm:^5.1.1, ignore@npm:^5.1.8, ignore@npm:^5.2.0": version: 5.2.1 resolution: "ignore@npm:5.2.1" @@ -4433,6 +4833,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^5.2.4": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 + languageName: node + linkType: hard + "immer@npm:^9.0.6": version: 9.0.21 resolution: "immer@npm:9.0.21" @@ -4471,6 +4878,13 @@ __metadata: languageName: node linkType: hard +"indent-string@npm:^5.0.0": + version: 5.0.0 + resolution: "indent-string@npm:5.0.0" + checksum: 10/e466c27b6373440e6d84fbc19e750219ce25865cb82d578e41a6053d727e5520dc5725217d6eb1cc76005a1bb1696a0f106d84ce7ebda3033b963a38583fb3b3 + languageName: node + linkType: hard + "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" @@ -4525,6 +4939,13 @@ __metadata: languageName: node linkType: hard +"irregular-plurals@npm:^3.3.0": + version: 3.5.0 + resolution: "irregular-plurals@npm:3.5.0" + checksum: 10/27f04e66402264b78251c03973dd4866aba58b851579b2f1870f3610494a163c20c5161a3eae8fdd49a61a5379ee611460a1781aadc891ce0203bcd7a52e4850 + languageName: node + linkType: hard + "is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": version: 3.0.2 resolution: "is-array-buffer@npm:3.0.2" @@ -4605,6 +5026,13 @@ __metadata: languageName: node linkType: hard +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 10/8ae89bf5057bdf4f57b346fb6c55e9c3dd2549983d54191d722d5c739397a903012cc41a04ee3403fd872e811243ef91a7c5196da7b5841dc6b6aae31a264a8d + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -4663,6 +5091,13 @@ __metadata: languageName: node linkType: hard +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 10/e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c + languageName: node + linkType: hard + "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" @@ -4670,6 +5105,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:^4.0.0": + version: 4.0.0 + resolution: "is-promise@npm:4.0.0" + checksum: 10/0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a + languageName: node + linkType: hard + "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -4730,6 +5172,13 @@ __metadata: languageName: node linkType: hard +"is-unicode-supported@npm:^2.0.0": + version: 2.0.0 + resolution: "is-unicode-supported@npm:2.0.0" + checksum: 10/000b80639dedaf59a385f1c0a57f97a4d1435e0723716f24cc19ad94253a7a0a9f838bdc9ac49b10a29ac93b01f52ae9b2ed358a8876caf1eb74d73b4ede92b2 + languageName: node + linkType: hard + "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -4832,6 +5281,13 @@ __metadata: languageName: node linkType: hard +"js-string-escape@npm:^1.0.1": + version: 1.0.1 + resolution: "js-string-escape@npm:1.0.1" + checksum: 10/f11e0991bf57e0c183b55c547acec85bd2445f043efc9ea5aa68b41bd2a3e7d3ce94636cb233ae0d84064ba4c1a505d32e969813c5b13f81e7d4be12c59256fe + languageName: node + linkType: hard + "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -4839,7 +5295,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.14.0": +"js-yaml@npm:^3.14.0, js-yaml@npm:^3.14.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -5011,6 +5467,13 @@ __metadata: languageName: node linkType: hard +"load-json-file@npm:^7.0.1": + version: 7.0.1 + resolution: "load-json-file@npm:7.0.1" + checksum: 10/a560288da6891778321ef993e4bdbdf05374a4f3a3aeedd5ba6b64672798c830d748cfc59a2ec9891a3db30e78b3d04172e0dcb0d4828168289a393147ca0e74 + languageName: node + linkType: hard + "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -5027,7 +5490,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.20, lodash@npm:^4.17.21": +"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -5127,6 +5590,15 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^3.1.0": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: "npm:^6.0.0" + checksum: 10/484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + languageName: node + linkType: hard + "make-dir@npm:^4.0.0": version: 4.0.0 resolution: "make-dir@npm:4.0.0" @@ -5222,6 +5694,33 @@ __metadata: languageName: node linkType: hard +"matcher@npm:^5.0.0": + version: 5.0.0 + resolution: "matcher@npm:5.0.0" + dependencies: + escape-string-regexp: "npm:^5.0.0" + checksum: 10/28f191c2d23fee0f6f32fd0181d9fe173b0ab815a919edba55605438a2f9fa40372e002574a1b17add981b0a8669c75bc6194318d065ed2dceffd8b160c38118 + languageName: node + linkType: hard + +"md5-hex@npm:^3.0.1": + version: 3.0.1 + resolution: "md5-hex@npm:3.0.1" + dependencies: + blueimp-md5: "npm:^2.10.0" + checksum: 10/4af5252998a525a01fc899b0df222a505ca6400f9de58d2fed26473ac91919331436a84cc5bf376a5fe1b1b45d3057a214ddaf86668b608e9be26221ca1585cc + languageName: node + linkType: hard + +"memoize@npm:^10.0.0": + version: 10.0.0 + resolution: "memoize@npm:10.0.0" + dependencies: + mimic-function: "npm:^5.0.0" + checksum: 10/2239451cc0b26f9e99e6107c2a24f069b8ccd98877b4fe4f28fe3a1e977521fe23a53fa7fb5e7ad485577e0f30ab61aed97cf29facbc701b88facf27b8f12ce3 + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -5243,7 +5742,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": version: 4.0.7 resolution: "micromatch@npm:4.0.7" dependencies: @@ -5283,6 +5782,13 @@ __metadata: languageName: node linkType: hard +"mimic-function@npm:^5.0.0": + version: 5.0.1 + resolution: "mimic-function@npm:5.0.1" + checksum: 10/eb5893c99e902ccebbc267c6c6b83092966af84682957f79313311edb95e8bb5f39fb048d77132b700474d1c86d90ccc211e99bae0935447a4834eb4c882982c + languageName: node + linkType: hard + "minimatch@npm:^10.0.0": version: 10.0.1 resolution: "minimatch@npm:10.0.1" @@ -5459,7 +5965,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -5521,6 +6027,31 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10/b24f8a3dc937f388192e59bcf9d0857d7b6940a2496f328381641cb616efccc9866e89ec43f2ec956bbd6c3d3ee05524ce77fe7b29ccd34692b3a16f237d6676 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.2.2": + version: 4.8.1 + resolution: "node-gyp-build@npm:4.8.1" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10/b9297770f96a92e5f2b854f3fd5e4bd418df81d7785a81ab60cec5cf2e5e72dc2c3319808978adc572cfa3885e6b12338cb5f4034bed2cab35f0d76a4b75ccdf + languageName: node + linkType: hard + "node-gyp@npm:^10.0.0": version: 10.1.0 resolution: "node-gyp@npm:10.1.0" @@ -5568,6 +6099,13 @@ __metadata: languageName: node linkType: hard +"nofilter@npm:^3.1.0": + version: 3.1.0 + resolution: "nofilter@npm:3.1.0" + checksum: 10/f63d87231dfda4b783db17d75b15aac948f78e65f4f1043096ef441147f6667ff74cd4b3f57ada5dbe240be282d3e9838558ac863a66cb04ef25fff7b2b4be4e + languageName: node + linkType: hard + "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" @@ -5667,6 +6205,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^5.0.1": + version: 5.0.1 + resolution: "npmlog@npm:5.0.1" + dependencies: + are-we-there-yet: "npm:^2.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^3.0.0" + set-blocking: "npm:^2.0.0" + checksum: 10/f42c7b9584cdd26a13c41a21930b6f5912896b6419ab15be88cc5721fc792f1c3dd30eb602b26ae08575694628ba70afdcf3675d86e4f450fc544757e52726ec + languageName: node + linkType: hard + "npmlog@npm:^6.0.0": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -5695,6 +6245,13 @@ __metadata: languageName: node linkType: hard +"object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + "object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0": version: 1.13.1 resolution: "object-inspect@npm:1.13.1" @@ -5800,6 +6357,23 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.1": + version: 7.0.2 + resolution: "p-map@npm:7.0.2" + checksum: 10/b4a590038b991c17b9c1484aa8c24cb9d3aa8a6167d02b9f9459c9200c7d392202a860c95b6dcd190d51f5f083ed256b32f9cb5976785022b0111bab853ec58b + languageName: node + linkType: hard + +"package-config@npm:^5.0.0": + version: 5.0.0 + resolution: "package-config@npm:5.0.0" + dependencies: + find-up-simple: "npm:^1.0.0" + load-json-file: "npm:^7.0.1" + checksum: 10/dfff5264c51a0dad7af9a55b02e3b8b6e457075e9c4f02d0ffacfeee9af4dd5db2b566dae41486412161292b8741483cd89d5a8404a5742fc54d718dadacac4a + languageName: node + linkType: hard + "package-json-from-dist@npm:^1.0.0": version: 1.0.0 resolution: "package-json-from-dist@npm:1.0.0" @@ -5828,6 +6402,13 @@ __metadata: languageName: node linkType: hard +"parse-ms@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-ms@npm:4.0.0" + checksum: 10/673c801d9f957ff79962d71ed5a24850163f4181a90dd30c4e3666b3a804f53b77f1f0556792e8b2adbb5d58757907d1aa51d7d7dc75997c2a56d72937cbc8b7 + languageName: node + linkType: hard + "parse5-htmlparser2-tree-adapter@npm:^7.0.0": version: 7.0.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" @@ -5909,6 +6490,13 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^5.0.0": + version: 5.0.0 + resolution: "path-type@npm:5.0.0" + checksum: 10/15ec24050e8932c2c98d085b72cfa0d6b4eeb4cbde151a0a05726d8afae85784fc5544f733d8dfc68536587d5143d29c0bd793623fad03d7e61cc00067291cd5 + languageName: node + linkType: hard + "pathe@npm:^1.1.2": version: 1.1.2 resolution: "pathe@npm:1.1.2" @@ -5930,13 +6518,20 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc languageName: node linkType: hard +"picomatch@npm:^3.0.1": + version: 3.0.1 + resolution: "picomatch@npm:3.0.1" + checksum: 10/65ac837fedbd0640586f7c214f6c7481e1e12f41cdcd22a95eb6a2914d1773707ed0f0b5bd2d1e39b5ec7860b43a4c9150152332a3884cd8dd1d419b2a2fa5b5 + languageName: node + linkType: hard + "please-upgrade-node@npm:^3.2.0": version: 3.2.0 resolution: "please-upgrade-node@npm:3.2.0" @@ -5946,6 +6541,15 @@ __metadata: languageName: node linkType: hard +"plur@npm:^5.1.0": + version: 5.1.0 + resolution: "plur@npm:5.1.0" + dependencies: + irregular-plurals: "npm:^3.3.0" + checksum: 10/57e400dc4b926768fb0abab7f8688fe17e85673712134546e7beaaee188bae7e0504976e847d7e41d0d6103ff2fd61204095f03c2a45de19a8bad15aecb45cc1 + languageName: node + linkType: hard + "pony-cause@npm:^2.1.10": version: 2.1.11 resolution: "pony-cause@npm:2.1.11" @@ -6003,6 +6607,15 @@ __metadata: languageName: node linkType: hard +"pretty-ms@npm:^9.0.0": + version: 9.1.0 + resolution: "pretty-ms@npm:9.1.0" + dependencies: + parse-ms: "npm:^4.0.0" + checksum: 10/3622a8999e4b2aa05ff64bf48c7e58143b3ede6e3434f8ce5588def90ebcf6af98edf79532344c4c9e14d5ad25deb3f0f5ca9f9b91e5d2d1ac26dad9cf428fc0 + languageName: node + linkType: hard + "proc-log@npm:^3.0.0": version: 3.0.0 resolution: "proc-log@npm:3.0.0" @@ -6174,6 +6787,15 @@ __metadata: languageName: node linkType: hard +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -6181,6 +6803,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10/be18a5e4d76dd711778664829841cde690971d02b6cbae277735a09c1c28f407b99ef6ef3cd585a1e6546d4097b28df40ed32c4a287b9699dcf6d7f208495e23 + languageName: node + linkType: hard + "resolve@npm:1.22.8, resolve@npm:^1.18.1, resolve@npm:^1.22.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" @@ -6413,7 +7042,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -6431,6 +7060,15 @@ __metadata: languageName: node linkType: hard +"serialize-error@npm:^7.0.1": + version: 7.0.1 + resolution: "serialize-error@npm:7.0.1" + dependencies: + type-fest: "npm:^0.13.1" + checksum: 10/e0aba4dca2fc9fe74ae1baf38dbd99190e1945445a241ba646290f2176cdb2032281a76443b02ccf0caf30da5657d510746506368889a593b9835a497fc0732e + languageName: node + linkType: hard + "ses@npm:^1.1.0, ses@npm:^1.5.0, ses@npm:^1.7.0": version: 1.7.0 resolution: "ses@npm:1.7.0" @@ -6516,7 +7154,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -6546,6 +7184,23 @@ __metadata: languageName: node linkType: hard +"slash@npm:^5.1.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 10/2c41ec6fb1414cd9bba0fa6b1dd00e8be739e3fe85d079c69d4b09ca5f2f86eafd18d9ce611c0c0f686428638a36c272a6ac14799146a8295f259c10cc45cde4 + languageName: node + linkType: hard + +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: "npm:^6.0.0" + is-fullwidth-code-point: "npm:^4.0.0" + checksum: 10/7e600a2a55e333a21ef5214b987c8358fe28bfb03c2867ff2cbf919d62143d1812ac27b4297a077fdaf27a03da3678e49551c93e35f9498a3d90221908a1180e + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -6695,6 +7350,15 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.6": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10/cdc988acbc99075b4b036ac6014e5f1e9afa7e564482b687da6384eee6a1909d7eaffde85b0a17ffbe186c5247faf6c2b7544e802109f63b72c7be69b13151bb + languageName: node + linkType: hard + "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -6731,6 +7395,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^7.0.0": + version: 7.2.0 + resolution: "string-width@npm:7.2.0" + dependencies: + emoji-regex: "npm:^10.3.0" + get-east-asian-width: "npm:^1.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10/42f9e82f61314904a81393f6ef75b832c39f39761797250de68c041d8ba4df2ef80db49ab6cd3a292923a6f0f409b8c9980d120f7d32c820b4a8a84a2598a295 + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.8": version: 1.2.8 resolution: "string.prototype.trim@npm:1.2.8" @@ -6782,7 +7457,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.0.1": +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" dependencies: @@ -6835,6 +7510,18 @@ __metadata: languageName: node linkType: hard +"supertap@npm:^3.0.1": + version: 3.0.1 + resolution: "supertap@npm:3.0.1" + dependencies: + indent-string: "npm:^5.0.0" + js-yaml: "npm:^3.14.1" + serialize-error: "npm:^7.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10/2074334f793eef87a960b2dbee7e5106a9002ba83b2df507df6fe70b0014430e54f145e5ef6e9de507d413c2aadbf569b9f4c1dd600725ea295b9dec8bd6aaa3 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -6891,6 +7578,13 @@ __metadata: languageName: node linkType: hard +"temp-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "temp-dir@npm:3.0.0" + checksum: 10/577211e995d1d584dd60f1469351d45e8a5b4524e4a9e42d3bdd12cfde1d0bb8f5898311bef24e02aaafb69514c1feb58c7b4c33dcec7129da3b0861a4ca935b + languageName: node + linkType: hard + "test-exclude@npm:^7.0.1": version: 7.0.1 resolution: "test-exclude@npm:7.0.1" @@ -6909,6 +7603,13 @@ __metadata: languageName: node linkType: hard +"time-zone@npm:^1.0.0": + version: 1.0.0 + resolution: "time-zone@npm:1.0.0" + checksum: 10/e46f5a69b8c236dcd8e91e29d40d4e7a3495ed4f59888c3f84ce1d9678e20461421a6ba41233509d47dd94bc18f1a4377764838b21b584663f942b3426dcbce8 + languageName: node + linkType: hard + "tinybench@npm:^2.8.0": version: 2.8.0 resolution: "tinybench@npm:2.8.0" @@ -6974,6 +7675,13 @@ __metadata: languageName: node linkType: hard +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10/8f1f5aa6cb232f9e1bdc86f485f916b7aa38caee8a778b378ffec0b70d9307873f253f5cbadbe2955ece2ac5c83d0dc14a77513166ccd0a0c7fe197e21396695 + languageName: node + linkType: hard + "ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" @@ -7050,6 +7758,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.13.1": + version: 0.13.1 + resolution: "type-fest@npm:0.13.1" + checksum: 10/11e9476dc85bf97a71f6844fb67ba8e64a4c7e445724c0f3bd37eb2ddf4bc97c1dc9337bd880b28bce158de1c0cb275c2d03259815a5bf64986727197126ab56 + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -7195,6 +7910,13 @@ __metadata: languageName: node linkType: hard +"unicorn-magic@npm:^0.1.0": + version: 0.1.0 + resolution: "unicorn-magic@npm:0.1.0" + checksum: 10/9b4d0e9809807823dc91d0920a4a4c0cff2de3ebc54ee87ac1ee9bc75eafd609b09d1f14495e0173aef26e01118706196b6ab06a75fe0841028b3983a8af313f + languageName: node + linkType: hard + "unique-filename@npm:^1.1.1": version: 1.1.1 resolution: "unique-filename@npm:1.1.1" @@ -7484,6 +8206,13 @@ __metadata: languageName: node linkType: hard +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10/b65b9f8d6854572a84a5c69615152b63371395f0c5dcd6729c45789052296df54314db2bc3e977df41705eacb8bc79c247cee139a63fa695192f95816ed528ad + languageName: node + linkType: hard + "webidl-conversions@npm:^7.0.0": version: 7.0.0 resolution: "webidl-conversions@npm:7.0.0" @@ -7491,6 +8220,13 @@ __metadata: languageName: node linkType: hard +"well-known-symbols@npm:^2.0.0": + version: 2.0.0 + resolution: "well-known-symbols@npm:2.0.0" + checksum: 10/4f54bbc3012371cb4d228f436891b8e7536d34ac61a57541890257e96788608e096231e0121ac24d08ef2f908b3eb2dc0adba35023eaeb2a7df655da91415402 + languageName: node + linkType: hard + "whatwg-encoding@npm:^3.1.1": version: 3.1.1 resolution: "whatwg-encoding@npm:3.1.1" @@ -7517,6 +8253,16 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10/f95adbc1e80820828b45cc671d97da7cd5e4ef9deb426c31bcd5ab00dc7103042291613b3ef3caec0a2335ed09e0d5ed026c940755dbb6d404e2b27f940fdf07 + languageName: node + linkType: hard + "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -7577,7 +8323,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -7615,7 +8361,7 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^5.0.0": +"write-file-atomic@npm:^5.0.0, write-file-atomic@npm:^5.0.1": version: 5.0.1 resolution: "write-file-atomic@npm:5.0.1" dependencies: From b989843c1aa711fd4ae29c62c4b7378275746a9f Mon Sep 17 00:00:00 2001 From: grypez <143971198+grypez@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:03:18 -0500 Subject: [PATCH 2/6] refactor(shims): Bundle dependencies directly into dist/endoify --- package.json | 1 + packages/shims/package.json | 3 +- packages/shims/scripts/bundle.js | 37 +++++++++---------- .../src/{endoify.mjs => endoify-footer.mjs} | 3 -- yarn.lock | 18 +++++++++ 5 files changed, 39 insertions(+), 23 deletions(-) rename packages/shims/src/{endoify.mjs => endoify-footer.mjs} (76%) diff --git a/package.json b/package.json index f38364c1d..904c86e43 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.3.0", "rimraf": "^6.0.1", + "streamcat": "^2.6.5", "typedoc": "^0.24.8", "typescript": "~4.9.5", "vite": "^5.3.5", diff --git a/packages/shims/package.json b/packages/shims/package.json index 620d955b3..bc7b445ff 100644 --- a/packages/shims/package.json +++ b/packages/shims/package.json @@ -27,7 +27,7 @@ "clean": "rimraf --glob ./dist './*.tsbuildinfo'", "publish:preview": "yarn npm publish --tag preview", "test": "yarn test:bundles && vitest run --config vitest.config.ts --passWithNoTests", - "test:bundles": "ava", + "test:bundles": "ava ./test", "test:clean": "yarn test --no-cache --coverage.clean", "test:dev": "yarn test --coverage false", "test:verbose": "yarn test --reporter verbose", @@ -44,6 +44,7 @@ "deepmerge": "^4.3.1", "mkdirp": "^3.0.1", "rimraf": "^6.0.1", + "streamcat": "^2.6.5", "vitest": "^2.0.5" }, "engines": { diff --git a/packages/shims/scripts/bundle.js b/packages/shims/scripts/bundle.js index 37e54b704..09448b26f 100644 --- a/packages/shims/scripts/bundle.js +++ b/packages/shims/scripts/bundle.js @@ -1,34 +1,33 @@ import 'ses'; import '@endo/lockdown/commit.js'; - -import { copyFile } from 'fs/promises'; -import { mkdirp } from 'mkdirp'; -import path from 'path'; +import { createReadStream, createWriteStream } from 'fs'; // TODO: Bundle the eventual send shim using bundle-source after the next endo release. // import bundleSource from '@endo/bundle-source'; +import { mkdirp } from 'mkdirp'; +import path from 'path'; import { rimraf } from 'rimraf'; +import streamCat from 'streamcat'; console.log('Bundling shims...'); const rootDir = path.resolve(import.meta.dirname, '..'); -const src = path.resolve(rootDir, 'src'); -const dist = path.resolve(rootDir, 'dist'); +const repoNodeModules = path.resolve(rootDir, '../../node_modules'); +const pkgSrc = path.resolve(rootDir, 'src'); +const pkgDist = path.resolve(rootDir, 'dist'); +const srcPaths = [ + path.resolve(repoNodeModules, 'ses/dist/ses.mjs'), + path.resolve(pkgSrc, 'eventual-send.mjs'), + path.resolve(pkgSrc, 'endoify-footer.mjs'), +]; // const eventualSendSrc = path.resolve(rootDir, '../../node_modules/@endo/eventual-send/shim.js'); +// const { eventualSendSrcBundled } = await bundleSource(eventualSendSrc, { format: 'endoScript' }); -const fileNames = { - endoify: 'endoify.mjs', - eventualSend: 'eventual-send.mjs', - lockdown: 'apply-lockdown.mjs', -}; - -await mkdirp(dist); -await rimraf(`${dist}/*`); - -for (const fileName of Object.values(fileNames)) { - await copyFile(path.resolve(src, fileName), path.resolve(dist, fileName)); -} +await mkdirp(pkgDist); +await rimraf(`${pkgDist}/*`); -// const { source } = await bundleSource(eventualSendSrc, { format: 'endoScript' }); +await streamCat(srcPaths.map((filePath) => createReadStream(filePath))).pipe( + createWriteStream(path.resolve(pkgDist, 'endoify.mjs')), +); console.log('Success!'); diff --git a/packages/shims/src/endoify.mjs b/packages/shims/src/endoify-footer.mjs similarity index 76% rename from packages/shims/src/endoify.mjs rename to packages/shims/src/endoify-footer.mjs index 824aa9c32..c8fec5583 100644 --- a/packages/shims/src/endoify.mjs +++ b/packages/shims/src/endoify-footer.mjs @@ -1,6 +1,3 @@ -import './ses.mjs'; -import './eventual-send.mjs'; - lockdown({ consoleTaming: 'unsafe', errorTaming: 'unsafe', diff --git a/yarn.lock b/yarn.lock index 7b0a99ffa..20177c53c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1300,6 +1300,7 @@ __metadata: prettier: "npm:^2.7.1" prettier-plugin-packagejson: "npm:^2.3.0" rimraf: "npm:^6.0.1" + streamcat: "npm:^2.6.5" typedoc: "npm:^0.24.8" typescript: "npm:~4.9.5" vite: "npm:^5.3.5" @@ -1320,6 +1321,7 @@ __metadata: mkdirp: "npm:^3.0.1" rimraf: "npm:^6.0.1" ses: "npm:^1.7.0" + streamcat: "npm:^2.6.5" vitest: "npm:^2.0.5" languageName: unknown linkType: soft @@ -6654,6 +6656,13 @@ __metadata: languageName: node linkType: hard +"promisebuffer@npm:^1.0.0": + version: 1.0.0 + resolution: "promisebuffer@npm:1.0.0" + checksum: 10/c37ba6870333b197c2397334a13349bacb22c45227f01a0ab15fef43618eb385475a1c7aafcfa6237d399794a5957c22c7d3be2e4129c789fe169c88609c0120 + languageName: node + linkType: hard + "psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" @@ -7373,6 +7382,15 @@ __metadata: languageName: node linkType: hard +"streamcat@npm:^2.6.5": + version: 2.6.5 + resolution: "streamcat@npm:2.6.5" + dependencies: + promisebuffer: "npm:^1.0.0" + checksum: 10/989345c463c22ab28a7cb8f7881bc45239e86b2b4094e6a59b541388115a75cc9d3b58defc0625edd26bf85e9366b57ef5d3c978cf48d8c4dacc910463a50e5a + languageName: node + linkType: hard + "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" From 86c70cb489b9e3b35f76678deec5bcc7869974c7 Mon Sep 17 00:00:00 2001 From: grypez <143971198+grypez@users.noreply.github.com> Date: Thu, 15 Aug 2024 23:50:28 -0400 Subject: [PATCH 3/6] test(shims): Build before test --- packages/shims/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shims/package.json b/packages/shims/package.json index bc7b445ff..c40af4664 100644 --- a/packages/shims/package.json +++ b/packages/shims/package.json @@ -27,7 +27,7 @@ "clean": "rimraf --glob ./dist './*.tsbuildinfo'", "publish:preview": "yarn npm publish --tag preview", "test": "yarn test:bundles && vitest run --config vitest.config.ts --passWithNoTests", - "test:bundles": "ava ./test", + "test:bundles": "yarn build && ava ./test", "test:clean": "yarn test --no-cache --coverage.clean", "test:dev": "yarn test --coverage false", "test:verbose": "yarn test --reporter verbose", From c7e1bb15033b6aecf6fb2e70504a8d6b37627966 Mon Sep 17 00:00:00 2001 From: grypez <143971198+grypez@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:30:41 -0400 Subject: [PATCH 4/6] remove streamcat dep --- package.json | 1 - packages/shims/package.json | 4 +--- packages/shims/scripts/bundle.js | 14 +++++++++----- yarn.lock | 18 ------------------ 4 files changed, 10 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 904c86e43..f38364c1d 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,6 @@ "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.3.0", "rimraf": "^6.0.1", - "streamcat": "^2.6.5", "typedoc": "^0.24.8", "typescript": "~4.9.5", "vite": "^5.3.5", diff --git a/packages/shims/package.json b/packages/shims/package.json index c40af4664..9abdcef49 100644 --- a/packages/shims/package.json +++ b/packages/shims/package.json @@ -26,8 +26,7 @@ "changelog:validate": "../../scripts/validate-changelog.sh @ocap/shims", "clean": "rimraf --glob ./dist './*.tsbuildinfo'", "publish:preview": "yarn npm publish --tag preview", - "test": "yarn test:bundles && vitest run --config vitest.config.ts --passWithNoTests", - "test:bundles": "yarn build && ava ./test", + "test": "yarn build && vitest run --config vitest.config.ts --passWithNoTests", "test:clean": "yarn test --no-cache --coverage.clean", "test:dev": "yarn test --coverage false", "test:verbose": "yarn test --reporter verbose", @@ -44,7 +43,6 @@ "deepmerge": "^4.3.1", "mkdirp": "^3.0.1", "rimraf": "^6.0.1", - "streamcat": "^2.6.5", "vitest": "^2.0.5" }, "engines": { diff --git a/packages/shims/scripts/bundle.js b/packages/shims/scripts/bundle.js index 09448b26f..abdf107de 100644 --- a/packages/shims/scripts/bundle.js +++ b/packages/shims/scripts/bundle.js @@ -6,7 +6,6 @@ import { createReadStream, createWriteStream } from 'fs'; import { mkdirp } from 'mkdirp'; import path from 'path'; import { rimraf } from 'rimraf'; -import streamCat from 'streamcat'; console.log('Bundling shims...'); @@ -26,8 +25,13 @@ const srcPaths = [ await mkdirp(pkgDist); await rimraf(`${pkgDist}/*`); -await streamCat(srcPaths.map((filePath) => createReadStream(filePath))).pipe( - createWriteStream(path.resolve(pkgDist, 'endoify.mjs')), -); +const srcStreams = srcPaths.map((filePath) => createReadStream(filePath)); +const distStream = createWriteStream(path.resolve(pkgDist, 'endoify.mjs')); -console.log('Success!'); +// tell the src streams to begin piping their next when they end +srcStreams[0].on('end', () => srcStreams[1].pipe(distStream, { end: false })); +srcStreams[1].on('end', () => srcStreams[2].pipe(distStream, { end: true })); +srcStreams[2].on('end', () => console.log('Success!')); + +// start by piping the first src stream +srcStreams[0].pipe(distStream, { end: false }); diff --git a/yarn.lock b/yarn.lock index 20177c53c..7b0a99ffa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1300,7 +1300,6 @@ __metadata: prettier: "npm:^2.7.1" prettier-plugin-packagejson: "npm:^2.3.0" rimraf: "npm:^6.0.1" - streamcat: "npm:^2.6.5" typedoc: "npm:^0.24.8" typescript: "npm:~4.9.5" vite: "npm:^5.3.5" @@ -1321,7 +1320,6 @@ __metadata: mkdirp: "npm:^3.0.1" rimraf: "npm:^6.0.1" ses: "npm:^1.7.0" - streamcat: "npm:^2.6.5" vitest: "npm:^2.0.5" languageName: unknown linkType: soft @@ -6656,13 +6654,6 @@ __metadata: languageName: node linkType: hard -"promisebuffer@npm:^1.0.0": - version: 1.0.0 - resolution: "promisebuffer@npm:1.0.0" - checksum: 10/c37ba6870333b197c2397334a13349bacb22c45227f01a0ab15fef43618eb385475a1c7aafcfa6237d399794a5957c22c7d3be2e4129c789fe169c88609c0120 - languageName: node - linkType: hard - "psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" @@ -7382,15 +7373,6 @@ __metadata: languageName: node linkType: hard -"streamcat@npm:^2.6.5": - version: 2.6.5 - resolution: "streamcat@npm:2.6.5" - dependencies: - promisebuffer: "npm:^1.0.0" - checksum: 10/989345c463c22ab28a7cb8f7881bc45239e86b2b4094e6a59b541388115a75cc9d3b58defc0625edd26bf85e9366b57ef5d3c978cf48d8c4dacc910463a50e5a - languageName: node - linkType: hard - "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" From bd014f406de805e592a26dd5e532a477ce57da4c Mon Sep 17 00:00:00 2001 From: grypez <143971198+grypez@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:31:12 -0400 Subject: [PATCH 5/6] glob rimraf --- packages/shims/scripts/bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shims/scripts/bundle.js b/packages/shims/scripts/bundle.js index abdf107de..25e0824ce 100644 --- a/packages/shims/scripts/bundle.js +++ b/packages/shims/scripts/bundle.js @@ -23,7 +23,7 @@ const srcPaths = [ // const { eventualSendSrcBundled } = await bundleSource(eventualSendSrc, { format: 'endoScript' }); await mkdirp(pkgDist); -await rimraf(`${pkgDist}/*`); +await rimraf(`${pkgDist}/*`, { glob: true }); const srcStreams = srcPaths.map((filePath) => createReadStream(filePath)); const distStream = createWriteStream(path.resolve(pkgDist, 'endoify.mjs')); From d651d847df92002d62ab37fd5206439633b2ec32 Mon Sep 17 00:00:00 2001 From: grypez <143971198+grypez@users.noreply.github.com> Date: Mon, 19 Aug 2024 17:00:45 -0400 Subject: [PATCH 6/6] add 'vitestable' endoify bundle test --- packages/shims/src/endoify.test.js | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 packages/shims/src/endoify.test.js diff --git a/packages/shims/src/endoify.test.js b/packages/shims/src/endoify.test.js new file mode 100644 index 000000000..1eed0a76a --- /dev/null +++ b/packages/shims/src/endoify.test.js @@ -0,0 +1,40 @@ +import { vi, beforeEach, describe, it, expect } from 'vitest'; +// import '@ocap/shims/endoify'; + +describe('endoify', () => { + describe('shimmed', () => { + beforeEach(async () => { + vi.resetModules(); + vi.importActual('@ocap/shims/endoify'); + //await import('@ocap/shims/endoify'); + }); + + it('should include `ses` code', () => { + // Due to `lockdown()`, and therefore `ses` + expect(Object.isFrozen(Array.prototype)).toBeTruthy(); + }); + + it('should include `eventual-send` code', () => { + // Due to eventual send + expect(typeof HandledPromise).not.toBe('undefined'); + }); + + }); + + describe('unshimmed', () => { + beforeEach(async () => { + vi.resetModules(); + }); + + it('should not include `ses` code', () => { + // Due to `lockdown()`, and therefore `ses` + expect(Object.isFrozen(Array.prototype)).toBeFalsy(); + }); + + it('should not include `eventual-send` code', () => { + // Due to eventual send + expect(typeof HandledPromise).toBe('undefined'); + }); + }) + +})