Skip to content
// EFFECT DAYS 2026

MessageStorage

15 exports Since v1.0.0 Source

Constructors

Since v1.0.0

Signature

declare function make(storage: Omit<MessageStorage["Type"], "registerReplyHandler" | "unregisterReplyHandler" | "unregisterShardReplyHandlers">): Effect<any>

Signature

declare const makeEncoded: (encoded: Encoded) => Effect.Effect<MessageStorage["Type"], never, Snowflake.Generator>

Constructors

Since v1.0.0

Signature

declare const noop: MessageStorage["Type"]

Context

Signature

declare class MessageStorage extends any {
constructor();
}

Encoded

Since v1.0.0

Signature

type Encoded = {
readonly clearAddress: (address: EntityAddress) => Effect.Effect<void, PersistenceError>;
readonly clearReplies: (requestId: Snowflake.Snowflake) => Effect.Effect<void, PersistenceError>;
readonly repliesFor: (requestIds: Arr.NonEmptyArray<string>) => Effect.Effect<Array<Reply.ReplyEncoded<any>>, PersistenceError>;
readonly repliesForUnfiltered: (requestIds: Arr.NonEmptyArray<string>) => Effect.Effect<Array<Reply.ReplyEncoded<any>>, PersistenceError>;
readonly requestIdForPrimaryKey: (primaryKey: string) => Effect.Effect<Option.Option<Snowflake.Snowflake>, PersistenceError>;
readonly resetAddress: (address: EntityAddress) => Effect.Effect<void, PersistenceError>;
readonly resetShards: (shardIds: Arr.NonEmptyArray<string>) => Effect.Effect<void, PersistenceError>;
readonly saveEnvelope: (options: {
readonly deliverAt: number | null;
readonly envelope: Envelope.Envelope.Encoded;
readonly primaryKey: string | null;
}) => Effect.Effect<SaveResult.Encoded, PersistenceError>;
readonly saveReply: (reply: Reply.ReplyEncoded<any>) => Effect.Effect<void, PersistenceError>;
readonly unprocessedMessages: (shardIds: Arr.NonEmptyArray<string>, now: number) => Effect.Effect<Array<{
readonly envelope: Envelope.Envelope.Encoded;
readonly lastSentReply: Option.Option<Reply.ReplyEncoded<any>>;
}>, PersistenceError>;
readonly unprocessedMessagesById: (messageIds: Arr.NonEmptyArray<Snowflake.Snowflake>, now: number) => Effect.Effect<Array<{
readonly envelope: Envelope.Envelope.Encoded;
readonly lastSentReply: Option.Option<Reply.ReplyEncoded<any>>;
}>, PersistenceError>;
}

Signature

type EncodedRepliesOptions<A> = {
readonly cursor: Option.Option<A>;
readonly existingRequests: Array<string>;
readonly newRequests: Array<string>;
}

Signature

type EncodedUnprocessedOptions<A> = {
readonly cursor: Option.Option<A>;
readonly existingShards: Array<number>;
readonly newShards: Array<number>;
}

Layers

Signature

declare const layerMemory: Layer.Layer<MessageStorage | MemoryDriver, never, ShardingConfig>

Signature

declare const layerNoop: Layer.Layer<MessageStorage>

Memory

Signature

declare class MemoryDriver extends any {
constructor();
}
Since v1.0.0

Signature

type MemoryEntry = {
deliverAt: number | null;
readonly envelope: Envelope.Request.Encoded;
lastReceivedChunk: Option.Option<Reply.ChunkEncoded<any>>;
replies: Array<Reply.ReplyEncoded<any>>;
}

SaveResult

Signature

declare const SaveResult: GenericConstructor<Constructor>
Since v1.0.0

Signature

type SaveResult<R extends Rpc.Any> = SaveResult.Success | SaveResult.Duplicate<R>

Signature

declare const SaveResultEncoded: Constructor<Encoded>