Skip to content

@codesoul-co/hypha-core / modules/runtime/event-store

模块用法

用于创建、记录或读取 Event 契约。Event store 模块公开 1 类、8 函数、8 接口。

从包入口导入

ts
import {
  InMemoryDurableEventStore,
  createPersistedEventBatch,
  decodeEventStreamHeadCursor,
  encodeEventStreamHeadCursor,
  eventStreamKey,
  hashEventAppendRequest,
  streamHeadListLimit,
  validateEventAppendRequest,
} from '@codesoul-co/hypha-core';

import type {
  DurableEventStore,
  EventAppendRequest,
  EventAppendResult,
  EventStreamHead,
  EventStreamScope,
  InMemoryDurableEventStoreOptions,
  ListEventStreamHeadsRequest,
  ListEventStreamHeadsResult,
} from '@codesoul-co/hypha-core';

// 完整导出列表见下方。

使用要点

  • 8 个类型/接口用于应用代码、Adapter 或测试中的静态契约;请使用 import type,运行时不应依赖它们。
  • 1 个类提供可实例化的运行时实现;构造参数与公开方法在各自条目中完整列出。
  • 8 个函数是该模块的直接操作入口;每个 overload 的必需/可选参数与返回类型均在下方列出。

公共导出

Symbol种类签名说明
InMemoryDurableEventStorenew InMemoryDurableEventStore(options: InMemoryDurableEventStoreOptions): InMemoryDurableEventStoreIn Memory Durable Event Store 类,共公开 7 个构造函数或成员;精确签名见本条目的声明与成员表。
createPersistedEventBatch函数createPersistedEventBatch(request: EventAppendRequest, firstSequence: number, firstGlobalSequence: number, recordedAt: string): PersistedFrameworkEvent[]Create Persisted Event Batch 函数,提供 1 个公开调用签名;参数与返回类型见下表。
decodeEventStreamHeadCursor函数decodeEventStreamHeadCursor(cursor: string): stringDecode Event Stream Head Cursor 函数,提供 1 个公开调用签名;参数与返回类型见下表。
encodeEventStreamHeadCursor函数encodeEventStreamHeadCursor(streamKey: string): stringEncode Event Stream Head Cursor 函数,提供 1 个公开调用签名;参数与返回类型见下表。
eventStreamKey函数eventStreamKey(scope: EventStreamScope): stringEvent Stream Key 函数,提供 1 个公开调用签名;参数与返回类型见下表。
hashEventAppendRequest函数hashEventAppendRequest(request: EventAppendRequest): stringHash Event Append Request 函数,提供 1 个公开调用签名;参数与返回类型见下表。
streamHeadListLimit函数streamHeadListLimit(limit?: number): numberStream Head List Limit 函数,提供 1 个公开调用签名;参数与返回类型见下表。
validateEventAppendRequest函数validateEventAppendRequest(request: EventAppendRequest): voidValidate Event Append Request 函数,提供 1 个公开调用签名;参数与返回类型见下表。
validateEventAppendSchemas函数validateEventAppendSchemas(registry: EventSchemaRegistry, request: EventAppendRequest): Promise<void>Validate Event Append Schemas 函数,提供 1 个公开调用签名;参数与返回类型见下表。
DurableEventStore接口interface DurableEventStoreDurable Event Store 接口,共包含 6 个公开字段或方法。
EventAppendRequest接口interface EventAppendRequestEvent Append Request 接口,共包含 7 个公开字段或方法。
EventAppendResult接口interface EventAppendResultEvent Append Result 接口,共包含 5 个公开字段或方法。
EventStreamHead接口interface EventStreamHeadEvent Stream Head 接口,共包含 5 个公开字段或方法。
EventStreamScope接口interface EventStreamScopeEvent Stream Scope 接口,共包含 3 个公开字段或方法。
InMemoryDurableEventStoreOptions接口interface InMemoryDurableEventStoreOptionsIn Memory Durable Event Store Options 接口,共包含 2 个公开字段或方法。
ListEventStreamHeadsRequest接口interface ListEventStreamHeadsRequestList Event Stream Heads Request 接口,共包含 2 个公开字段或方法。
ListEventStreamHeadsResult接口interface ListEventStreamHeadsResultList Event Stream Heads Result 接口,共包含 2 个公开字段或方法。

