Skip to content

MessageStorage

15 exports Added in v1.0.0 Source

Constructors

make

Added in v1.0.0 Source

Signature

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

makeEncoded

Added in v1.0.0 Source

Signature

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

Constructors

noop

Added in v1.0.0 Source

Signature

declare const noop: MessageStorage["Type"];

Context

Signature

declare class MessageStorage extends any {
  constructor();
}

Encoded

Encoded type

Added in v1.0.0 Source

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

layerMemory

Added in v1.0.0 Source

Signature

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

layerNoop

Added in v1.0.0 Source

Signature

declare const layerNoop: Layer.Layer<MessageStorage>;

Memory

MemoryDriver

Added in v1.0.0 Source

Signature

declare class MemoryDriver extends any {
  constructor();
}

MemoryEntry type

Added in v1.0.0 Source

Signature

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

SaveResult

SaveResult

Added in v1.0.0 Source

Signature

declare const SaveResult: {
  readonly $is: <Tag extends "Success" | "Duplicate">(
    tag: Tag,
  ) => {
    <T extends SaveResult<any>>(
      u: T,
    ): u is T & {
      readonly _tag: Tag;
    };
    (u: unknown): u is
      | Extract<
          Success,
          {
            readonly _tag: Tag;
          }
        >
      | Extract<
          Duplicate<unknown>,
          {
            readonly _tag: Tag;
          }
        >;
  };
  readonly $match: {
    <
      A,
      B,
      C,
      D,
      Cases extends {
        Duplicate: (args: Duplicate<A extends Any ? A : never>) => any;
        Success: (args: Success) => any;
      },
    >(
      cases: Cases,
    ): (
      self: SaveResult<A extends Any ? A : never>,
    ) => Unify<ReturnType<Cases["Success" | "Duplicate"]>>;
    <
      A,
      B,
      C,
      D,
      Cases extends {
        Duplicate: (args: Duplicate<A extends Any ? A : never>) => any;
        Success: (args: Success) => any;
      },
    >(
      self: SaveResult<A extends Any ? A : never>,
      cases: Cases,
    ): Unify<ReturnType<Cases["Success" | "Duplicate"]>>;
  };
  Duplicate: <A>(args: {
    readonly lastReceivedReply: Option<Reply<A extends Any ? A : never>>;
    readonly originalId: Snowflake;
  }) => Duplicate<A extends Any ? A : never>;
  Success: <A>(args: void) => Success;
};

SaveResult

Added in v1.0.0 Source

SaveResult type

Added in v1.0.0 Source

Signature

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

Signature

declare const SaveResultEncoded: {
  readonly $is: <Tag extends "Success" | "Duplicate">(
    tag: Tag,
  ) => (u: unknown) => u is
    | Extract<
        Success,
        {
          readonly _tag: Tag;
        }
      >
    | Extract<
        DuplicateEncoded,
        {
          readonly _tag: Tag;
        }
      >;
  readonly $match: {
    <
      Cases extends {
        Duplicate: (args: DuplicateEncoded) => any;
        Success: (args: Success) => any;
      },
    >(
      cases: Cases,
    ): (value: Encoded) => Unify<ReturnType<Cases["Success" | "Duplicate"]>>;
    <
      Cases extends {
        Duplicate: (args: DuplicateEncoded) => any;
        Success: (args: Success) => any;
      },
    >(
      value: Encoded,
      cases: Cases,
    ): Unify<ReturnType<Cases["Success" | "Duplicate"]>>;
  };
  Duplicate: ConstructorFrom<DuplicateEncoded, "_tag">;
  Success: ConstructorFrom<Success, "_tag">;
};