diff --git a/packages/eventual-send/shim.js b/packages/eventual-send/shim.js index 93ad06d1c57..f9dd69eb449 100644 --- a/packages/eventual-send/shim.js +++ b/packages/eventual-send/shim.js @@ -1,2 +1,14 @@ +/* global globalThis */ + // eslint-disable-next-line import/prefer-default-export -export { HandledPromise } from './src/index'; +import { makeHandledPromise } from './src/index'; + +// 'E' and 'HandledPromise' are exports of the module + +// For now: +// import { HandledPromise, E } from '@agoric/eventual-send'; +// ... + +if (typeof HandledPromise === 'undefined') { + globalThis.HandledPromise = makeHandledPromise(Promise); +} diff --git a/packages/eventual-send/src/index.js b/packages/eventual-send/src/index.js index 195171f5f00..3f8bd754470 100644 --- a/packages/eventual-send/src/index.js +++ b/packages/eventual-send/src/index.js @@ -1,6 +1,4 @@ -/* global harden HandledPromise */ - -import makeE from './E'; +/* global harden */ const { defineProperties, @@ -13,21 +11,6 @@ const { const { prototype: promiseProto } = Promise; const { then: originalThen } = promiseProto; -// 'E' and 'HandledPromise' are exports of the module - -// For now: -// import { HandledPromise, E } from '@agoric/eventual-send'; -// ... - -const hp = - typeof HandledPromise === 'undefined' - ? // eslint-disable-next-line no-use-before-define - makeHandledPromise(Promise) - : HandledPromise; - -// Provide our exports. -export { hp as HandledPromise }; - // the following method (makeHandledPromise) is part // of the shim, and will not be exported by the module once the feature // becomes a part of standard javascript @@ -44,6 +27,7 @@ export { hp as HandledPromise }; * * @return {typeof HandledPromise} Handled promise */ +// eslint-disable-next-line import/prefer-default-export export function makeHandledPromise(Promise) { // xs doesn't support WeakMap in pre-loaded closures // aka "vetted customization code" @@ -111,7 +95,7 @@ export function makeHandledPromise(Promise) { // handled Promises to their corresponding fulfilledHandler. let forwardingHandler; let handle; - let promiseResolve; + const promiseResolve = Promise.resolve.bind(Promise); function HandledPromise(executor, unsettledHandler = undefined) { if (new.target === undefined) { @@ -456,6 +440,8 @@ export function makeHandledPromise(Promise) { return returnedP; }; - promiseResolve = Promise.resolve.bind(Promise); + // We cannot harden(HandledPromise) because we're a vetted shim which + // runs before lockdown() allows harden to function. In that case, + // though, globalThis.HandledPromise will be hardened after lockdown. return HandledPromise; } diff --git a/packages/import-bundle/package.json b/packages/import-bundle/package.json index deeaea9dee2..e6c7673dd34 100644 --- a/packages/import-bundle/package.json +++ b/packages/import-bundle/package.json @@ -20,7 +20,7 @@ "tap": "^14.10.5" }, "peerDependencies": { - "ses": "^0.10.0" + "ses": "^0.10.1" }, "files": [ "README.md", @@ -74,5 +74,8 @@ }, "publishConfig": { "access": "public" + }, + "dependencies": { + "ses": "^0.10.1" } } diff --git a/packages/install-ses/package.json b/packages/install-ses/package.json index c8f2f20c99c..105ae25dff3 100644 --- a/packages/install-ses/package.json +++ b/packages/install-ses/package.json @@ -16,7 +16,7 @@ }, "dependencies": { "@agoric/eventual-send": "^0.9.3", - "ses": "^0.10.0" + "ses": "^0.10.1" }, "files": [ "src/**/*.js" diff --git a/yarn.lock b/yarn.lock index 208aebe0892..10dcb27bbfc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8661,6 +8661,15 @@ ses@^0.10.0: "@agoric/make-hardener" "^0.1.0" "@agoric/transform-module" "^0.3.0" +ses@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/ses/-/ses-0.10.1.tgz#7506ce0e48e98a518fde20604072b523228b9441" + integrity sha512-OqYfhG7naLai6fuIMa3mbIW7lImdrFC0IqzkokPp+1SvwXfjr4r4U4jYkUjJQTB3NUnq2sLEbJ+1wBO5tdGwAQ== + dependencies: + "@agoric/babel-standalone" "^7.9.5" + "@agoric/make-hardener" "^0.1.0" + "@agoric/transform-module" "^0.3.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"