Skip to content
Effect 4.0 is here. One ecosystem. Zero dependencies.

Procedure

15 exports Since v1.0.0 Source

Constructors

Since v1.0.0

Signature

declare function make<Requests extends Any, State>(): <Req extends Any>() => <R>(tag: Req["_tag"], handler: Handler<Req, State, Requests, R>) => Procedure<Req, State, R>

Signature

declare function makeSerializable<Requests extends Any, State>(): <Req extends All, IS, R, RS>(schema: any, handler: Handler<Req, State, Requests, R>) => SerializableProcedure<Req, State, any>

Models

Since v1.0.0

Signature

type Handler<Request extends TaggedRequest.Any, State, Requests extends TaggedRequest.Any, R> = (context: Procedure.Context<Requests | Request, Request, State>) => Effect.Effect<readonly [response: Request.Success<Request> | NoReply, state: State], Request.Error<Request>, R>

Procedure

interface
Since v1.0.0

Signature

interface Procedure<Request extends TaggedRequest.Any, State, R> extends Pipeable {
readonly [TypeId]: typeof TypeId;
readonly handler: Handler<Request, State, any, R>;
readonly tag: Request["_tag"];
}
Since v1.0.0

Signature

interface SerializableProcedure<Request extends Schema.TaggedRequest.All, State, R> extends Procedure<Request, State, R> {
readonly [SerializableTypeId]: typeof SerializableTypeId;
readonly schema: any;
}

TaggedRequest

interface
Since v1.0.0

Signature

interface TaggedRequest<Tag extends string, A, E> extends Request<A, E> {
readonly _tag: Tag;
}

Refinements

Signature

declare function isSerializable(u: unknown): u is SerializableProcedure<any, any, any>

Symbols

Since v1.0.0

Signature

declare const NoReply: typeof NoReply
Since v1.0.0

Signature

type NoReply = typeof NoReply

Type Ids

Signature

declare const SerializableTypeId: unique symbol

Signature

type SerializableTypeId = typeof SerializableTypeId
Since v1.0.0

Signature

declare const TypeId: unique symbol
Since v1.0.0

Signature

type TypeId = typeof TypeId