Router overview
Added in v1.0.0
Table of contents
combinators
toHandler
Signature
export declare const toHandler: <R extends Router<any, any>>(
router: R,
options?: { readonly spanPrefix?: string }
) => (u: unknown) => Stream.Stream<Router.Response, ParseError, Router.Context<R>>
Added in v1.0.0
toHandlerEffect
Signature
export declare const toHandlerEffect: <R extends Router<any, any>>(
router: R,
options?: { readonly spanPrefix?: string }
) => (u: unknown) => Effect.Effect<readonly any[], ParseError, Router.Context<R>>
Added in v1.0.0
toHandlerRaw
Signature
export declare const toHandlerRaw: <R extends Router<any, any>>(
router: R
) => <Req extends Router.Request<R>>(request: Req) => Stream.Stream<A, E, R>
Added in v1.0.0
toHandlerUndecoded
Signature
export declare const toHandlerUndecoded: <R extends Router<any, any>>(
router: R
) => <Req extends Router.Request<R>>(request: Req) => Rpc.Rpc.ResultUndecoded<Req, Router.Context<R>>
Added in v1.0.0
constructors
make
Signature
export declare const make: <Rpcs extends readonly (Rpc.Rpc<any, any> | Router<any, any>)[]>(
...rpcs: Rpcs
) => Router<
any,
| Rpc.Rpc.Context<Extract<Rpcs[number], { readonly [Rpc.TypeId]: Rpc.TypeId }>>
| Router.Context<Extract<Rpcs[number], { readonly [TypeId]: TypeId }>>
>
Added in v1.0.0
context
provideService
Signature
export declare const provideService: {
<I, S>(
tag: Context.Tag<I, S>,
service: S
): <Reqs extends Schema.TaggedRequest.Any, R>(self: Router<Reqs, R>) => Router<Reqs, Exclude<R, I>>
<Reqs extends Schema.TaggedRequest.Any, R, I, S>(
self: Router<Reqs, R>,
tag: Context.Tag<I, S>,
service: S
): Router<Reqs, Exclude<R, I>>
}
Added in v1.0.0
provideServiceEffect
Signature
export declare const provideServiceEffect: {
<I, S, E, R2>(
tag: Context.Tag<I, S>,
effect: Effect.Effect<S, E, R2>
): <Reqs extends Schema.TaggedRequest.Any, R>(self: Router<Reqs, R>) => Router<Reqs, R2 | Exclude<R, I>>
<Reqs extends Schema.TaggedRequest.Any, R, I, S, E, R2>(
self: Router<Reqs, R>,
tag: Context.Tag<I, S>,
effect: Effect.Effect<S, E, R2>
): Router<Reqs, R2 | Exclude<R, I>>
}
Added in v1.0.0
models
Router (interface)
Signature
export interface Router<Reqs extends Schema.TaggedRequest.Any, R> extends Pipeable {
readonly [TypeId]: TypeId
readonly rpcs: ReadonlySet<Rpc.Rpc<Reqs, R>>
}
Added in v1.0.0
Router (namespace)
Added in v1.0.0
Context (type alias)
Signature
export type Context<A extends Router<any, any>> =
A extends Router<infer Req, infer R> ? R | Serializable.SerializableWithResult.Context<Req> : never
Added in v1.0.0
ContextRaw (type alias)
Signature
export type ContextRaw<A extends Router<any, any>> =
A extends Router<infer Req, infer R> ? R | Serializable.Serializable.Context<Req> : never
Added in v1.0.0
Request (type alias)
Signature
export type Request<A extends Router<any, any>> = A extends Router<infer Req, infer _R> ? Req : never
Added in v1.0.0
Response (type alias)
Signature
export type Response = [
index: number,
response: Schema.ExitEncoded<any, any> | ReadonlyArray<Schema.ExitEncoded<any, any>>
]
Added in v1.0.0
ResponseEffect (type alias)
Signature
export type ResponseEffect = Schema.ExitEncoded<any, any> | ReadonlyArray<Schema.ExitEncoded<any, any>>
Added in v1.0.0
refinements
isRouter
Signature
export declare const isRouter: (u: unknown) => u is Router<any, any>
Added in v1.0.0
type ids
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