{"record":{"id":"ac85491889077716","repo":"diegosouzapw/OmniRoute","slug":"hook-config-name-is-already-registered","errorCode":null,"errorMessage":"Hook \"${config.name}\" is already registered","messagePattern":"Hook \"(.+?)\" is already registered","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lib/middleware/registry.ts","lineNumber":205,"sourceCode":"      info: (tag: string, msg: string) => logger.info?.(tag, msg) ?? console.log(`[${tag}] ${msg}`),\n      warn: (tag: string, msg: string) =>\n        logger.warn?.(tag, msg) ?? console.warn(`[${tag}] ${msg}`),\n      error: (tag: string, msg: string) =>\n        logger.error?.(tag, msg) ?? console.error(`[${tag}] ${msg}`),\n    },\n  };\n}\n\n// ── Public API ────────────────────────────────────────────────────────────\n\n/**\n * Register a pre-request hook.\n */\nexport function registerHook(config: HookConfig, middleware?: HookMiddleware): void {\n  const state = getRegistryState();\n\n  if (state.hooks.has(config.name)) {\n    throw new Error(`Hook \"${config.name}\" is already registered`);\n  }\n\n  state.hooks.set(config.name, { ...config });\n\n  if (middleware) {\n    state.middlewares.set(config.name, middleware);\n  } else {\n    // Compile from code\n    const compiled = compileHookCode(config.code, config.name);\n    state.middlewares.set(config.name, compiled);\n  }\n}\n\n/**\n * Unregister a hook by name.\n */\nexport function unregisterHook(name: string): boolean {\n  const state = getRegistryState();","sourceCodeStart":187,"sourceCodeEnd":223,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/middleware/registry.ts#L187-L223","documentation":"Error \"Hook \"${config.name}\" is already registered\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/middleware/registry.ts:205 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}