UNPKG

@delta-base/server

Version:
1 lines 94.8 kB
{"version":3,"sources":["../src/clients/event-bus.ts","../src/clients/event-store.ts","../src/clients/management.ts","../src/utils/http.ts","../src/deltabase.ts"],"names":["SubscriberType","SubscriptionStatus"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * EventBus API client for managing event subscriptions\n */\nimport type { HttpClient } from '../utils/http';\n\n/**\n * API response for subscription operations\n * @internal\n */\ninterface SubscriptionResponse {\n subscriptionId: string;\n status: string;\n statusDetails?: {\n lastError?: string;\n lastErrorAt?: string;\n retryCount?: number;\n nextRetryAt?: string;\n };\n eventStoreId: string;\n eventFilter: string;\n subscriberId: string;\n subscriberType: string;\n createdAt: string;\n updatedAt: string;\n lastProcessedEventGlobalPosition?: number;\n isExistingSubscription?: boolean;\n message?: string;\n}\n\n/**\n * Available subscriber types for event subscriptions\n */\nexport enum SubscriberType {\n DurableObject = 'durable_object',\n Webhook = 'webhook',\n Queue = 'queue',\n CloudflareWorkflow = 'cloudflare_workflow',\n WebSocket = 'websocket',\n}\n\n/**\n * Subscription status values\n */\nexport enum SubscriptionStatus {\n Active = 'ACTIVE',\n Suspended = 'SUSPENDED',\n Error = 'ERROR',\n Initializing = 'INITIALIZING',\n Deleted = 'DELETED',\n}\n\n/**\n * Retry policy configuration for subscribers\n */\nexport interface RetryPolicy {\n /**\n * Maximum number of delivery attempts before giving up\n */\n maxAttempts: number;\n\n /**\n * How many minutes to wait between retry attempts\n */\n backoffMinutes: number;\n}\n\n/**\n * Base configuration shared by all subscriber types\n */\nexport interface BaseSubscriberConfig {\n /**\n * Configuration for retry behavior\n */\n retryPolicy?: RetryPolicy;\n}\n\n/**\n * Configuration for Durable Object subscribers\n */\nexport interface DurableObjectConfig extends BaseSubscriberConfig {\n /**\n * The Durable Object namespace binding name in your worker\n */\n namespace: string;\n\n /**\n * The ID of the Durable Object instance to deliver events to\n */\n id: string;\n}\n\n/**\n * Configuration for webhook subscribers\n */\nexport interface WebhookConfig extends BaseSubscriberConfig {\n /**\n * The URL that will receive HTTP POST requests with events\n */\n url: string;\n\n /**\n * Custom headers to include in the webhook request\n */\n headers?: Record<string, string>;\n\n /**\n * Timeout in milliseconds for the webhook request\n */\n timeoutMs?: number;\n}\n\n/**\n * Configuration for queue subscribers\n */\nexport interface QueueConfig extends BaseSubscriberConfig {\n /**\n * The name of the queue to send events to\n */\n queueName: string;\n\n /**\n * The region of the queue\n */\n region?: string;\n\n /**\n * Maximum number of events to batch in a single queue message\n */\n batchSize?: number;\n}\n\n/**\n * Configuration for Cloudflare Workflow subscribers\n */\nexport interface CloudflareWorkflowConfig extends BaseSubscriberConfig {\n /**\n * The name of the workflow binding in your worker\n */\n bindingName: string;\n}\n\n/**\n * Configuration for WebSocket subscribers\n */\nexport interface WebSocketConfig extends BaseSubscriberConfig {\n /**\n * The ID of the WebSocket manager to broadcast events to\n */\n managerId: string;\n}\n\n/**\n * Union type for all subscriber configurations\n */\nexport type SubscriberConfig = {\n type: SubscriberType.Webhook;\n config: WebhookConfig;\n};\n// | {\n// type: SubscriberType.DurableObject;\n// config: DurableObjectConfig;\n// }\n// | {\n// type: SubscriberType.Webhook;\n// config: WebhookConfig;\n// }\n// | {\n// type: SubscriberType.Queue;\n// config: QueueConfig;\n// }\n// | {\n// type: SubscriberType.CloudflareWorkflow;\n// config: CloudflareWorkflowConfig;\n// }\n// | {\n// type: SubscriberType.WebSocket;\n// config: WebSocketConfig;\n// };\n\n/**\n * Type of initial position for subscriptions\n */\nexport type InitialPosition = 'latest' | 'earliest';\n\n/**\n * Event filter pattern for subscriptions\n */\nexport type EventFilterPattern = string | string[];\n\n/**\n * Status details for a subscription\n */\nexport interface SubscriptionStatusDetails {\n /**\n * Last error message if the subscription is in an error state\n */\n lastError?: string;\n\n /**\n * When the last error occurred\n */\n lastErrorAt?: string;\n\n /**\n * Number of retries that have been attempted\n */\n retryCount?: number;\n\n /**\n * When the next retry will be attempted\n */\n nextRetryAt?: string;\n}\n\n/**\n * Complete subscription information\n */\nexport interface Subscription {\n /**\n * Unique identifier for this subscription\n */\n subscriptionId: string;\n\n /**\n * Current status of the subscription\n */\n status: SubscriptionStatus;\n\n /**\n * Additional details about the current status\n */\n statusDetails?: SubscriptionStatusDetails;\n\n /**\n * The event store this subscription is connected to\n */\n eventStoreId: string;\n\n /**\n * The event pattern this subscription is filtering on\n */\n eventFilter: string;\n\n /**\n * The ID of the subscriber\n */\n subscriberId: string;\n\n /**\n * Type of subscriber receiving events\n */\n subscriberType: SubscriberType;\n\n /**\n * When this subscription was created\n */\n createdAt: string;\n\n /**\n * When this subscription was last updated\n */\n updatedAt: string;\n\n /**\n * The global position of the last successfully delivered event\n */\n lastProcessedEventGlobalPosition?: number;\n\n /**\n * Whether this is an existing subscription that was found instead of creating a new one\n */\n isExistingSubscription?: boolean;\n\n /**\n * Human-readable message about the subscription operation\n */\n message?: string;\n}\n\n/**\n * Options for creating a subscription\n */\nexport interface SubscribeOptions {\n /**\n * Pattern(s) determining which events to receive\n */\n eventFilter: EventFilterPattern;\n\n /**\n * Optional custom ID for this subscription. If not provided, one will be generated.\n */\n subscriberId?: string;\n\n /**\n * Configuration for the subscriber that will receive events\n */\n subscriber: SubscriberConfig;\n\n /**\n * The position in the message stream from which a consumer starts consuming messages\n * when there is no prior checkpoint. Defaults to latest.\n */\n initialPosition?: InitialPosition;\n}\n\n/**\n * Options for listing subscriptions\n */\nexport interface ListSubscriptionsOptions {\n /**\n * Filter results by subscriber type\n */\n subscriberType?: SubscriberType;\n\n /**\n * Filter results by event filter pattern\n */\n eventFilter?: string;\n\n /**\n * Maximum number of results to return\n */\n limit?: number;\n\n /**\n * Number of results to skip\n */\n offset?: number;\n}\n\n/**\n * Response from listing subscriptions\n */\nexport interface ListSubscriptionsResponse {\n /**\n * Array of subscription details\n */\n subscriptions: Subscription[];\n\n /**\n * Total number of subscriptions matching the query\n */\n totalCount: number;\n}\n\n/**\n * Type for received events from a subscription\n */\nexport interface SubscriptionEvent {\n /**\n * Unique identifier for the event\n */\n id: string;\n\n /**\n * Type of the event\n */\n type: string;\n\n /**\n * Event data payload\n */\n data: Record<string, unknown>;\n\n /**\n * Optional metadata associated with the event\n */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * EventBus client for managing subscriptions to an event store\n */\nexport class EventBus {\n private http: HttpClient;\n private eventStoreName: string;\n\n /**\n * Create a new EventBus client for a specific event store\n *\n * @param http - The HTTP client used for API requests\n * @param eventStoreName - The name of the event store to manage subscriptions for\n */\n constructor(http: HttpClient, eventStoreName: string) {\n this.http = http;\n this.eventStoreName = eventStoreName;\n }\n\n /**\n * Subscribe to events from this event store\n *\n * @param options - Configuration for the subscription\n * @returns The created subscription information\n * @throws {InvalidSubscriptionConfigError} When subscription configuration is invalid\n * @throws {EventStoreNotFoundError} When the event store doesn't exist\n * @throws {ValidationError} When request validation fails\n * @throws {AuthenticationError} When authentication fails\n *\n * @example\n * ```typescript\n * import {\n * isInvalidSubscriptionConfigError,\n * isEventStoreNotFoundError\n * } from '@delta-base/server';\n *\n * try {\n * const subscription = await eventBus.subscribe({\n * eventFilter: 'user.*',\n * subscriber: {\n * type: SubscriberType.Webhook,\n * config: {\n * url: 'https://example.com/webhook',\n * headers: { 'X-API-Key': 'secret' },\n * retryPolicy: {\n * maxAttempts: 3,\n * backoffMinutes: 5\n * }\n * }\n * }\n * });\n *\n * // Check if this is an existing subscription\n * if (subscription.isExistingSubscription) {\n * console.log('Found existing subscription:', subscription.message);\n * } else {\n * console.log('Created new subscription:', subscription.message);\n * }\n * } catch (error) {\n * if (isInvalidSubscriptionConfigError(error)) {\n * console.log(`Invalid configuration: ${error.configError}`);\n * // Handle invalid subscription config\n * } else if (isEventStoreNotFoundError(error)) {\n * console.log(`Event store '${error.eventStoreId}' not found`);\n * // Handle missing event store\n * } else {\n * throw error; // Re-throw unknown errors\n * }\n * }\n * ```\n */\n async subscribe(options: SubscribeOptions): Promise<Subscription> {\n const response = await this.http.post<SubscriptionResponse>(\n `/api/event-stores/${this.eventStoreName}/subscribe`,\n options as unknown as Record<string, unknown>\n );\n\n return this.mapSubscriptionResponse(response);\n }\n\n /**\n * Create a webhook subscription\n *\n * @param eventFilter - Pattern determining which events to receive\n * @param url - The URL that will receive HTTP POST requests with events\n * @param options - Additional configuration options\n * @returns The created subscription information\n *\n * @example\n * ```typescript\n * // Subscribe to all user events\n * const subscription = await eventBus.subscribeWebhook(\n * 'user.*',\n * 'https://example.com/webhook',\n * {\n * headers: { 'X-API-Key': 'secret' },\n * retryPolicy: {\n * maxAttempts: 3,\n * backoffMinutes: 5\n * }\n * }\n * );\n *\n * // Check if this is an existing subscription with the same configuration\n * if (subscription.isExistingSubscription) {\n * console.log('Reusing existing subscription:', subscription.message);\n * } else {\n * console.log('Created new subscription:', subscription.message);\n * }\n * ```\n */\n async subscribeWebhook(\n eventFilter: EventFilterPattern,\n url: string,\n options: Omit<WebhookConfig, 'url'> & {\n subscriberId?: string;\n initialPosition?: InitialPosition;\n } = {}\n ): Promise<Subscription> {\n const { subscriberId, initialPosition, ...webhookOptions } = options;\n\n return this.subscribe({\n eventFilter,\n subscriberId,\n initialPosition,\n subscriber: {\n type: SubscriberType.Webhook,\n config: {\n url,\n ...webhookOptions,\n },\n },\n });\n }\n\n // /**\n // * Create a Durable Object subscription\n // *\n // * @param eventFilter - Pattern determining which events to receive\n // * @param namespace - The Durable Object namespace binding name in your worker\n // * @param id - The ID of the Durable Object instance to deliver events to\n // * @param options - Additional configuration options\n // * @returns The created subscription information\n // *\n // * @example\n // * ```typescript\n // * // Subscribe to order events with a Durable Object\n // * const subscription = await eventBus.subscribeDurableObject(\n // * 'order.*',\n // * 'ORDER_PROCESSOR',\n // * 'order-processor-instance-1',\n // * {\n // * retryPolicy: {\n // * maxAttempts: 5,\n // * backoffMinutes: 10\n // * }\n // * }\n // * );\n // * ```\n // */\n // async subscribeDurableObject(\n // eventFilter: EventFilterPattern,\n // namespace: string,\n // id: string,\n // options: Omit<DurableObjectConfig, 'namespace' | 'id'> & {\n // subscriberId?: string;\n // initialPosition?: InitialPosition;\n // } = {}\n // ): Promise<Subscription> {\n // const { subscriberId, initialPosition, ...doOptions } = options;\n\n // return this.subscribe({\n // eventFilter,\n // subscriberId,\n // initialPosition,\n // subscriber: {\n // type: SubscriberType.DurableObject,\n // config: {\n // namespace,\n // id,\n // ...doOptions,\n // },\n // },\n // });\n // }\n\n // /**\n // * Create a queue subscription\n // *\n // * @param eventFilter - Pattern determining which events to receive\n // * @param queueName - The name of the queue to send events to\n // * @param options - Additional configuration options\n // * @returns The created subscription information\n // *\n // * @example\n // * ```typescript\n // * // Subscribe to notification events with a queue\n // * const subscription = await eventBus.subscribeQueue(\n // * 'notification.*',\n // * 'notification-queue',\n // * {\n // * region: 'us-east-1',\n // * batchSize: 10\n // * }\n // * );\n // * ```\n // */\n // async subscribeQueue(\n // eventFilter: EventFilterPattern,\n // queueName: string,\n // options: Omit<QueueConfig, 'queueName'> & {\n // subscriberId?: string;\n // initialPosition?: InitialPosition;\n // } = {}\n // ): Promise<Subscription> {\n // const { subscriberId, initialPosition, ...queueOptions } = options;\n\n // return this.subscribe({\n // eventFilter,\n // subscriberId,\n // initialPosition,\n // subscriber: {\n // type: SubscriberType.Queue,\n // config: {\n // queueName,\n // ...queueOptions,\n // },\n // },\n // });\n // }\n\n // /**\n // * Create a Cloudflare Workflow subscription\n // *\n // * @param eventFilter - Pattern determining which events to receive\n // * @param bindingName - The name of the workflow binding in your worker\n // * @param options - Additional configuration options\n // * @returns The created subscription information\n // *\n // * @example\n // * ```typescript\n // * // Subscribe to all events with a Cloudflare Workflow\n // * const subscription = await eventBus.subscribeWorkflow(\n // * '*',\n // * 'EVENT_WORKFLOW'\n // * );\n // * ```\n // */\n // async subscribeWorkflow(\n // eventFilter: EventFilterPattern,\n // bindingName: string,\n // options: Omit<CloudflareWorkflowConfig, 'bindingName'> & {\n // subscriberId?: string;\n // initialPosition?: InitialPosition;\n // } = {}\n // ): Promise<Subscription> {\n // const { subscriberId, initialPosition, ...workflowOptions } = options;\n\n // return this.subscribe({\n // eventFilter,\n // subscriberId,\n // initialPosition,\n // subscriber: {\n // type: SubscriberType.CloudflareWorkflow,\n // config: {\n // bindingName,\n // ...workflowOptions,\n // },\n // },\n // });\n // }\n\n // /**\n // * Create a WebSocket subscription\n // *\n // * @param eventFilter - Pattern determining which events to receive\n // * @param managerId - The ID of the WebSocket manager to broadcast events to\n // * @param options - Additional configuration options\n // * @returns The created subscription information\n // *\n // * @example\n // * ```typescript\n // * // Subscribe to notification events with WebSockets\n // * const subscription = await eventBus.subscribeWebSocket(\n // * 'notification.*',\n // * 'notifications-websocket-manager'\n // * );\n // * ```\n // */\n // async subscribeWebSocket(\n // eventFilter: EventFilterPattern,\n // managerId: string,\n // options: Omit<WebSocketConfig, 'managerId'> & {\n // subscriberId?: string;\n // initialPosition?: InitialPosition;\n // } = {}\n // ): Promise<Subscription> {\n // const { subscriberId, initialPosition, ...wsOptions } = options;\n\n // return this.subscribe({\n // eventFilter,\n // subscriberId,\n // initialPosition,\n // subscriber: {\n // type: SubscriberType.WebSocket,\n // config: {\n // managerId,\n // ...wsOptions,\n // },\n // },\n // });\n // }\n\n /**\n * Get details about a specific subscription\n *\n * @param subscriptionId - ID of the subscription to retrieve\n * @returns Subscription details\n *\n * @example\n * ```typescript\n * const subscription = await eventBus.getSubscription('sub_123456');\n * console.log(subscription.status); // 'ACTIVE'\n * ```\n */\n async getSubscription(subscriptionId: string): Promise<Subscription> {\n const response = await this.http.get<SubscriptionResponse>(\n `/api/event-stores/${this.eventStoreName}/subscriptions/${subscriptionId}`\n );\n\n return this.mapSubscriptionResponse(response);\n }\n\n /**\n * List all subscriptions for this event store\n *\n * @param options - Optional filtering and pagination parameters\n * @returns List of subscriptions and total count\n *\n * @example\n * ```typescript\n * // List all webhook subscriptions\n * const { subscriptions, totalCount } = await eventBus.listSubscriptions({\n * subscriberType: SubscriberType.Webhook,\n * limit: 20,\n * offset: 0\n * });\n * ```\n */\n async listSubscriptions(\n options: ListSubscriptionsOptions = {}\n ): Promise<ListSubscriptionsResponse> {\n const params: Record<string, string> = {};\n\n if (options.subscriberType) {\n params.subscriberType = options.subscriberType;\n }\n\n if (options.eventFilter) {\n params.eventFilter = options.eventFilter;\n }\n\n if (options.limit) {\n params.limit = options.limit.toString();\n }\n\n if (options.offset) {\n params.offset = options.offset.toString();\n }\n\n const response = await this.http.get<{\n subscriptions: SubscriptionResponse[];\n totalCount: number;\n }>(`/api/event-stores/${this.eventStoreName}/subscriptions`, params);\n\n return {\n subscriptions: response.subscriptions.map((sub) =>\n this.mapSubscriptionResponse(sub)\n ),\n totalCount: response.totalCount,\n };\n }\n\n /**\n * Unsubscribe from events (delete a subscription)\n *\n * @param subscriptionId - ID of the subscription to delete\n * @returns Success message\n *\n * @example\n * ```typescript\n * const result = await eventBus.unsubscribe('sub_123456');\n * console.log(result.success); // true\n * ```\n */\n async unsubscribe(\n subscriptionId: string\n ): Promise<{ success: boolean; message: string }> {\n return this.http.delete<{ success: boolean; message: string }>(\n `/api/event-stores/${this.eventStoreName}/subscriptions/${subscriptionId}`\n );\n }\n\n /**\n * Map API subscription response to Subscription type\n *\n * @param response - The API response to map\n * @returns Mapped subscription\n * @private\n */\n private mapSubscriptionResponse(\n response: SubscriptionResponse\n ): Subscription {\n return {\n subscriptionId: response.subscriptionId,\n status: response.status as SubscriptionStatus,\n statusDetails: response.statusDetails,\n eventStoreId: response.eventStoreId,\n eventFilter: response.eventFilter,\n subscriberId: response.subscriberId,\n subscriberType: response.subscriberType as SubscriberType,\n createdAt: response.createdAt,\n updatedAt: response.updatedAt,\n lastProcessedEventGlobalPosition:\n response.lastProcessedEventGlobalPosition,\n isExistingSubscription: response.isExistingSubscription,\n message: response.message,\n };\n }\n}\n","/**\n * EventStore API client for interacting with event streams\n */\nimport type { HttpClient } from '../utils/http';\n\nimport type {\n Event,\n EventDataOf,\n EventMetadataOf,\n EventTypeOf,\n ReadEvent,\n StreamId,\n StreamPosition,\n} from './types/event-types';\n\nimport type {\n AggregateStreamOptions,\n AggregateStreamResult,\n AppendToStreamOptions,\n AppendToStreamResult,\n EventStore as EventStoreInterface,\n ReadStreamOptions,\n ReadStreamResult,\n} from './types/store-interfaces';\n\n/**\n * Request for appending events to a stream\n * @internal\n */\ninterface AppendEventsRequest {\n events: Event[];\n options?: {\n expectedStreamVersion?: number | 'no_stream' | 'stream_exists' | 'any';\n };\n}\n\n/**\n * Response from appending events to a stream\n * @internal\n */\ninterface AppendEventsResponse {\n success: boolean;\n nextExpectedStreamVersion: number;\n eventsWritten?: number;\n}\n\n/**\n * API response type for reading a stream\n */\ntype ApiReadStreamResponse<EventType extends Event = Event> = {\n events: Array<ReadEvent<EventType>>;\n currentStreamVersion: StreamPosition;\n streamExists?: boolean;\n};\n\n/**\n * API response type for querying events\n */\ntype ApiQueryEventsResponse<EventType extends Event = Event> = {\n events: Array<ReadEvent<EventType>>;\n pagination: {\n limit: number;\n offset: number;\n total?: number;\n hasMore: boolean;\n };\n};\n\n/**\n * API response type for querying streams\n */\ntype ApiQueryStreamsResponse = {\n streams: Array<StreamInfo>;\n pagination: {\n limit: number;\n offset: number;\n total?: number;\n hasMore: boolean;\n };\n};\n\n/**\n * Stream information returned from a query\n */\nexport interface StreamInfo {\n streamId: string;\n streamPosition: StreamPosition;\n streamType: string;\n streamMetadata: Record<string, unknown>;\n isArchived: boolean;\n lastArchivedPosition: StreamPosition;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Query parameters for filtering events\n */\nexport interface QueryEventsOptions {\n streamId?: string;\n type?: string | string[];\n eventId?: string;\n transactionId?: string;\n fromPosition?: number;\n toPosition?: number;\n fromDate?: string;\n toDate?: string;\n phase?: number;\n includeArchived?: boolean;\n limit?: number;\n offset?: number;\n sortBy?: 'globalPosition' | 'createdAt' | 'streamPosition';\n sortDirection?: 'asc' | 'desc';\n includeCount?: boolean;\n}\n\n/**\n * Query parameters for filtering streams\n */\nexport interface QueryStreamsOptions {\n streamId?: string;\n streamType?: string | string[];\n streamIdPattern?: string;\n minPosition?: number;\n maxPosition?: number;\n fromDate?: string;\n toDate?: string;\n includeArchived?: boolean;\n includeMetadata?: boolean;\n limit?: number;\n offset?: number;\n sortBy?: 'streamPosition' | 'createdAt' | 'updatedAt' | 'streamId';\n sortDirection?: 'asc' | 'desc';\n includeCount?: boolean;\n}\n\n/**\n * Result of a query events operation\n */\nexport interface QueryEventsResult<EventType extends Event = Event> {\n events: ReadEvent<EventType>[];\n pagination: {\n limit: number;\n offset: number;\n total?: number;\n hasMore: boolean;\n };\n}\n\n/**\n * Result of a query streams operation\n */\nexport interface QueryStreamsResult {\n streams: StreamInfo[];\n pagination: {\n limit: number;\n offset: number;\n total?: number;\n hasMore: boolean;\n };\n}\n\n/**\n * Implementation of the EventStore interface for DeltaBase\n */\nexport class EventStore implements EventStoreInterface {\n private http: HttpClient;\n private eventStoreName: string;\n\n /**\n * Creates a new EventStore client instance\n *\n * @param http - The HTTP client to use for API requests\n * @param eventStoreName - The name of the event store to interact with\n */\n constructor(http: HttpClient, eventStoreName: string) {\n this.http = http;\n this.eventStoreName = eventStoreName;\n }\n\n /**\n * Aggregate events from a stream and compute a state\n *\n * @param streamId - The ID of the stream to aggregate events from\n * @param options - Configuration options for the aggregation process\n * @param options.initialState - Function that returns the initial state\n * @param options.evolve - Function that applies an event to the current state\n * @param options.read - Optional read options to control which events to include\n * @returns Promise resolving to the aggregation result with the computed state and stream metadata\n *\n * @example\n * ```typescript\n * // Define your state type and event types\n * type UserState = { email: string, isVerified: boolean };\n * type UserEvent =\n * | { type: 'user.created', data: { email: string } }\n * | { type: 'user.verified', data: { verifiedAt: string } };\n *\n * // Aggregate the stream into a state\n * const result = await eventStore.aggregateStream<UserState, UserEvent>(\n * 'user-123',\n * {\n * initialState: () => ({ email: '', isVerified: false }),\n * evolve: (state, event) => {\n * switch (event.type) {\n * case 'user.created':\n * return { ...state, email: event.data.email };\n * case 'user.verified':\n * return { ...state, isVerified: true };\n * default:\n * return state;\n * }\n * },\n * read: { from: 0 }\n * }\n * );\n * ```\n */\n async aggregateStream<State, EventType extends Event>(\n streamId: string,\n options: AggregateStreamOptions<State, EventType>\n ): Promise<AggregateStreamResult<State>> {\n // Read the events first\n const readResult = await this.readStream<EventType>(streamId, options.read);\n\n // Apply the events to the initial state\n let state = options.initialState();\n for (const event of readResult.events) {\n state = options.evolve(state, event);\n }\n\n return {\n currentStreamVersion: readResult.currentStreamVersion,\n state,\n streamExists: readResult.streamExists,\n };\n }\n\n /**\n * Read events from a stream\n *\n * @param streamId - The ID of the stream to read events from\n * @param options - The options for reading events\n * @param options.from - Optional starting position to read from\n * @param options.to - Optional ending position to read to\n * @param options.maxCount - Optional maximum number of events to read\n * @param options.expectedStreamVersion - Optional expected version for optimistic concurrency\n * @returns Promise resolving to the read result containing events and stream metadata\n *\n * @example\n * ```typescript\n * // Read all events from a stream\n * const result = await eventStore.readStream('user-123');\n *\n * // Read events with a specific starting position\n * const result = await eventStore.readStream('user-123', { from: 5 });\n *\n * // Read a specific range of events\n * const result = await eventStore.readStream('user-123', { from: 5, to: 10 });\n *\n * // Read a limited number of events\n * const result = await eventStore.readStream('user-123', { maxCount: 100 });\n * ```\n */\n async readStream<EventType extends Event>(\n streamId: string,\n options?: ReadStreamOptions\n ): Promise<ReadStreamResult<EventType>> {\n const url = `/api/event-stores/${this.eventStoreName}/streams/${streamId}`;\n\n // Convert interface options to API options\n const apiOptions: Record<string, string> = {};\n\n if (options) {\n if ('from' in options) {\n apiOptions.from = options.from.toString();\n }\n\n if ('to' in options) {\n