nimma
Version:
Scalable JSONPath engine.
36 lines (28 loc) • 793 B
JavaScript
import { RuntimeError } from './errors/index.mjs';
function printPrimitive(value) {
if (typeof value === 'string' || typeof value === 'number') {
return JSON.stringify(value);
}
return 'unknown';
}
function printError(e) {
if (e instanceof Error) {
return `${e.constructor.name}(${printPrimitive(e.message)})`;
}
return printPrimitive(e);
}
export default function proxyCallbacks(callbacks, errors) {
const _callbacks = {};
for (const key of Object.keys(callbacks)) {
const fn = callbacks[key];
_callbacks[key] = (...args) => {
try {
fn(...args);
} catch (e) {
const message = `${fn.name || key} threw: ${printError(e)}`;
errors.push(new RuntimeError(message, { cause: e }));
}
};
}
return _callbacks;
}