InMemoryDurableEventStore

In Memory Durable Event Store 类,共公开 7 个构造函数或成员;精确签名见本条目的声明与成员表。

声明

text
export declare class InMemoryDurableEventStore implements DurableEventStore {
    constructor(options: InMemoryDurableEventStoreOptions);
    append(request: EventAppendRequest): Promise<EventAppendResult>;
    readStream(scope: EventStreamScope, fromSequence?: number): Promise<PersistedFrameworkEvent[]>;
    readById(scope: EventStreamScope, eventId: string): Promise<PersistedFrameworkEvent | null>;
    getStreamHead(scope: EventStreamScope): Promise<EventStreamHead | null>;
    listStreamHeads(request?: ListEventStreamHeadsRequest): Promise<ListEventStreamHeadsResult>;
    health(): Promise<ProviderHealth>;
}

公开成员

成员种类签名说明
append方法append(request: EventAppendRequest): Promise<EventAppendResult>公开方法;参数与返回类型以签名列为准。
constructor构造函数(options: InMemoryDurableEventStoreOptions): InMemoryDurableEventStore创建该类的实例。
getStreamHead方法getStreamHead(scope: EventStreamScope): Promise<EventStreamHead | null>公开方法;参数与返回类型以签名列为准。
health方法health(): Promise<ProviderHealth>公开方法;参数与返回类型以签名列为准。
listStreamHeads方法listStreamHeads(request?: ListEventStreamHeadsRequest): Promise<ListEventStreamHeadsResult>公开方法;参数与返回类型以签名列为准。
readById方法readById(scope: EventStreamScope, eventId: string): Promise<PersistedFrameworkEvent | null>公开方法;参数与返回类型以签名列为准。
readStream方法readStream(scope: EventStreamScope, fromSequence?: number): Promise<PersistedFrameworkEvent[]>公开方法;参数与返回类型以签名列为准。

createPersistedEventBatch

Create Persisted Event Batch 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function createPersistedEventBatch(request: EventAppendRequest, firstSequence: number, firstGlobalSequence: number, recordedAt: string): PersistedFrameworkEvent[];

调用签名

text
createPersistedEventBatch(request: EventAppendRequest, firstSequence: number, firstGlobalSequence: number, recordedAt: string): PersistedFrameworkEvent[]

参数

参数类型必需说明
requestEventAppendRequest必需参数;接受的值由类型列定义。
firstSequencenumber必需参数;接受的值由类型列定义。
firstGlobalSequencenumber必需参数;接受的值由类型列定义。
recordedAtstring必需参数;接受的值由类型列定义。

返回值

  • 类型: PersistedFrameworkEvent<unknown>[]
  • 说明: 返回值契约由上述类型定义。

decodeEventStreamHeadCursor

Decode Event Stream Head Cursor 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function decodeEventStreamHeadCursor(cursor: string): string;

调用签名

text
decodeEventStreamHeadCursor(cursor: string): string

参数

参数类型必需说明
cursorstring必需参数;接受的值由类型列定义。

返回值

  • 类型: string
  • 说明: 返回值契约由上述类型定义。

encodeEventStreamHeadCursor

Encode Event Stream Head Cursor 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function encodeEventStreamHeadCursor(streamKey: string): string;

调用签名

text
encodeEventStreamHeadCursor(streamKey: string): string

参数

参数类型必需说明
streamKeystring必需参数;接受的值由类型列定义。

返回值

  • 类型: string
  • 说明: 返回值契约由上述类型定义。

eventStreamKey

Event Stream Key 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function eventStreamKey(scope: EventStreamScope): string;

调用签名

text
eventStreamKey(scope: EventStreamScope): string

参数

参数类型必需说明
scopeEventStreamScope必需参数;接受的值由类型列定义。

返回值

  • 类型: string
  • 说明: 返回值契约由上述类型定义。

hashEventAppendRequest

Hash Event Append Request 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function hashEventAppendRequest(request: EventAppendRequest): string;

调用签名

