Thanks to visit codestin.com
Credit goes to effect-ts.github.io

Skip to main content Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

MessageStorage.ts overview

Since v1.0.0


Exports Grouped by Category


Constructors

noop

Signature

declare const noop: {
  readonly saveRequest: <R extends Rpc.Any>(
    envelope: Message.OutgoingRequest<R>
  ) => Effect.Effect<SaveResult<R>, PersistenceError | MalformedMessage>
  readonly saveEnvelope: (
    envelope: Message.OutgoingEnvelope
  ) => Effect.Effect<void, PersistenceError | MalformedMessage>
  readonly saveReply: <R extends Rpc.Any>(
    reply: Reply.ReplyWithContext<R>
  ) => Effect.Effect<void, PersistenceError | MalformedMessage>
  readonly clearReplies: (requestId: Snowflake.Snowflake) => Effect.Effect<void, PersistenceError>
  readonly repliesFor: <R extends Rpc.Any>(
    requests: Iterable<Message.OutgoingRequest<R>>
  ) => Effect.Effect<Array<Reply.Reply<R>>, PersistenceError | MalformedMessage>
  readonly repliesForUnfiltered: <R extends Rpc.Any>(
    requestIds: Iterable<Snowflake.Snowflake>
  ) => Effect.Effect<Array<Reply.ReplyEncoded<R>>, PersistenceError | MalformedMessage>
  readonly requestIdForPrimaryKey: (options: {
    readonly address: EntityAddress
    readonly tag: string
    readonly id: string
  }) => Effect.Effect<Option.Option<Snowflake.Snowflake>, PersistenceError>
  readonly registerReplyHandler: <R extends Rpc.Any>(
    message: Message.OutgoingRequest<R> | Message.IncomingRequest<R>
  ) => Effect.Effect<void, EntityNotAssignedToRunner>
  readonly unregisterReplyHandler: (requestId: Snowflake.Snowflake) => Effect.Effect<void>
  readonly unregisterShardReplyHandlers: (shardId: ShardId) => Effect.Effect<void>
  readonly unprocessedMessages: (
    shardIds: Iterable<ShardId>
  ) => Effect.Effect<Array<Message.Incoming<any>>, PersistenceError>
  readonly unprocessedMessagesById: <R extends Rpc.Any>(
    messageIds: Iterable<Snowflake.Snowflake>
  ) => Effect.Effect<Array<Message.Incoming<R>>, PersistenceError>
  readonly resetShards: (shardIds: Iterable<ShardId>) => Effect.Effect<void, PersistenceError>
  readonly resetAddress: (address: EntityAddress) => Effect.Effect<void, PersistenceError>
  readonly clearAddress: (address: EntityAddress) => Effect.Effect<void, PersistenceError>
}

Source

Since v1.0.0

Encoded

Encoded (type alias)

Signature

type Encoded = {
  /**
   * Save the provided message and its associated metadata.
   */
  readonly saveEnvelope: (options: {
    readonly envelope: Envelope.Envelope.Encoded
    readonly primaryKey: string | null
    readonly deliverAt: number | null
  }) => Effect.Effect<SaveResult.Encoded, PersistenceError>

  /**
   * Save the provided `Reply` and its associated metadata.
   */
  readonly saveReply: (reply: Reply.ReplyEncoded<any>) => Effect.Effect<void, PersistenceError>

  /**
   * Remove the replies for the specified request.
   */
  readonly clearReplies: (requestId: Snowflake.Snowflake) => Effect.Effect<void, PersistenceError>

  /**
   * Retrieves the request id for the specified primary key.
   */
  readonly requestIdForPrimaryKey: (
    primaryKey: string
  ) => Effect.Effect<Option.Option<Snowflake.Snowflake>, PersistenceError>

  /**
   * Retrieves the replies for the specified requests.
   *
   * - Un-acknowledged chunk replies
   * - WithExit replies
   */
  readonly repliesFor: (requestIds: Array<string>) => Effect.Effect<Array<Reply.ReplyEncoded<any>>, PersistenceError>

  /**
   * Retrieves the replies for the specified request ids.
   */
  readonly repliesForUnfiltered: (
    requestIds: Array<string>
  ) => Effect.Effect<Array<Reply.ReplyEncoded<any>>, PersistenceError>

  /**
   * Retrieves the unprocessed messages for the given shards.
   *
   * A message is unprocessed when:
   *
   * - Requests that have no WithExit replies
   *   - Or they have no unacknowledged chunk replies
   * - The latest AckChunk envelope
   * - All Interrupt's for unprocessed requests
   */
  readonly unprocessedMessages: (
    shardIds: ReadonlyArray<string>,
    now: number
  ) => Effect.Effect<
    Array<{
      readonly envelope: Envelope.Envelope.Encoded
      readonly lastSentReply: Option.Option<Reply.ReplyEncoded<any>>
    }>,
    PersistenceError
  >

  /**
   * Retrieves the unprocessed messages by id.
   */
  readonly unprocessedMessagesById: (
    messageIds: ReadonlyArray<Snowflake.Snowflake>,
    now: number
  ) => Effect.Effect<
    Array<{
      readonly envelope: Envelope.Envelope.Encoded
      readonly lastSentReply: Option.Option<Reply.ReplyEncoded<any>>
    }>,
    PersistenceError
  >

  /**
   * Reset the mailbox state for the provided address.
   */
  readonly resetAddress: (address: EntityAddress) => Effect.Effect<void, PersistenceError>

  /**
   * Clear all messages and replies for the provided address.
   */
  readonly clearAddress: (address: EntityAddress) => Effect.Effect<void, PersistenceError>

  /**
   * Reset the mailbox state for the provided shards.
   */
  readonly resetShards: (shardIds: ReadonlyArray<string>) => Effect.Effect<void, PersistenceError>
}

