@spfn/core
Version:
SPFN Framework Core - File-based routing, transactions, repository pattern
41 lines (36 loc) • 1.86 kB
TypeScript
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 };