text
hashEventAppendRequest(request: EventAppendRequest): string

参数

参数类型必需说明
requestEventAppendRequest必需参数;接受的值由类型列定义。

返回值

  • 类型: string
  • 说明: 返回值契约由上述类型定义。

streamHeadListLimit

Stream Head List Limit 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function streamHeadListLimit(limit?: number): number;

调用签名

text
streamHeadListLimit(limit?: number): number

参数

参数类型必需说明
limitnumber可选参数;接受的值由类型列定义。

返回值

  • 类型: number
  • 说明: 返回值契约由上述类型定义。

validateEventAppendRequest

Validate Event Append Request 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function validateEventAppendRequest(request: EventAppendRequest): void;

调用签名

text
validateEventAppendRequest(request: EventAppendRequest): void

参数

参数类型必需说明
requestEventAppendRequest必需参数;接受的值由类型列定义。

返回值

  • 类型: void
  • 说明: 不返回值。

validateEventAppendSchemas

Validate Event Append Schemas 函数,提供 1 个公开调用签名;参数与返回类型见下表。

声明

text
export declare function validateEventAppendSchemas(registry: EventSchemaRegistry, request: EventAppendRequest): Promise<void>;

调用签名

text
validateEventAppendSchemas(registry: EventSchemaRegistry, request: EventAppendRequest): Promise<void>

参数

参数类型必需说明
registryEventSchemaRegistry必需参数;接受的值由类型列定义。
requestEventAppendRequest必需参数;接受的值由类型列定义。

返回值

  • 类型: Promise<void>
  • 说明: 返回值契约由上述类型定义。

DurableEventStore

Durable Event Store 接口,共包含 6 个公开字段或方法。

声明

text
export interface DurableEventStore {
    append(request: EventAppendRequest): Promise<EventAppendResult>;
    readStream(scope: EventStreamScope, fromSequence?: number): Promise<PersistedFrameworkEvent[]>;
    readById(scope: EventStreamScope, eventId: string): Promise<PersistedFrameworkEvent | null>;
    getStreamHead(scope: EventStreamScope): Promise<EventStreamHead | null>;
    listStreamHeads(request?: ListEventStreamHeadsRequest): Promise<ListEventStreamHeadsResult>;
    health(): Promise<ProviderHealth>;
}

契约成员

成员种类签名说明
append方法append(request: EventAppendRequest): Promise<EventAppendResult>公开方法;参数与返回类型以签名列为准。
getStreamHead方法getStreamHead(scope: EventStreamScope): Promise<EventStreamHead | null>公开方法;参数与返回类型以签名列为准。
health方法health(): Promise<ProviderHealth>公开方法;参数与返回类型以签名列为准。
listStreamHeads方法listStreamHeads(request?: ListEventStreamHeadsRequest): Promise<ListEventStreamHeadsResult>公开方法;参数与返回类型以签名列为准。
readById方法readById(scope: EventStreamScope, eventId: string): Promise<PersistedFrameworkEvent | null>公开方法;参数与返回类型以签名列为准。
readStream方法readStream(scope: EventStreamScope, fromSequence?: number): Promise<PersistedFrameworkEvent[]>公开方法;参数与返回类型以签名列为准。

EventAppendRequest

Event Append Request 接口,共包含 7 个公开字段或方法。

声明

text
export interface EventAppendRequest {
    scope: EventStreamScope;
    events: EventCreateInput[];
    expectedLastSequence: number;
    expectedRunRevision?: number;
    fencingToken?: number;
    idempotencyKey: string;
    transactionGroupId?: string;
}

契约成员

成员种类签名说明
events属性events: EventCreateInput<unknown>[]公开属性;类型、只读和可选状态以签名列为准。
expectedLastSequence属性expectedLastSequence: number公开属性;类型、只读和可选状态以签名列为准。
expectedRunRevision属性expectedRunRevision?: number公开属性;类型、只读和可选状态以签名列为准。
fencingToken属性fencingToken?: number公开属性;类型、只读和可选状态以签名列为准。
idempotencyKey属性idempotencyKey: string公开属性;类型、只读和可选状态以签名列为准。
scope属性scope: EventStreamScope公开属性;类型、只读和可选状态以签名列为准。
transactionGroupId属性transactionGroupId?: string公开属性;类型、只读和可选状态以签名列为准。