Source

Since v1.0.0

EncodedRepliesOptions (type alias)

Signature

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

Source

Since v1.0.0

EncodedUnprocessedOptions (type alias)

Signature

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

Source

Since v1.0.0

Memory

MemoryDriver (class)

Signature

declare class MemoryDriver

Source

Since v1.0.0

MemoryEntry (type alias)

Signature

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

Source

Since v1.0.0

SaveResult

SaveResult

Signature

declare const SaveResult: {
  readonly Success: <A>(args: void) => SaveResult.Success
  readonly Duplicate: <A>(args: {
    readonly originalId: Snowflake.Snowflake
    readonly lastReceivedReply: Option.Option<Reply.Reply<A extends Rpc.Any ? A : never>>
  }) => SaveResult.Duplicate<A extends Rpc.Any ? A : never>
  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<SaveResult.Success, { readonly _tag: Tag }>
      | Extract<SaveResult.Duplicate<never>, { readonly _tag: Tag }>
  }
  readonly $match: {
    <
      A,
      B,
      C,
      D,
      Cases extends {
        readonly Success: (args: SaveResult.Success) => any
        readonly Duplicate: (args: SaveResult.Duplicate<A extends Rpc.Any ? A : never>) => any
      }
    >(
      cases: Cases & { [K in Exclude<keyof Cases, "Success" | "Duplicate">]: never }
    ): (self: SaveResult<A extends Rpc.Any ? A : never>) => Unify<ReturnType<Cases["Success" | "Duplicate"]>>
    <
      A,
      B,
      C,
      D,
      Cases extends {
        readonly Success: (args: SaveResult.Success) => any
        readonly Duplicate: (args: SaveResult.Duplicate<A extends Rpc.Any ? A : never>) => any
      }
    >(
      self: SaveResult<A extends Rpc.Any ? A : never>,
      cases: Cases & { [K in Exclude<keyof Cases, "Success" | "Duplicate">]: never }
    ): Unify<ReturnType<Cases["Success" | "Duplicate"]>>
  }
}

Source

Since v1.0.0

SaveResult (type alias)

Signature

type SaveResult<R> = SaveResult.Success | SaveResult.Duplicate<R>

Source

Since v1.0.0

SaveResult (namespace)

Source

Since v1.0.0

Success (interface)

Signature

export interface Success {
  readonly _tag: "Success"
}

Source

Since v1.0.0

Duplicate (interface)

Signature

export interface Duplicate<R extends Rpc.Any> {
  readonly _tag: "Duplicate"
  readonly originalId: Snowflake.Snowflake
  readonly lastReceivedReply: Option.Option<Reply.Reply<R>>
}

Source

Since v1.0.0

DuplicateEncoded (interface)

Signature

export interface DuplicateEncoded {
  readonly _tag: "Duplicate"
  readonly originalId: Snowflake.Snowflake
  readonly lastReceivedReply: Option.Option<Reply.ReplyEncoded<any>>
}

Source

Since v1.0.0

Constructor (interface)

Signature

export interface Constructor extends Data.TaggedEnum.WithGenerics<1> {
  readonly taggedEnum: SaveResult<this["A"] extends Rpc.Any ? this["A"] : never>
}

Source

Since v1.0.0

Encoded (type alias)

Signature

type Encoded = SaveResult.Success | SaveResult.DuplicateEncoded

Source

Since v1.0.0

SaveResultEncoded

Signature

declare const SaveResultEncoded: {
  readonly Success: Data.Case.Constructor<SaveResult.Success, "_tag">
  readonly Duplicate: Data.Case.Constructor<SaveResult.DuplicateEncoded, "_tag">
  readonly $is: <Tag extends "Success" | "Duplicate">(
    tag: Tag
  ) => (
    u: unknown
  ) => u is
    | Extract<SaveResult.Success, { readonly _tag: Tag }>
    | Extract<SaveResult.DuplicateEncoded, { readonly _tag: Tag }>
  readonly $match: {
    <
      const Cases extends {
        readonly Success: (args: SaveResult.Success) => any
        readonly Duplicate: (args: SaveResult.DuplicateEncoded) => any
      }
    >(
      cases: Cases & { [K in Exclude<keyof Cases, "Success" | "Duplicate">]: never }
    ): (value: SaveResult.Encoded) => Unify<ReturnType<Cases["Success" | "Duplicate"]>>
    <
      const Cases extends {
        readonly Success: (args: SaveResult.Success) => any
        readonly Duplicate: (args: SaveResult.DuplicateEncoded) => any
      }
    >(
      value: SaveResult.Encoded,
      cases: Cases & { [K in Exclude<keyof Cases, "Success" | "Duplicate">]: never }
    ): Unify<ReturnType<Cases["Success" | "Duplicate"]>>
  }
}

Source

Since v1.0.0

constructors

make

Signature

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

Source

Since v1.0.0

makeEncoded

Signature

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

Source

Since v1.0.0

context

MessageStorage (class)

Signature

declare class MessageStorage

Source

Since v1.0.0

layers

layerMemory

Signature

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

Source

Since v1.0.0

layerNoop

Signature

declare const layerNoop: Layer.Layer<MessageStorage, never, never>

Source

Since v1.0.0