@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
JavaScript
// 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
};