@eventualize/core 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,27 +4,34 @@ import type IEvDbEventPayload from "@eventualize/types/events/IEvDbEventPayload"
4
4
  import EvDbStream from "../store/EvDbStream.js";
5
5
  import type { EvDbView } from "../view/EvDbView.js";
6
6
  import type { EvDbStreamFactoryConfig } from "./EvDbStreamFactoryTypes.js";
7
- import { IEvDbStreamFactory } from "./IEvDbStreamFactory.js";
7
+ import type { IEvDbStreamFactory } from "./IEvDbStreamFactory.js";
8
8
  /**
9
9
  * Type helper to extract event methods
10
10
  */
11
11
  type EventMethods<TEvents extends IEvDbEventPayload> = {
12
12
  [K in TEvents as `appendEvent${K["payloadType"]}`]: (event: Omit<K, "payloadType">) => Promise<void>;
13
13
  };
14
+ /**
15
+ * Maps { viewName: EvDbView<TState> } → { viewName: TState }
16
+ * so that stream.views.balance returns the state value directly
17
+ */
18
+ type TypedViewStates<TViews extends Record<string, EvDbView<unknown>>> = {
19
+ [K in keyof TViews]: TViews[K] extends EvDbView<infer TState> ? TState : never;
20
+ };
14
21
  /**
15
22
  * Type helper to create view accessors map
16
23
  */
