Skip to main content Link Search Menu Expand Document (external link)

RouterBuilder overview

Build a Router satisfying an Api.Api.

Added in v1.0.0


Table of contents


constructors

handle

Handle an endpoint using a handler function.

Signature

export declare const handle: {
  <R2, E2, RemainingEndpoints extends ApiEndpoint.ApiEndpoint.Any, Endpoint extends RemainingEndpoints>(
    handler: RouterBuilder.Handler<Endpoint, E2, R2>
  ): <R1, E1>(
    builder: RouterBuilder<R1, E1, RemainingEndpoints>
  ) => RouterBuilder<
    | Exclude<R2, Router.RouteContext | ServerRequest.ServerRequest>
    | Exclude<R1, Router.RouteContext | ServerRequest.ServerRequest>
    | ApiEndpoint.ApiEndpoint.Context<Endpoint>,
    E1 | Exclude<E2, HttpError.HttpError>,
    Exclude<RemainingEndpoints, Endpoint>
  >
  <
    R2,
    E2,
    RemainingEndpoints extends ApiEndpoint.ApiEndpoint.Any,
    Id extends ApiEndpoint.ApiEndpoint.Id<RemainingEndpoints>
  >(
    id: Id,
    fn: Route.HandlerFunction<ApiEndpoint.ApiEndpoint.ExtractById<RemainingEndpoints, Id>, R2, E2>
  ): <R1, E1>(
    builder: RouterBuilder<R1, E1, RemainingEndpoints>
  ) => RouterBuilder<
    | Exclude<R2, Router.RouteContext | ServerRequest.ServerRequest>
    | Exclude<R1, Router.RouteContext | ServerRequest.ServerRequest>
    | ApiEndpoint.ApiEndpoint.Context<ApiEndpoint.ApiEndpoint.ExtractById<RemainingEndpoints, Id>>,
    E1 | Exclude<E2, HttpError.HttpError>,
    ApiEndpoint.ApiEndpoint.ExcludeById<RemainingEndpoints, 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: Route.HandlerFunction<Api.Api.EndpointById<A, Id>, R, E>
) => RouterBuilder.Handler<Api.Api.EndpointById<A, Id>, E, R>

Added in v1.0.0

destructors

build

Create an App instance.

Signature

export declare const build: <R, E>(
  builder: RouterBuilder<R, E, never>
) => App.Default<E, SwaggerRouter.SwaggerFiles | R>

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: <R, E, RemainingEndpoints extends ApiEndpoint.ApiEndpoint.Any>(
  builder: RouterBuilder<R, E, RemainingEndpoints>
) => App.Default<E, SwaggerRouter.SwaggerFiles | R>

Added in v1.0.0

getRouter

Handle an endpoint using a raw Router.Route.Handler.

Signature

export declare const getRouter: <R, E>(builder: RouterBuilder<R, E, any>) => Router.Router<E, R>

Added in v1.0.0

handling

handleRaw

Handle an endpoint using a raw Router.Route.Handler.

Signature

export declare const handleRaw: <
  R2,
  E2,
  RemainingEndpoints extends ApiEndpoint.ApiEndpoint.Any,
  Id extends ApiEndpoint.ApiEndpoint.Id<RemainingEndpoints>
>(
  id: Id,
  handler: Router.Route.Handler<E2, R2>
) => <R1, E1>(
  builder: RouterBuilder<R1, E1, RemainingEndpoints>
) => RouterBuilder<
  | R1
  | ApiEndpoint.ApiEndpoint.Context<ApiEndpoint.ApiEndpoint.ExtractById<RemainingEndpoints, Id>>
  | Exclude<R2, Router.RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
  E2 | E1 | ApiEndpoint.ApiEndpoint.Error<ApiEndpoint.ApiEndpoint.ExtractById<RemainingEndpoints, Id>>,
  ApiEndpoint.ApiEndpoint.ExcludeById<RemainingEndpoints, Id>
>

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<never, never, Api.Api.Endpoints<A>>

Added in v1.0.0

mapping

mapRouter

Modify the Router.

Signature

export declare const mapRouter: <R1, R2, E1, E2, RemainingEndpoints extends ApiEndpoint.ApiEndpoint.Any>(
  fn: (router: Router.Router<E1, R1>) => Router.Router<E2, R2>
) => (builder: RouterBuilder<R1, E1, RemainingEndpoints>) => RouterBuilder<R2, E2, RemainingEndpoints>

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<R, E, RemainingEndpoints extends ApiEndpoint.ApiEndpoint.Any> extends Pipeable.Pipeable {
  readonly remainingEndpoints: ReadonlyArray<RemainingEndpoints>
  readonly api: Api.Api.Any
  readonly router: Router.Router<E, R>
  readonly options: Options
}

Added in v1.0.0

RouterBuilder (namespace)

Added in v1.0.0

Handler (interface)

Signature

export interface Handler<Endpoint extends ApiEndpoint.ApiEndpoint.Any, E, R> {
  readonly handler: Route.HandlerFunction<Endpoint, R, E>
  readonly endpoint: Endpoint
}

Added in v1.0.0

Any (type alias)

Any router builder

Signature

export type Any = RouterBuilder<any, any, ApiEndpoint.ApiEndpoint.Any>

Added in v1.0.0