import toJSONCallback from 'to-json-callback'; import { dedent } from '../utils.js'; import { js as jsHooks, code as codeHooks } from '../hooks.js'; // REQUIRES INTEGRATION TEST /* c8 ignore start */ export default class Hook { constructor(interpreter, hooks = {}) { const { main, worker } = hooks; this.interpreter = interpreter; this.onWorker = main?.onWorker; // ignore onWorker as that's main only for (const key of jsHooks.slice(1)) this[key] = worker?.[key]; for (const key of codeHooks) this[key] = worker?.[key]; } toJSON() { const hooks = {}; // ignore onWorker as that's main only for (const key of jsHooks.slice(1)) { if (this[key]) hooks[key] = toJSONCallback(this[key]); } // code related: exclude `onReady` callback for (const key of codeHooks) { if (this[key]) hooks[key] = dedent(this[key]()); } return hooks; } } /* c8 ignore stop */