@sebastianwessel/quickjs
Version:
A typescript package to execute JavaScript and TypeScript code in a WebAssembly QuickJS sandbox
54 lines (53 loc) • 2.08 kB
JavaScript
import { expose } from '../expose/expose.js';
/**
* Provide all Node.js console methods
*/
export const provideConsole = (ctx, scope, options) => {
const logger = {
log: (...params) => console.log(...params),
error: (...params) => console.error(...params),
warn: (...params) => console.warn(...params),
info: (...params) => console.info(...params),
debug: (...params) => console.debug(...params),
trace: (...params) => console.trace(...params),
assert: (...params) => console.assert(...params),
count: (...params) => console.count(...params),
countReset: (...params) => console.countReset(...params),
dir: (...params) => console.dir(...params),
dirxml: (...params) => console.dirxml(...params),
group: (...params) => console.group(...params),
groupCollapsed: (...params) => console.groupCollapsed(...params),
groupEnd: () => console.groupEnd(),
table: (...params) => console.table(...params),
time: (...params) => console.time(...params),
timeEnd: (...params) => console.timeEnd(...params),
timeLog: (...params) => console.timeLog(...params),
clear: () => {
throw new Error('console.clear is disabled for security reasons by default');
},
...options.console,
};
expose(ctx, scope, {
console: {
log: logger.log,
error: logger.error,
warn: logger.warn,
info: logger.info,
debug: logger.debug,
trace: logger.trace,
assert: logger.assert,
count: logger.count,
countReset: logger.countReset,
dir: logger.dir,
dirxml: logger.dirxml,
group: logger.group,
groupCollapsed: logger.groupCollapsed,
groupEnd: logger.groupEnd,
table: logger.table,
time: logger.time,
timeEnd: logger.timeEnd,
timeLog: logger.timeLog,
clear: logger.clear,
},
});
};