{"version":3,"file":"hookable-e7fd869b.js","sources":["../../node_modules/hookable/dist/index.mjs"],"sourcesContent":["function flatHooks(configHooks, hooks = {}, parentName) {\n for (const key in configHooks) {\n const subHook = configHooks[key];\n const name = parentName ? `${parentName}:${key}` : key;\n if (typeof subHook === \"object\" && subHook !== null) {\n flatHooks(subHook, hooks, name);\n } else if (typeof subHook === \"function\") {\n hooks[name] = subHook;\n }\n }\n return hooks;\n}\nfunction mergeHooks(...hooks) {\n const finalHooks = {};\n for (const hook of hooks) {\n const flatenHook = flatHooks(hook);\n for (const key in flatenHook) {\n if (finalHooks[key]) {\n finalHooks[key].push(flatenHook[key]);\n } else {\n finalHooks[key] = [flatenHook[key]];\n }\n }\n }\n for (const key in finalHooks) {\n if (finalHooks[key].length > 1) {\n const array = finalHooks[key];\n finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));\n } else {\n finalHooks[key] = finalHooks[key][0];\n }\n }\n return finalHooks;\n}\nfunction serial(tasks, function_) {\n return tasks.reduce(\n (promise, task) => promise.then(() => function_(task)),\n Promise.resolve()\n );\n}\nconst defaultTask = { run: (function_) => function_() };\nconst _createTask = () => defaultTask;\nconst createTask = typeof console.createTask !== \"undefined\" ? console.createTask : _createTask;\nfunction serialTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),\n Promise.resolve()\n );\n}\nfunction parallelTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));\n}\nfunction serialCaller(hooks, arguments_) {\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),\n Promise.resolve()\n );\n}\nfunction parallelCaller(hooks, args) {\n return Promise.all(hooks.map((hook) => hook(...args || [])));\n}\nfunction callEachWith(callbacks, arg0) {\n for (const callback of [...callbacks]) {\n callback(arg0);\n }\n}\n\nclass Hookable {\n constructor() {\n this._hooks = {};\n this._before = void 0;\n this._after = void 0;\n this._deprecatedMessages = void 0;\n this._deprecatedHooks = {};\n this.hook = this.hook.bind(this);\n this.callHook = this.callHook.bind(this);\n this.callHookWith = this.callHookWith.bind(this);\n }\n hook(name, function_, options = {}) {\n if (!name || typeof function_ !== \"function\") {\n return () => {\n };\n }\n const originalName = name;\n let dep;\n while (this._deprecatedHooks[name]) {\n dep = this._deprecatedHooks[name];\n name = dep.to;\n }\n if (dep && !options.allowDeprecated) {\n let message = dep.message;\n if (!message) {\n message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : \"\");\n }\n if (!this._deprecatedMessages) {\n this._deprecatedMessages = /* @__PURE__ */ new Set();\n }\n if (!this._deprecatedMessages.has(message)) {\n console.warn(message);\n this._deprecatedMessages.add(message);\n }\n }\n if (!function_.name) {\n try {\n Object.defineProperty(function_, \"name\", {\n get: () => \"_\" + name.replace(/\\W+/g, \"_\") + \"_hook_cb\",\n configurable: true\n });\n } catch {\n }\n }\n this._hooks[name] = this._hooks[name] || [];\n this._hooks[name].push(function_);\n return () => {\n if (function_) {\n this.removeHook(name, function_);\n function_ = void 0;\n }\n };\n }\n hookOnce(name, function_) {\n let _unreg;\n let _function = (...arguments_) => {\n if (typeof _unreg === \"function\") {\n _unreg();\n }\n _unreg = void 0;\n _function = void 0;\n return function_(...arguments_);\n };\n _unreg = this.hook(name, _function);\n return _unreg;\n }\n removeHook(name, function_) {\n if (this._hooks[name]) {\n const index = this._hooks[name].indexOf(function_);\n if (index !== -1) {\n this._hooks[name].splice(index, 1);\n }\n if (this._hooks[name].length === 0) {\n delete this._hooks[name];\n }\n }\n }\n deprecateHook(name, deprecated) {\n this._deprecatedHooks[name] = typeof deprecated === \"string\" ? { to: deprecated } : deprecated;\n const _hooks = this._hooks[name] || [];\n delete this._hooks[name];\n for (const hook of _hooks) {\n this.hook(name, hook);\n }\n }\n deprecateHooks(deprecatedHooks) {\n Object.assign(this._deprecatedHooks, deprecatedHooks);\n for (const name in deprecatedHooks) {\n this.deprecateHook(name, deprecatedHooks[name]);\n }\n }\n addHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n const removeFns = Object.keys(hooks).map(\n (key) => this.hook(key, hooks[key])\n );\n return () => {\n for (const unreg of removeFns.splice(0, removeFns.length)) {\n unreg();\n }\n };\n }\n removeHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n for (const key in hooks) {\n this.removeHook(key, hooks[key]);\n }\n }\n removeAllHooks() {\n for (const key in this._hooks) {\n delete this._hooks[key];\n }\n }\n callHook(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(serialTaskCaller, name, ...arguments_);\n }\n callHookParallel(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(parallelTaskCaller, name, ...arguments_);\n }\n callHookWith(caller, name, ...arguments_) {\n const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;\n if (this._before) {\n callEachWith(this._before, event);\n }\n const result = caller(\n name in this._hooks ? [...this._hooks[name]] : [],\n arguments_\n );\n if (result instanceof Promise) {\n return result.finally(() => {\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n });\n }\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n return result;\n }\n beforeEach(function_) {\n this._before = this._before || [];\n this._before.push(function_);\n return () => {\n if (this._before !== void 0) {\n const index = this._before.indexOf(function_);\n if (index !== -1) {\n this._before.splice(index, 1);\n }\n }\n };\n }\n afterEach(function_) {\n this._after = this._after || [];\n this._after.push(function_);\n return () => {\n if (this._after !== void 0) {\n const index = this._after.indexOf(function_);\n if (index !== -1) {\n this._after.splice(index, 1);\n }\n }\n };\n }\n}\nfunction createHooks() {\n return new Hookable();\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction createDebugger(hooks, _options = {}) {\n const options = {\n inspect: isBrowser,\n group: isBrowser,\n filter: () => true,\n ..._options\n };\n const _filter = options.filter;\n const filter = typeof _filter === \"string\" ? (name) => name.startsWith(_filter) : _filter;\n const _tag = options.tag ? `[${options.tag}] ` : \"\";\n const logPrefix = (event) => _tag + event.name + \"\".padEnd(event._id, \"\\0\");\n const _idCtr = {};\n const unsubscribeBefore = hooks.beforeEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n _idCtr[event.name] = _idCtr[event.name] || 0;\n event._id = _idCtr[event.name]++;\n console.time(logPrefix(event));\n });\n const unsubscribeAfter = hooks.afterEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n if (options.group) {\n console.groupCollapsed(event.name);\n }\n if (options.inspect) {\n console.timeLog(logPrefix(event), event.args);\n } else {\n console.timeEnd(logPrefix(event));\n }\n if (options.group) {\n console.groupEnd();\n }\n _idCtr[event.name]--;\n });\n return {\n /** Stop debugging and remove listeners */\n close: () => {\n unsubscribeBefore();\n unsubscribeAfter();\n }\n };\n}\n\nexport { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };\n"],"names":["flatHooks","configHooks","hooks","parentName","key","subHook","name","defaultTask","function_","_createTask","createTask","serialTaskCaller","args","task","promise","hookFunction","parallelTaskCaller","hook","callEachWith","callbacks","arg0","callback","Hookable","options","originalName","dep","message","_unreg","_function","arguments_","index","deprecated","_hooks","deprecatedHooks","removeFns","unreg","caller","event","result","createHooks"],"mappings":"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","x_google_ignoreList":[0]}