RouterBuilder overview
Build a Router
satisfying an Api.Api
.
Added in v1.0.0
Table of contents
combining
merge
Signature
export declare const merge: {
<R1, E1, R2, E2, A1 extends ApiEndpoint.ApiEndpoint.Any, A2 extends ApiEndpoint.ApiEndpoint.Any>(
builder1: RouterBuilder<A1, E1, R1>,
builder2: RouterBuilder<A2, E2, R2>
): RouterBuilder<RouterBuilder.MergeApiEndpoints<A1, A2>, E1 | E2, R1 | R2>
<R2, E2, A2 extends ApiEndpoint.ApiEndpoint.Any>(
builder2: RouterBuilder<A2, E2, R2>
): <R1, E1, A1 extends ApiEndpoint.ApiEndpoint.Any>(
builder1: RouterBuilder<A1, E1, R1>
) => RouterBuilder<RouterBuilder.MergeApiEndpoints<A1, A2>, E1 | E2, R1 | R2>
}
Added in v1.0.0
constructors
handle
Handle an endpoint using a handler function.
Signature
export declare const handle: {
<R2, E2, A extends ApiEndpoint.ApiEndpoint.Any, Endpoint extends A>(
handler: Handler.Handler<Endpoint, E2, R2>
): <R1, E1>(
builder: RouterBuilder<A, E1, R1>
) => RouterBuilder<
Exclude<A, Endpoint>,
E1 | Exclude<E2, HttpError.HttpError>,
| Exclude<R1 | R2, HttpRouter.RouteContext | HttpServerRequest.HttpServerRequest>
| ApiEndpoint.ApiEndpoint.Context<Endpoint>
>
<A extends ApiEndpoint.ApiEndpoint.Any, E2, R2, Id extends ApiEndpoint.ApiEndpoint.Id<A>>(
id: Id,
fn: Handler.Handler.Function<ApiEndpoint.ApiEndpoint.ExtractById<A, Id>, E2, R2>
): <R1, E1>(
builder: RouterBuilder<A, E1, R1>
) => RouterBuilder<
ApiEndpoint.ApiEndpoint.ExcludeById<A, Id>,
E1 | Exclude<E2, HttpError.HttpError>,
| Exclude<R1 | R2, HttpRouter.RouteContext | HttpServerRequest.HttpServerRequest>
| ApiEndpoint.ApiEndpoint.Context<ApiEndpoint.ApiEndpoint.ExtractById<A, Id>>
>
}
Added in v1.0.0
handler
Handle an endpoint using a handler function.
Signature
export declare const handler: <R, E, A extends Api.Api.Any, Id extends Api.Api.Ids<A>>(
api: A,
id: Id,
fn: Handler.Handler.Function<Api.Api.EndpointById<A, Id>, E, R>
) => Handler.Handler<Api.Api.EndpointById<A, Id>, E, R>
Added in v1.0.0
destructors
build
Create an App
instance.
Signature
export declare const build: <E, R>(
builder: RouterBuilder<never, E, R>
) => HttpApp.Default<E, R | SwaggerRouter.SwaggerFiles>
Added in v1.0.0
buildPartial
Create an App
instance.
Warning: this function doesn’t enforce all the endpoints are implemented and a running server might not conform the given Api spec.
Signature
export declare const buildPartial: <A extends ApiEndpoint.ApiEndpoint.Any, E, R>(
builder: RouterBuilder<A, E, R>
) => HttpApp.Default<E, R | SwaggerRouter.SwaggerFiles>
Added in v1.0.0
getRouter
Handle an endpoint using a raw Router.Route.Handler
.
Signature
export declare const getRouter: <E, R>(builder: RouterBuilder<any, E, R>) => HttpRouter.HttpRouter<E, R>
Added in v1.0.0
handling
handleRaw
Handle an endpoint using a raw Router.Route.Handler
.
Signature
export declare const handleRaw: <
A extends ApiEndpoint.ApiEndpoint.Any,
E2,
R2,
Id extends ApiEndpoint.ApiEndpoint.Id<A>
>(
id: Id,
handler: HttpRouter.Route.Handler<E2, R2>
) => <R1, E1>(
builder: RouterBuilder<A, E1, R1>
) => RouterBuilder<
ApiEndpoint.ApiEndpoint.ExcludeById<A, Id>,
E1 | E2 | ApiEndpoint.ApiEndpoint.Error<ApiEndpoint.ApiEndpoint.ExtractById<A, Id>>,
| R1
| ApiEndpoint.ApiEndpoint.Context<ApiEndpoint.ApiEndpoint.ExtractById<A, Id>>
| Exclude<R2, HttpRouter.RouteContext | HttpServerRequest.HttpServerRequest | Scope.Scope>
>
Added in v1.0.0
make
Create a new unimplemeted RouterBuilder
from an Api
.
Signature
export declare const make: <A extends Api.Api.Any>(
api: A,
options?: Partial<Options>
) => RouterBuilder<Api.Api.Endpoints<A>, never, never>
Added in v1.0.0
mapping
mapRouter
Modify the Router
.
Signature
export declare const mapRouter: <A extends ApiEndpoint.ApiEndpoint.Any, E1, E2, R1, R2>(
fn: (router: HttpRouter.HttpRouter<E1, R1>) => HttpRouter.HttpRouter<E2, R2>
) => (builder: RouterBuilder<A, E1, R1>) => RouterBuilder<A, E2, R2>
Added in v1.0.0
models
Options (interface)
Signature
export interface Options {
readonly parseOptions: AST.ParseOptions
readonly enableDocs: boolean
readonly docsPath: `/${string}`
}
Added in v1.0.0
RouterBuilder (interface)
Signature
export interface RouterBuilder<A extends ApiEndpoint.ApiEndpoint.Any, E, R>
extends RouterBuilder.Variance<A, E, R>,
Pipeable.Pipeable {
readonly remainingEndpoints: ReadonlyArray<A>
readonly api: Api.Api.Any
readonly router: HttpRouter.HttpRouter<E, R>
readonly options: Options
}
Added in v1.0.0
RouterBuilder (namespace)
Added in v1.0.0
Variance (interface)
Signature
export interface Variance<A extends ApiEndpoint.ApiEndpoint.Any, E, R> {
readonly [TypeId]: {
readonly _A: Types.Covariant<A>
readonly _E: Types.Covariant<E>
readonly _R: Types.Contravariant<R>
}
}
Added in v1.0.0
Any (type alias)
Any router builder
Signature
export type Any = RouterBuilder<ApiEndpoint.ApiEndpoint.Any, any, any>
Added in v1.0.0
MergeApiEndpoints (type alias)
Signature
export type MergeApiEndpoints<A, B> =
A extends ApiEndpoint.ApiEndpoint<
infer Id1,
ApiRequest.ApiRequest.Any,
ApiResponse.ApiResponse.Any,
Security.Security.Any
>
? B extends ApiEndpoint.ApiEndpoint<
infer Id2,
ApiRequest.ApiRequest.Any,
ApiResponse.ApiResponse.Any,
Security.Security.Any
>
? Id1 extends Id2
? A
: never
: never
: never
Added in v1.0.0
refinements
isRouterBuilder
Signature
export declare const isRouterBuilder: (u: unknown) => u is RouterBuilder.Any
Added in v1.0.0
type id
TypeId
Signature
export declare const TypeId: typeof TypeId
Added in v1.0.0
TypeId (type alias)
Signature
export type TypeId = typeof TypeId
Added in v1.0.0