UNPKG

ses

Version:

Hardened JavaScript for Fearless Cooperation

51 lines (46 loc) 2.09 kB
import { symbolFor, globalThis } from './commons.js'; import { defineCausalConsoleFromLogger } from './error/console.js'; import { loggedErrorHandler } from './error/assert.js'; // TODO possible additional exports. Some are privileged. // export { loggedErrorHandler }; // export { // makeCausalConsole, // consoleLevelMethods, // consoleOtherMethods, // makeLoggingConsoleKit, // filterConsole, // pumpLogToConsole, // } from './src/error/console.js'; // export { assertLogs, throwsAndLogs } from './src/error/throws-and-logs.js'; /** * Makes a Console like the * [SES causal `console`](https://github.com/endojs/endo/blob/master/packages/ses/src/error/README.md) * but whose output is redirected to the supplied `logger` function. */ const makeCausalConsoleFromLoggerForSesAva = defineCausalConsoleFromLogger(loggedErrorHandler); /** *`makeCausalConsoleFromLoggerForSesAva` is privileged because it exposes * unredacted error info onto the `Logger` provided by the caller. It * should not be made available to non-privileged code. * * Further, we consider this particular API choice to be experimental * and may change in the future. It is currently only intended for use by * `@endo/ses-ava`, with which it will be co-maintained. * * Thus, this `console-shim.js` makes `makeCausalConsoleFromLoggerForSesAva` * available on `globalThis` which it *assumes* is the global of the start * compartment and is therefore allowed to hold powers that should not be * available in constructed compartments. It makes it available as the value of * a global property named by a registered symbol named * `MAKE_CAUSAL_CONSOLE_FROM_LOGGER_KEY_FOR_SES_AVA`. * * Anyone accessing this, including `@endo/ses-ava`, should feature test for * this and be tolerant of its absence. It may indeed disappear from later * versions of the ses-shim. */ const MAKE_CAUSAL_CONSOLE_FROM_LOGGER_KEY_FOR_SES_AVA = symbolFor( 'MAKE_CAUSAL_CONSOLE_FROM_LOGGER_KEY_FOR_SES_AVA', ); globalThis[MAKE_CAUSAL_CONSOLE_FROM_LOGGER_KEY_FOR_SES_AVA] = makeCausalConsoleFromLoggerForSesAva;