-
Notifications
You must be signed in to change notification settings - Fork 74
Home
Brian Warner edited this page Jun 30, 2020
·
8 revisions
We'll use this page to keep reports and information about compatibility (or problems) between SES and various libraries.
-
tape
4.11.0 vs SES-0.7.7: must importtape
beforelockdown()
(override mistake: https://github.com/Agoric/SES-shim/issues/293). -
tape
5.0.0: must import beforelockdown()
, but even thent.throws
fails to recognize exceptions (test always errors), maybe due to identity discontinuity -
console
(Node.js builtin): mustharden(console.__proto__)
before you canharden(console)
or harden the global object of a new Compartment which was givenconsole
as an endowment (console
inherits from an intermediate object rather than directly inheriting fromObject
) (https://github.com/Agoric/SES-shim/issues/292) -
assert
(Node.js builtin): no problems -
better-assert
(npm): loads after lockdown, but explodes if a test fails:callsite
modifiesError.prepareStackTrace
-
insist
(npm): same asbetter-assert
-
chai
(npm assertions library): imports afterlockdown()
fine. No stack traces unlessnoTameError
.- Unrelated to SES: running under
-r esm
dumps a 300KB line of esm.js source to stderr before anything else
- Unrelated to SES: running under
-
node-lmdb
: cannot import afterlockdown()
,bindings
modifiesError.prepareStackTrace
andError.stackTraceLimit
. Workaround is toimport('node-lmdb')
(for side-effects only) beforelockdown()
, then import it again (for the exports) later, which doesn't have any obvious identity-discontinuity problems so far. -
brace-expansion
usesMath.random
(at import time) to create unlikely-to-already-exist replacement names for various punctuation marks.brace-expansion
is imported byminimatch
, which is imported byglob
, which is imported bytemp
. -
temp
usesMath.random
(at runtime) to generate random filenames -
depd
changesError.prepareStackTrace
(at import time) to create deprecation warnings.depd
is used by the popularexpress
web server framework, and themorgan
HTTP middleware package. See #251 for an unpleasant workaround. -
jsesc
(used by babel) usesBuffer.isBuffer
at import time, so it won't work in non-start-compartments unless you provide a (tamed!) endowment -
babel
usesprocess.env
runtime, so it won't work in non-start-compartments unless you provide an endowment (an empty object is probably sufficient) -
json-merge-patch
has a dependency tree which includesdefine-properties
, which fails at import time as it tries to add.getPolyfill
to something (probablyObject
)