17
- type ViewAccessors<TViews extends Record<string, EvDbView<any>>> = {
18
- readonly views: TViews;
24
+ type ViewAccessors<TViews extends Record<string, EvDbView<unknown>>> = {
25
+ readonly views: TypedViewStates<TViews>;
19
26
  };
20
27
  /**
21
28
  * Combined stream type with event methods and view accessors
22
29
  */
23
- export type StreamWithEventMethods<TEvents extends IEvDbEventPayload, TViews extends Record<string, EvDbView<any>> = {}> = EvDbStream & EventMethods<TEvents> & ViewAccessors<TViews>;
30
+ export type StreamWithEventMethods<TEvents extends IEvDbEventPayload, TViews extends Record<string, EvDbView<unknown>> = {}> = EvDbStream & EventMethods<TEvents> & ViewAccessors<TViews>;
24
31
  /**
25
32
  * Stream Factory - creates stream instances with configured views and dynamic event methods
26
33
  */
27
- export declare class EvDbStreamFactory<TEvents extends IEvDbEventPayload, TStreamType extends string, TViews extends Record<string, EvDbView<any>> = {}> implements IEvDbStreamFactory<TEvents, TStreamType, TViews> {
34
+ export declare class EvDbStreamFactory<TEvents extends IEvDbEventPayload, TStreamType extends string, TViews extends Record<string, EvDbView<unknown>> = {}> implements IEvDbStreamFactory<TEvents, TStreamType, TViews> {
28
35
  private readonly config;
29
36
  private DynamicStreamClass;
30
37
  constructor(config: EvDbStreamFactoryConfig<TEvents, TStreamType>);
@@ -47,5 +54,5 @@ export declare class EvDbStreamFactory<TEvents extends IEvDbEventPayload, TStrea
47
54
  /**
48
55
  * Factory function to create a StreamFactory
49
56
  */
50
- export declare function createEvDbStreamFactory<TEvents extends IEvDbEventPayload, TStreamType extends string, TViews extends Record<string, EvDbView<any>> = {}>(config: EvDbStreamFactoryConfig<TEvents, TStreamType>): IEvDbStreamFactory<TEvents, TStreamType, TViews>;
57
+ export declare function createEvDbStreamFactory<TEvents extends IEvDbEventPayload, TStreamType extends string, TViews extends Record<string, EvDbView<unknown>> = {}>(config: EvDbStreamFactoryConfig<TEvents, TStreamType>): IEvDbStreamFactory<TEvents, TStreamType, TViews>;
51
58
  export type { EvDbStreamFactoryConfig, EventTypeConfig } from "./EvDbStreamFactoryTypes.js";
@@ -24,14 +24,18 @@ export class EvDbStreamFactory {
24
24
  class DynamicStream extends EvDbStream {
25
25
  constructor(streamType, views, streamStorageAdapter, streamId, lastStreamOffset) {
26
26
  super(streamType, views, streamStorageAdapter, streamId, lastStreamOffset, messagesProducer);
27
- this.views = {};
28
- // Create view accessors
27
+ this._viewMap = {};
29
28
  views.forEach((view, index) => {
30
29
  const viewName = viewNames[index];
31
30
  if (viewName) {
32
- this.views[viewName] = view;
31
+ this._viewMap[viewName] = view;
33
32
  }
34
33
  });
34
+ this.views = new Proxy(this._viewMap, {
35
+ get(target, prop) {
36
+ return target[prop]?.state;
37
+ },
38
+ });
35
39
  }
36
40
  }
37
41
  // Add dynamic methods for each event type
@@ -76,9 +80,14 @@ export class EvDbStreamFactory {
76
80
  const lowestViewOffset = views.reduce((lowestOffset, currentView) => Math.min(lowestOffset, currentView.storeOffset), Number.MAX_VALUE);
77
81
  let streamOffset = -1;
78
82
  if (snapshotStorageAdapter) {
79
- const streamCursor = new EvDbStreamCursor(streamAddress, lowestViewOffset + 1);
83
+ // lowestViewOffset < 0 means no real snapshot exists yet (empty sentinel = -1).
84
+ // In that case start the cursor at 0 so event at offset 0 is not skipped.
85
+ const fromOffset = lowestViewOffset < 0 ? 0 : lowestViewOffset + 1;
86
+ const streamCursor = new EvDbStreamCursor(streamAddress, fromOffset);
80
87
  const events = await streamStorageAdapter.getEventsAsync(streamCursor);
81
- streamOffset = lowestViewOffset;
88
+ // Only advance streamOffset from -1 if there is at least one real snapshot.
89
+ if (lowestViewOffset >= 0)
90
+ streamOffset = lowestViewOffset;
82
91
  for await (const event of events) {
83
92
  views.forEach((view) => view.applyEvent(event));
84
93
  streamOffset = event.streamCursor.offset;
@@ -1 +1 @@
1
- {"version":3,"file":"EvDbStreamFactory.js","sourceRoot":"","sources":["../../src/factories/EvDbStreamFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EvDbStreamFactory.js","sourceRoot":"","sources":["../../src/factories/EvDbStreamFactory.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,11 @@ import type IEvDbStorageSnapshotAdapter from "@eventualize/types/adapters/IEvDbS
2
2
  import type IEvDbStorageStreamAdapter from "@eventualize/types/adapters/IEvDbStorageStreamAdapter";
3
3
  import type IEvDbEventPayload from "@eventualize/types/events/IEvDbEventPayload";
4
4
  import type { EvDbView } from "../view/EvDbView";
5
- import { StreamWithEventMethods } from "./EvDbStreamFactory";
5
+ import type { StreamWithEventMethods } from "./EvDbStreamFactory";
6
6
  /**
7
7
  * General interface for an EvDbStreamFactory implementation.
8
8
  */
9
- export interface IEvDbStreamFactory<TEvents extends IEvDbEventPayload, TStreamType extends string, TViews extends Record<string, EvDbView<any>> = {}> {
9
+ export interface IEvDbStreamFactory<TEvents extends IEvDbEventPayload, TStreamType extends string, TViews extends Record<string, EvDbView<unknown>> = {}> {
10
10
  create(streamId: string, streamStorageAdapter: IEvDbStorageStreamAdapter, snapshotStorageAdapter?: IEvDbStorageSnapshotAdapter, lastStreamOffset?: number): StreamWithEventMethods<TEvents, TViews>;
11
11
  get(streamId: string, streamStorageAdapter: IEvDbStorageStreamAdapter, snapshotStorageAdapter?: IEvDbStorageSnapshotAdapter): Promise<StreamWithEventMethods<TEvents, TViews>>;
12
12
  getStreamType(): TStreamType;
@@ -2,12 +2,12 @@ import type IEvDbEventPayload from "@eventualize/types/events/IEvDbEventPayload"
2
2
  import type EVDbMessagesProducer from "@eventualize/types/messages/EvDbMessagesProducer";
3
3
  import { EvDbStreamFactory } from "./EvDbStreamFactory.js";
4
4
  import type { StreamWithEventMethods } from "./EvDbStreamFactory.js";
5
- import type { ViewFactory, EvDbStreamEventHandlersMap } from "./EvDbViewFactory.js";
5
+ import type { EvDbStreamEventHandlersMap } from "./EvDbViewFactory.js";
6
6
  import type { EvDbView } from "../view/EvDbView.js";
7
7
  /**
8
8
  * Fluent builder for creating stream factories with inferred event types
9
9
  */
10
- export declare class StreamFactoryBuilder<TStreamType extends string, TEvents extends IEvDbEventPayload = never, TViews extends Record<string, EvDbView<any>> = {}> {
10
+ export declare class StreamFactoryBuilder<TStreamType extends string, TEvents extends IEvDbEventPayload = never, TViews extends Record<string, EvDbView<unknown>> = {}> {
11
11
  private streamType;
12
12
  private viewFactories;
13
13
  private eventTypes;
@@ -21,11 +21,11 @@ export declare class StreamFactoryBuilder<TStreamType extends string, TEvents ex
21
21
  * Add a view with inline handler definition
22
22
  * This can only be called AFTER withEventType calls to ensure type safety
23
23
  */
24
- withView<TViewName extends string, TState>(viewName: TViewName, defaultState: TState, handlers: EvDbStreamEventHandlersMap<TState, TEvents>): StreamFactoryBuilder<TStreamType, TEvents, TViews & Record<TViewName, EvDbView<TState>>>;
24
+ withView<TViewName extends string, TState>(viewName: TViewName, defaultState: TState, handlers: Partial<EvDbStreamEventHandlersMap<TState, TEvents>>): StreamFactoryBuilder<TStreamType, TEvents, TViews & Record<TViewName, EvDbView<TState>>>;
25
25
  /**
26
26
  * Add a pre-created view factory (legacy support)
27
27
  */
28
- withViewFactory<TViewName extends string, TState>(viewName: TViewName, viewFactory: ViewFactory<TState, TEvents>): StreamFactoryBuilder<TStreamType, TEvents, TViews & Record<TViewName, EvDbView<TState>>>;
28
+ private withViewFactory;
29
29
  /**
30
30
  * Build the stream factory using event types registered via `withEventType`.
31
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"StreamFactoryBuilder.js","sourceRoot":"","sources":["../../src/factories/StreamFactoryBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAS/B,YAAoB,UAAuB;QAAvB,eAAU,GAAV,UAAU,CAAa;QAJnC,kBAAa,GAAgC,EAAE,CAAC;QAChD,eAAU,GAA2B,EAAE,CAAC;QACxC,cAAS,GAAa,EAAE,CAAC;IAEa,CAAC;IAE/C;;OAEG;IACH,aAAa,CACX,UAA0C,EAC1C,qBAA4C;QAE5C,uCAAuC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,UAAU;YACV,SAAS;YACT,qBAAqB;SACK,CAAC,CAAC;QAC9B,OAAO,IAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,QAAQ,CACb,QAAmB,EACnB,YAAoB,EACpB,QAAqD;QAErD,0BAA0B;QAC1B,MAAM,WAAW,GAAG,iBAAiB,CAAkB;YACrD,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,eAAe,CACpB,QAAmB,EACnB,WAAyC;QAEzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;YACpC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAoD,CAAC;QAEtD,6DAA6D;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YAC5B,8DAA8D;YAC9D,UAAU,EAAE,IAA0D;SACvE,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"StreamFactoryBuilder.js","sourceRoot":"","sources":["../../src/factories/StreamFactoryBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAS/B,YAAoB,UAAuB;QAAvB,eAAU,GAAV,UAAU,CAAa;QAJnC,kBAAa,GAAgC,EAAE,CAAC;QAChD,eAAU,GAA2B,EAAE,CAAC;QACxC,cAAS,GAAa,EAAE,CAAC;IAEc,CAAC;IAEhD;;OAEG;IACH,aAAa,CACX,UAA0C,EAC1C,qBAA4C;QAE5C,uCAAuC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,UAAU;YACV,SAAS;YACT,qBAAqB;SACK,CAAC,CAAC;QAC9B,OAAO,IAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,QAAQ,CACb,QAAmB,EACnB,YAAoB,EACpB,QAA8D;QAE9D,0BAA0B;QAC1B,MAAM,WAAW,GAAG,iBAAiB,CAAkB;YACrD,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,QAAmB,EACnB,WAAyC;QAEzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;YACpC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAoD,CAAC;QAEtD,6DAA6D;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YAC5B,8DAA8D;YAC9D,UAAU,EAAE,IAA0D;SACvE,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -11,7 +11,7 @@ export class EvDbView extends EvDbViewRaw {
11
11
  super(storageAdapter, address, snapshot);
12
12
  this.defaultState = defaultState;
13
13
  this._state = this.getDefaultState();
14
- if (snapshot.offset === 0)
14
+ if (snapshot.offset < 0)
15
15
  this._state = this.getDefaultState();
16
16
  else
17
17
  this._state = snapshot.state;
@@ -1 +1 @@
1
- {"version":3,"file":"EvDbView.js","sourceRoot":"","sources":["../../src/view/EvDbView.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAK7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAgB,QACpB,SAAQ,WAAW;IAGT,eAAe;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,YACE,OAAwB,EACxB,cAA2C,EAC3C,QAA0C,EAC1B,YAAoB;QAEpC,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAFzB,iBAAY,GAAZ,YAAY,CAAQ;QAT5B,WAAM,GAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QAYhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;;YAC3D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,eAAe;QACb,OAAO,sBAAsB,CAAC,WAAW,CACvC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAQS,YAAY,CAAC,CAAY;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF"}
1
+ {"version":3,"file":"EvDbView.js","sourceRoot":"","sources":["../../src/view/EvDbView.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAK7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAgB,QACpB,SAAQ,WAAW;IAGT,eAAe;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,YACE,OAAwB,EACxB,cAA2C,EAC3C,QAA0C,EAC1B,YAAoB;QAEpC,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAFzB,iBAAY,GAAZ,YAAY,CAAQ;QAT5B,WAAM,GAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QAYhD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;;YACzD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,eAAe;QACb,OAAO,sBAAsB,CAAC,WAAW,CACvC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAQS,YAAY,CAAC,CAAY;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eventualize/core",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,7 +29,7 @@
29
29
  "test": "echo not tests implemented yet."
30
30
  },
31
31
  "dependencies": {
32
- "@eventualize/types": "3.0.0"
32
+ "@eventualize/types": "4.0.0"
33
33
  },
34
34
  "license": "ISC",
35
35
  "type": "module",