From a512c6e53f5e4bb5d8cafd61f0739aaf792e784d Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Thu, 13 Aug 2020 12:55:49 -0600 Subject: [PATCH 1/4] fix: add HandledPromise to the whitelist --- packages/ses/src/whitelist.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/ses/src/whitelist.js b/packages/ses/src/whitelist.js index abf112fdd6..b390cae9db 100644 --- a/packages/ses/src/whitelist.js +++ b/packages/ses/src/whitelist.js @@ -59,6 +59,7 @@ export const universalPropertyNames = { Map: 'Map', Number: 'Number', Object: 'Object', + HandledPromise: 'HandledPromise', // TODO: Until Promise.delegate. Promise: 'Promise', Proxy: 'Proxy', RangeError: 'RangeError', @@ -1644,6 +1645,19 @@ export const whitelist = { '@@toStringTag': 'string', }, + // TODO: To be replaced with Promise.delegate + HandledPromise: { + '[[Proto]]': 'Promise', + applyMethod: fn, + applyFunction: fn, + applyMethodSendOnly: fn, + applyFunctionSendOnly: fn, + get: fn, + getSendOnly: fn, + resolve: fn, + prototype: '%PromisePrototype%', + }, + Promise: { // 25.6.4 Properties of the Promise Constructor '[[Proto]]': '%FunctionPrototype%', From c571a7426ef81593f150b664734f29294fcded0c Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Thu, 13 Aug 2020 15:32:49 -0600 Subject: [PATCH 2/4] docs: explain the HandledPromise vs. Promise.delegate distinction --- packages/ses/src/whitelist.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/ses/src/whitelist.js b/packages/ses/src/whitelist.js index b390cae9db..a2e9e840f2 100644 --- a/packages/ses/src/whitelist.js +++ b/packages/ses/src/whitelist.js @@ -59,7 +59,7 @@ export const universalPropertyNames = { Map: 'Map', Number: 'Number', Object: 'Object', - HandledPromise: 'HandledPromise', // TODO: Until Promise.delegate. + HandledPromise: 'HandledPromise', // TODO: Until Promise.delegate (see below). Promise: 'Promise', Proxy: 'Proxy', RangeError: 'RangeError', @@ -1646,16 +1646,24 @@ export const whitelist = { }, // TODO: To be replaced with Promise.delegate + // + // The HandledPromise global variable shimmed by `@agoric/eventual-send/shim` + // implements an initial version of the eventual send specification at: + // https://github.com/tc39/proposal-eventual-send + // + // We will likely change this to add a property to Promise called + // Promise.delegate and put static methods on it, which will necessitate + // another whitelist change to update to the current proposed standard. HandledPromise: { '[[Proto]]': 'Promise', - applyMethod: fn, applyFunction: fn, - applyMethodSendOnly: fn, applyFunctionSendOnly: fn, + applyMethod: fn, + applyMethodSendOnly: fn, get: fn, getSendOnly: fn, - resolve: fn, prototype: '%PromisePrototype%', + resolve: fn, }, Promise: { From e3db4220b6ba8855cafd8314eb0b57dcd8511100 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Thu, 13 Aug 2020 16:57:13 -0600 Subject: [PATCH 3/4] chore: update NEWS --- packages/ses/NEWS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/ses/NEWS.md b/packages/ses/NEWS.md index fa3baf39a1..3bb9e170fa 100644 --- a/packages/ses/NEWS.md +++ b/packages/ses/NEWS.md @@ -2,7 +2,9 @@ User-visible changes in SES: ## Next release -* No changes yet. +* Updates the whitelist to allow a `HandledPromise` global, which is provided + by `@agoric/eventual-send`, an early implementation of + https://github.com/tc39/proposal-eventual-send. ## Release 0.10.0 (8-August-2020) From c60b7a6e4f63024a0431a68658542cb27035b0dd Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Thu, 13 Aug 2020 16:58:07 -0600 Subject: [PATCH 4/4] chore: alphabetical order for universalPropertyNames --- packages/ses/src/whitelist.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ses/src/whitelist.js b/packages/ses/src/whitelist.js index a2e9e840f2..054f6adc4a 100644 --- a/packages/ses/src/whitelist.js +++ b/packages/ses/src/whitelist.js @@ -59,7 +59,6 @@ export const universalPropertyNames = { Map: 'Map', Number: 'Number', Object: 'Object', - HandledPromise: 'HandledPromise', // TODO: Until Promise.delegate (see below). Promise: 'Promise', Proxy: 'Proxy', RangeError: 'RangeError', @@ -91,6 +90,7 @@ export const universalPropertyNames = { lockdown: 'lockdown', harden: 'harden', + HandledPromise: 'HandledPromise', // TODO: Until Promise.delegate (see below). StaticModuleRecord: 'StaticModuleRecord', };