UNPKG

@spfn/core

Version:

SPFN Framework Core - File-based routing, transactions, repository pattern

41 lines (36 loc) 1.86 kB
export { A as AutoRouteLoader, R as RouteInfo, a as RouteStats, l as loadRoutes } from '../auto-loader-JFaZ9gON.js'; import { Context, Hono, MiddlewareHandler } from 'hono'; import { a as RouteContract, R as RouteContext, b as RouteHandler } from '../types-DYueuoD6.js'; export { f as ApiErrorResponse, c as ApiErrorSchema, g as ApiResponse, d as ApiResponseSchema, e as ApiSuccessResponse, A as ApiSuccessSchema, h as HeaderRecord, H as HttpMethod, I as InferContract, j as RouteMeta, i as isHttpMethod } from '../types-DYueuoD6.js'; import 'hono/utils/http-status'; import '@sinclair/typebox'; import '../error-handler-wjLL3v-a.js'; /** * Contract-based Route Handler Wrapper * * Binds a contract to a route handler, providing automatic validation * and type-safe context creation. * * Features: * - Automatic params/query/body validation using TypeBox * - Type-safe RouteContext with contract-based inference * - Clean separation: bind() for validation, Hono for middleware */ declare function bind<TContract extends RouteContract>(contract: TContract, handler: (c: RouteContext<TContract>) => Response | Promise<Response>): (rawContext: Context) => Promise<Response>; /** * Create App - Hono Wrapper for Contract-based Routing * * Provides a cleaner API for registering routes with contracts */ type SPFNApp = Hono & { bind<TContract extends RouteContract>(contract: TContract, handler: RouteHandler<TContract>): void; bind<TContract extends RouteContract>(contract: TContract, middlewares: MiddlewareHandler[], handler: RouteHandler<TContract>): void; _contractMetas?: Map<string, RouteContract['meta']>; }; /** * Create SPFN app instance * * Wraps Hono with contract-based routing support */ declare function createApp(): SPFNApp; export { RouteContext, RouteContract, RouteHandler, type SPFNApp, bind, createApp };