ses
Version:
Hardened JavaScript for Fearless Cooperation
51 lines (46 loc) • 2.09 kB
JavaScript
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;