Rpc
Constructors
Signature
interface AnySchema extends Pipeable { [key: number]: any; readonly annotations: any; readonly ast: AST; readonly Context: any; readonly Encoded: any; readonly make?: (params: any, ...rest: readonly Array<any>) => any; readonly Type: any;}AnyTaggedRequestSchema interface
Added in v1.0.0
Source
Signature
interface AnyTaggedRequestSchema extends AnySchema { [key: number]: any; readonly _tag: string; readonly failure: All; readonly success: Any;}exitSchema
Added in v1.0.0
Source
Signature
declare function exitSchema<R extends Any>(self: R): anyfromTaggedRequest
Added in v1.0.0
Source
Signature
declare function fromTaggedRequest<S extends AnyTaggedRequestSchema>(schema: S): From<S>Signature
declare function make<Tag extends string, Payload extends any = Void, Success extends Any = Void, Error extends All = Never, Stream extends boolean = false>(tag: Tag, options?: { readonly defect?: any; readonly error?: Error; readonly payload?: Payload; readonly primaryKey?: [Payload] extends [Fields] ? (payload: Simplify<View<NoInfer<Payload>, "Type", TypeOptionalKeys<NoInfer<Payload>>, TypeMutableKeys<NoInfer<Payload>>>>) => string : never; readonly stream?: Stream; readonly success?: Success;}): Rpc<Tag, Payload extends Fields ? Struct<Payload> : Payload, Stream extends true ? Stream<Success, Error> : Success, Stream extends true ? Never : Error>Guards
Models
Signature
type AddError<R extends Any, Error extends Schema.Schema.All> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? Rpc<_Tag, _Payload, _Success, _Error | Error, _Middleware> : neverAddMiddleware type
Added in v1.0.0
Source
Signature
type AddMiddleware<R extends Any, Middleware extends RpcMiddleware.TagClassAny> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? Rpc<_Tag, _Payload, _Success, _Error, _Middleware | Middleware> : neverSignature
interface Any extends Pipeable { readonly _tag: string; readonly [TypeId]: typeof TypeId; readonly key: string;}AnyWithProps interface
Added in v1.0.0
Source
Signature
interface AnyWithProps { readonly _tag: string; readonly [TypeId]: typeof TypeId; readonly annotations: Context<never>; readonly defectSchema: any; readonly errorSchema: All; readonly key: string; readonly middlewares: ReadonlySet<TagClassAnyWithProps>; readonly payloadSchema: AnySchema; readonly successSchema: Any;}Signature
type Context<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Payload["Context"] | _Success["Context"] | _Error["Context"] : neverSignature
type Error<R> = Schema.Schema.Type<ErrorSchema<R>>ErrorEncoded type
Added in v1.0.0
Source
Signature
type ErrorEncoded<R> = Schema.Schema.Encoded<ErrorSchema<R>>Signature
type ErrorExit<R> = SuccessSchema<R> extends RpcSchema.Stream<infer _A, infer _E> ? _E["Type"] | Error<R> : Error<R>ErrorExitEncoded type
Added in v1.0.0
Source
Signature
type ErrorExitEncoded<R> = SuccessSchema<R> extends RpcSchema.Stream<infer _A, infer _E> ? _E["Encoded"] | ErrorEncoded<R> : ErrorEncoded<R>ErrorSchema type
Added in v1.0.0
Source
Signature
type ErrorSchema<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Error | _Middleware : neverExcludeProvides type
Added in v1.0.0
Source
Signature
type ExcludeProvides<Env, R extends Any, Tag extends string> = Exclude<Env, ExtractProvides<R, Tag>>Signature
type Exit<R> = Exit_<SuccessExit<R>, ErrorExit<R>>ExitEncoded type
Added in v1.0.0
Source
Signature
type ExitEncoded<R, Defect = unknown> = Schema.ExitEncoded<SuccessExitEncoded<R>, ErrorExitEncoded<R>, Defect>ExtractProvides type
Added in v1.0.0
Source
Signature
type ExtractProvides<R extends Any, Tag extends string> = R extends Rpc<Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Middleware extends { readonly provides: Context_.Tag<infer _I, infer _S>;} ? _I : never : neverExtractTag type
Added in v1.0.0
Source
Signature
type ExtractTag<R extends Any, Tag extends string> = R extends Rpc<Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? R : neverSignature
interface From<S extends AnyTaggedRequestSchema> extends Rpc<S["_tag"], S, S["success"], S["failure"]> { constructor(_: never);}Represents an implemented rpc.
Signature
interface Handler<Tag extends string> { readonly _: typeof _; readonly context: never; readonly handler: (request: any, options: { readonly clientId: number; readonly headers: Headers; }) => Effect<any, any, never> | Stream<any, any, never>; readonly tag: Tag;}Signature
type IsStream<R extends Any, Tag extends string> = R extends Rpc<Tag, infer _Payload, RpcSchema.Stream<infer _A, infer _E>, infer _Error, infer _Middleware> ? true : neverMiddleware type
Added in v1.0.0
Source
Signature
type Middleware<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? Context_.Tag.Identifier<_Middleware> : neverMiddlewareClient type
Added in v1.0.0
Source
Signature
type MiddlewareClient<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Middleware extends { readonly requiredForClient: true;} ? RpcMiddleware.ForClient<Context_.Tag.Identifier<_Middleware>> : never : neverSignature
type Payload<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Payload["Type"] : neverPayloadConstructor type
Added in v1.0.0
Source
Signature
type PayloadConstructor<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Payload extends { readonly fields: Schema.Struct.Fields;} ? Schema.Simplify<Schema.Struct.Constructor<_Payload["fields"]>> : _Payload["Type"] : neverSignature
type Prefixed<Rpcs extends Any, Prefix extends string> = Rpcs extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? Rpc<`${Prefix}${_Tag}`, _Payload, _Success, _Error, _Middleware> : neverResultFrom type
Added in v1.0.0
Source
Signature
type ResultFrom<R extends Any, Context> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? [_Success] extends [RpcSchema.Stream<infer _SA, infer _SE>] ? Stream<_SA["Type"], _SE["Type"] | _Error["Type"], Context> | Effect<ReadonlyMailbox<_SA["Type"], _SE["Type"] | _Error["Type"]>, _SE["Type"] | Schema.Schema.Type<_Error>, Context> : Effect<_Success["Type"], _Error["Type"], Context> : neverRepresents an API endpoint. An API endpoint is mapped to a single route on
the underlying HttpRouter.
Signature
interface Rpc<in out Tag extends string, out Payload extends AnySchema = typeof Schema.Void, out Success extends Schema.Schema.Any = typeof Schema.Void, out Error extends Schema.Schema.All = typeof Schema.Never, out Middleware extends RpcMiddleware.TagClassAny = never> extends Pipeable { constructor(_: never); readonly _tag: Tag; readonly [TypeId]: typeof TypeId; readonly annotations: Context<never>; readonly defectSchema: any; readonly errorSchema: Error; readonly key: string; readonly middlewares: ReadonlySet<Middleware>; readonly payloadSchema: Payload; readonly successSchema: Success; annotate<I, S>(tag: Tag<I, S>, value: S): Rpc<Tag, Payload, Success, Error, Middleware>; annotateContext<I>(context: Context<I>): Rpc<Tag, Payload, Success, Error, Middleware>; middleware<M extends TagClassAny>(middleware: M): Rpc<Tag, Payload, Success, Error, Middleware | M>; prefix<Prefix extends string>(prefix: Prefix): Rpc<`${Prefix}${Tag}`, Payload, Success, Error, Middleware>; setError<E extends Any>(schema: E): Rpc<Tag, Payload, Success, E, Middleware>; setPayload<P extends Fields | Struct<any>>(schema: P): Rpc<Tag, P extends Struct<_> ? P : P extends Fields ? Struct<P> : never, Success, Error, Middleware>; setSuccess<S extends Any>(schema: S): Rpc<Tag, Payload, S, Error, Middleware>;}Signature
type Success<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Success["Type"] : neverSuccessChunk type
Added in v1.0.0
Source
Signature
type SuccessChunk<R> = Success<R> extends Stream<infer _A, infer _E, infer _Env> ? _A : neverSuccessChunkEncoded type
Added in v1.0.0
Source
Signature
type SuccessChunkEncoded<R> = SuccessEncoded<R> extends Stream<infer _A, infer _E, infer _Env> ? _A : neverSuccessEncoded type
Added in v1.0.0
Source
Signature
type SuccessEncoded<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Success["Encoded"] : neverSuccessExit type
Added in v1.0.0
Source
Signature
type SuccessExit<R> = SuccessSchema<R> extends infer S ? S extends RpcSchema.Stream<infer _A, infer _E> ? void : Schema.Schema.Type<S> : neverSuccessExitEncoded type
Added in v1.0.0
Source
Signature
type SuccessExitEncoded<R> = SuccessSchema<R> extends infer S ? S extends RpcSchema.Stream<infer _A, infer _E> ? void : Schema.Schema.Encoded<S> : neverSuccessSchema type
Added in v1.0.0
Source
Signature
type SuccessSchema<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Success : neverSignature
type Tag<R> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? _Tag : neverSignature
type ToHandler<R extends Any> = R extends Rpc<infer _Tag, infer _Payload, infer _Success, infer _Error, infer _Middleware> ? Handler<_Tag> : neverToHandlerFn type
Added in v1.0.0
Source
Signature
type ToHandlerFn<Current extends Any, R = any> = (payload: Payload<Current>, options: { readonly clientId: number; readonly headers: Headers;}) => ResultFrom<Current, R> | Wrapper<ResultFrom<Current, R>>Type Ids
Wrapper
You can use fork to wrap a response Effect or Stream, to ensure that the
response is executed concurrently regardless of the RpcServer concurrency
setting.
Signature
declare const fork: <A extends object>(value: A) => A extends Wrapper<infer _> ? A : Wrapper<A>Signature
declare function isWrapper(u: object): u is Wrapper<any>uninterruptible
Added in v1.0.0
Source
You can use uninterruptible to wrap a response Effect or Stream, to ensure
that it is executed inside an uninterruptible region.
Signature
declare const uninterruptible: <A extends object>(value: A) => A extends Wrapper<infer _> ? A : Wrapper<A>Signature
declare function wrap(options: { readonly fork?: boolean; readonly uninterruptible?: boolean;}): <A extends object>(value: A) => A extends Wrapper<_> ? A : Wrapper<A>Signature
interface Wrapper<A> { readonly [WrapperTypeId]: typeof WrapperTypeId; readonly fork: boolean; readonly uninterruptible: boolean; readonly value: A;}WrapperTypeId
Added in v1.0.0
Source
Signature
declare const WrapperTypeId: unique symbolWrapperTypeId type
Added in v1.0.0
Source
Signature
type WrapperTypeId = typeof WrapperTypeId