UNPKG

@busy-hour/blaze

Version:

<h1 align='center'>🔥 Blaze</h1> <div align='center'> An event driven framework for 🔥 Hono.js </div>

57 lines (56 loc) • 1.59 kB
// src/utils/helper/router.ts import { mergePath } from "hono/utils/url"; import { Logger } from "../../internal/logger/index.js"; import { REST_METHOD } from "../constant/rest/index.js"; function assignOpenAPIRegistry(router, docPath, def) { if (!router.openAPIRegistry) return; switch (def.type) { case "component": return router.openAPIRegistry.registerComponent( def.componentType, def.name, def.component ); case "route": return router.openAPIRegistry.registerPath({ ...def.route, path: mergePath(docPath, def.route.path) }); case "webhook": return router.openAPIRegistry.registerWebhook({ ...def.webhook, path: mergePath(docPath, def.webhook.path) }); case "schema": return router.openAPIRegistry.register( def.schema._def.openapi._internal.refId, def.schema ); case "parameter": return router.openAPIRegistry.registerParameter( def.schema._def.openapi._internal.refId, def.schema ); default: { const errorIfNotExhaustive = def; throw Logger.throw(`Unknown registry type: ${errorIfNotExhaustive}`); } } } function fixOpenApiPath(path) { return path.replaceAll(/:([^/]+)/g, "{$1}"); } function createOpenApiRouter(route) { const method = route.method === REST_METHOD.ALL ? REST_METHOD.POST : route.method; return { ...route, path: fixOpenApiPath(route.path), method: method.toLowerCase() }; } export { assignOpenAPIRegistry, createOpenApiRouter, fixOpenApiPath };