EventAppendResult

Event Append Result 接口,共包含 5 个公开字段或方法。

声明

text
export interface EventAppendResult {
    events: PersistedFrameworkEvent[];
    firstSequence: number;
    lastSequence: number;
    runRevision: number;
    reused: boolean;
}

契约成员

成员种类签名说明
events属性events: PersistedFrameworkEvent<unknown>[]公开属性;类型、只读和可选状态以签名列为准。
firstSequence属性firstSequence: number公开属性;类型、只读和可选状态以签名列为准。
lastSequence属性lastSequence: number公开属性;类型、只读和可选状态以签名列为准。
reused属性reused: boolean公开属性;类型、只读和可选状态以签名列为准。
runRevision属性runRevision: number公开属性;类型、只读和可选状态以签名列为准。

EventStreamHead

Event Stream Head 接口,共包含 5 个公开字段或方法。

声明

text
export interface EventStreamHead {
    scope: EventStreamScope;
    lastSequence: number;
    runRevision: number;
    fencingToken?: number;
    updatedAt: string;
}

契约成员

成员种类签名说明
fencingToken属性fencingToken?: number公开属性;类型、只读和可选状态以签名列为准。
lastSequence属性lastSequence: number公开属性;类型、只读和可选状态以签名列为准。
runRevision属性runRevision: number公开属性;类型、只读和可选状态以签名列为准。
scope属性scope: EventStreamScope公开属性;类型、只读和可选状态以签名列为准。
updatedAt属性updatedAt: string公开属性;类型、只读和可选状态以签名列为准。

EventStreamScope

Event Stream Scope 接口,共包含 3 个公开字段或方法。

声明

text
export interface EventStreamScope {
    tenantId?: string;
    userId: string;
    runId: string;
}

契约成员

成员种类签名说明
runId属性runId: string公开属性;类型、只读和可选状态以签名列为准。
tenantId属性tenantId?: string公开属性;类型、只读和可选状态以签名列为准。
userId属性userId: string公开属性;类型、只读和可选状态以签名列为准。

InMemoryDurableEventStoreOptions

In Memory Durable Event Store Options 接口,共包含 2 个公开字段或方法。

  • 种类: 接口
  • 导入: import type { InMemoryDurableEventStoreOptions } from '@codesoul-co/hypha-core';
  • 源码模块: modules/runtime/event-store

声明

text
export interface InMemoryDurableEventStoreOptions {
    schemaRegistry: EventSchemaRegistry;
    now?: () => string;
}

契约成员

成员种类签名说明
now方法now?(): string公开方法;参数与返回类型以签名列为准。
schemaRegistry属性schemaRegistry: EventSchemaRegistry公开属性;类型、只读和可选状态以签名列为准。

ListEventStreamHeadsRequest

List Event Stream Heads Request 接口,共包含 2 个公开字段或方法。

  • 种类: 接口
  • 导入: import type { ListEventStreamHeadsRequest } from '@codesoul-co/hypha-core';
  • 源码模块: modules/runtime/event-store

声明

text
export interface ListEventStreamHeadsRequest {
    cursor?: string;
    limit?: number;
}

契约成员

成员种类签名说明
cursor属性cursor?: string公开属性;类型、只读和可选状态以签名列为准。
limit属性limit?: number公开属性;类型、只读和可选状态以签名列为准。

ListEventStreamHeadsResult

List Event Stream Heads Result 接口,共包含 2 个公开字段或方法。

  • 种类: 接口
  • 导入: import type { ListEventStreamHeadsResult } from '@codesoul-co/hypha-core';
  • 源码模块: modules/runtime/event-store

声明

text
export interface ListEventStreamHeadsResult {
    heads: EventStreamHead[];
    nextCursor?: string;
}

契约成员

成员种类签名说明
heads属性heads: EventStreamHead[]公开属性;类型、只读和可选状态以签名列为准。
nextCursor属性nextCursor?: string公开属性;类型、只读和可选状态以签名列为准。