@spine-event-engine/storage 2.0.0-snapshot.22 → 2.0.0-snapshot.24

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.
Files changed (127) hide show
  1. package/README.md +7 -0
  2. package/REFERENCE.md +131 -7
  3. package/dist/entity/agent-execution-record-spec.d.ts +87 -0
  4. package/dist/entity/agent-execution-record-spec.d.ts.map +1 -0
  5. package/dist/entity/agent-execution-record-spec.js +230 -0
  6. package/dist/entity/agent-execution-record-spec.js.map +1 -0
  7. package/dist/entity/agent-execution-sizes.d.ts +30 -0
  8. package/dist/entity/agent-execution-sizes.d.ts.map +1 -0
  9. package/dist/entity/agent-execution-sizes.js +51 -0
  10. package/dist/entity/agent-execution-sizes.js.map +1 -0
  11. package/dist/entity/agent-execution-transitions.d.ts +72 -0
  12. package/dist/entity/agent-execution-transitions.d.ts.map +1 -0
  13. package/dist/entity/agent-execution-transitions.js +165 -0
  14. package/dist/entity/agent-execution-transitions.js.map +1 -0
  15. package/dist/entity/agent-execution-values.d.ts +143 -0
  16. package/dist/entity/agent-execution-values.d.ts.map +1 -0
  17. package/dist/entity/agent-execution-values.js +251 -0
  18. package/dist/entity/agent-execution-values.js.map +1 -0
  19. package/dist/entity/agent-execution.d.ts +235 -0
  20. package/dist/entity/agent-execution.d.ts.map +1 -0
  21. package/dist/entity/agent-execution.js +15 -0
  22. package/dist/entity/agent-execution.js.map +1 -0
  23. package/dist/entity/agent-history-conformance.d.ts +78 -0
  24. package/dist/entity/agent-history-conformance.d.ts.map +1 -0
  25. package/dist/entity/agent-history-conformance.js +493 -0
  26. package/dist/entity/agent-history-conformance.js.map +1 -0
  27. package/dist/entity/agent-history-provider-page.d.ts +39 -0
  28. package/dist/entity/agent-history-provider-page.d.ts.map +1 -0
  29. package/dist/entity/agent-history-provider-page.js +82 -0
  30. package/dist/entity/agent-history-provider-page.js.map +1 -0
  31. package/dist/entity/agent-history-record-spec.d.ts +79 -0
  32. package/dist/entity/agent-history-record-spec.d.ts.map +1 -0
  33. package/dist/entity/agent-history-record-spec.js +147 -0
  34. package/dist/entity/agent-history-record-spec.js.map +1 -0
  35. package/dist/entity/agent-history.d.ts +196 -0
  36. package/dist/entity/agent-history.d.ts.map +1 -0
  37. package/dist/entity/agent-history.js +136 -0
  38. package/dist/entity/agent-history.js.map +1 -0
  39. package/dist/event/event-store.d.ts +41 -35
  40. package/dist/event/event-store.d.ts.map +1 -1
  41. package/dist/event/event-store.js +149 -144
  42. package/dist/event/event-store.js.map +1 -1
  43. package/dist/index.d.ts +1 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/internal/agent-execution.d.ts +51 -0
  48. package/dist/internal/agent-execution.d.ts.map +1 -0
  49. package/dist/internal/agent-execution.js +53 -0
  50. package/dist/internal/agent-execution.js.map +1 -0
  51. package/dist/internal/agent-history.d.ts +48 -0
  52. package/dist/internal/agent-history.d.ts.map +1 -0
  53. package/dist/internal/agent-history.js +52 -0
  54. package/dist/internal/agent-history.js.map +1 -0
  55. package/dist/internal/entity-commit.d.ts +30 -11
  56. package/dist/internal/entity-commit.d.ts.map +1 -1
  57. package/dist/internal/entity-commit.js +45 -2
  58. package/dist/internal/entity-commit.js.map +1 -1
  59. package/dist/internal/entity-history.d.ts +11 -0
  60. package/dist/internal/entity-history.d.ts.map +1 -1
  61. package/dist/internal/entity-history.js +10 -0
  62. package/dist/internal/entity-history.js.map +1 -1
  63. package/dist/internal/event-store.d.ts +1 -1
  64. package/dist/internal/event-store.d.ts.map +1 -1
  65. package/dist/internal/event-store.js +1 -1
  66. package/dist/internal/event-store.js.map +1 -1
  67. package/dist/internal/tenancy.d.ts +87 -1
  68. package/dist/internal/tenancy.d.ts.map +1 -1
  69. package/dist/internal/tenancy.js +39 -0
  70. package/dist/internal/tenancy.js.map +1 -1
  71. package/dist/memory/agent-execution-head-index.d.ts +52 -0
  72. package/dist/memory/agent-execution-head-index.d.ts.map +1 -0
  73. package/dist/memory/agent-execution-head-index.js +91 -0
  74. package/dist/memory/agent-execution-head-index.js.map +1 -0
  75. package/dist/memory/agent-history-index.d.ts +49 -0
  76. package/dist/memory/agent-history-index.d.ts.map +1 -0
  77. package/dist/memory/agent-history-index.js +239 -0
  78. package/dist/memory/agent-history-index.js.map +1 -0
  79. package/dist/memory/agent-history-mutation-queue.d.ts +17 -0
  80. package/dist/memory/agent-history-mutation-queue.d.ts.map +1 -0
  81. package/dist/memory/agent-history-mutation-queue.js +31 -0
  82. package/dist/memory/agent-history-mutation-queue.js.map +1 -0
  83. package/dist/memory/in-memory-agent-execution.d.ts +21 -0
  84. package/dist/memory/in-memory-agent-execution.d.ts.map +1 -0
  85. package/dist/memory/in-memory-agent-execution.js +587 -0
  86. package/dist/memory/in-memory-agent-execution.js.map +1 -0
  87. package/dist/memory/in-memory-agent-history.d.ts +21 -0
  88. package/dist/memory/in-memory-agent-history.d.ts.map +1 -0
  89. package/dist/memory/in-memory-agent-history.js +133 -0
  90. package/dist/memory/in-memory-agent-history.js.map +1 -0
  91. package/dist/memory/in-memory-entity-commit.d.ts +107 -28
  92. package/dist/memory/in-memory-entity-commit.d.ts.map +1 -1
  93. package/dist/memory/in-memory-entity-commit.js +198 -286
  94. package/dist/memory/in-memory-entity-commit.js.map +1 -1
  95. package/dist/memory/in-memory-entity-history.d.ts +1 -1
  96. package/dist/memory/in-memory-entity-history.d.ts.map +1 -1
  97. package/dist/memory/in-memory-entity-history.js.map +1 -1
  98. package/dist/memory/in-memory-storage-backend.d.ts +18 -0
  99. package/dist/memory/in-memory-storage-backend.d.ts.map +1 -1
  100. package/dist/memory/in-memory-storage-backend.js +71 -0
  101. package/dist/memory/in-memory-storage-backend.js.map +1 -1
  102. package/dist/memory/in-memory-storage-factory.d.ts +38 -3
  103. package/dist/memory/in-memory-storage-factory.d.ts.map +1 -1
  104. package/dist/memory/in-memory-storage-factory.js +146 -10
  105. package/dist/memory/in-memory-storage-factory.js.map +1 -1
  106. package/dist/memory/tenant-records.d.ts +1 -1
  107. package/dist/memory/tenant-records.d.ts.map +1 -1
  108. package/dist/memory/tenant-records.js +3 -2
  109. package/dist/memory/tenant-records.js.map +1 -1
  110. package/dist/provider.d.ts +0 -1
  111. package/dist/provider.d.ts.map +1 -1
  112. package/dist/provider.js +0 -1
  113. package/dist/provider.js.map +1 -1
  114. package/dist/record/record-query.d.ts +10 -2
  115. package/dist/record/record-query.d.ts.map +1 -1
  116. package/dist/record/record-query.js +9 -0
  117. package/dist/record/record-query.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/package.json +3 -2
  120. package/dist/internal/delivery-cleanup.d.ts +0 -99
  121. package/dist/internal/delivery-cleanup.d.ts.map +0 -1
  122. package/dist/internal/delivery-cleanup.js +0 -38
  123. package/dist/internal/delivery-cleanup.js.map +0 -1
  124. package/dist/memory/memory-delivery-cleanup.d.ts +0 -32
  125. package/dist/memory/memory-delivery-cleanup.d.ts.map +0 -1
  126. package/dist/memory/memory-delivery-cleanup.js +0 -61
  127. package/dist/memory/memory-delivery-cleanup.js.map +0 -1
@@ -1,14 +1,15 @@
1
1
  import type { Event, EventId, TenantId } from "@spine-event-engine/proto";
2
2
  import type { RecordQuery } from "../record/record-query.js";
3
3
  import { RecordSpec } from "../record/record-spec.js";
4
- import type { StorageContext } from "../storage/storage.js";
4
+ import type { StorageGroup } from "../record/storage-group.js";
5
5
  import type { StorageFactory } from "../storage/storage-factory.js";
6
6
  /**
7
7
  * Framework event store backed by record storage.
8
8
  *
9
- * Snapshots input events before queued work, rejects missing, blank, and
10
- * duplicate IDs in one batch, and rejects IDs already stored for the same
11
- * captured storage context.
9
+ * Snapshots input Events and rejects missing, blank, or repeated IDs within a
10
+ * batch. Immutable append accepts identical complete stored Events and leaves
11
+ * completed prefixes when a later insert fails. Admission methods reject every
12
+ * existing ID, including an identical Event.
12
13
  */
13
14
  export declare class EventStore {
14
15
  #private;
@@ -17,8 +18,9 @@ export declare class EventStore {
17
18
  *
18
19
  * @param context Specifies the storage context.
19
20
  * @param factory Creates the backing record storage.
21
+ * @param group Selects a separate Event record family when supplied.
20
22
  */
21
- constructor(context: EventStoreContext, factory: StorageFactory);
23
+ constructor(context: EventStoreContext, factory: StorageFactory, group?: StorageGroup);
22
24
  /**
23
25
  * Returns whether this Event Store still accepts operations.
24
26
  *
@@ -30,15 +32,17 @@ export declare class EventStore {
30
32
  */
31
33
  close(): void;
32
34
  /**
33
- * Validates that one generated Spine event can be appended without storing it.
35
+ * Validates strict new admission without storing an Event. An identical
36
+ * existing Event still rejects; this precheck does not reserve its ID.
34
37
  *
35
38
  * @param event Supplies the event to validate.
36
39
  * @returns Completes when the event is accepted.
37
40
  */
38
41
  accept(event: Event): Promise<void>;
39
42
  /**
40
- * Accepts one event, runs caller acceptance, and appends using one captured
41
- * storage context.
43
+ * Checks strict new admission, runs caller acceptance, then atomically inserts
44
+ * under one captured context. Competing callbacks may both run, but only one
45
+ * absent-slot insertion can succeed.
42
46
  *
43
47
  * @param event Supplies the event to accept.
44
48
  * @param onAccepted Runs after uniqueness validation and before append.
@@ -46,26 +50,21 @@ export declare class EventStore {
46
50
  */
47
51
  acceptThenAppend(event: Event, onAccepted: OnEventAccepted): Promise<Event>;
48
52
  /**
49
- * Writes one generated Spine event, rejecting missing, blank, or duplicate IDs.
53
+ * Writes one complete Event, accepting an identical immutable retry without
54
+ * overwriting it. A conflicting Event at the same ID rejects.
50
55
  *
51
56
  * @param event Supplies the event to append.
52
57
  * @returns Completes when the event is appended.
53
58
  */
54
59
  append(event: Event): Promise<void>;
55
60
  /**
56
- * Writes generated Spine events in order, rejecting missing, blank, or duplicate IDs.
61
+ * Writes generated Events in order, accepting identical immutable retries.
62
+ * A later failure retains the completed prefix for retry with the same IDs.
57
63
  *
58
64
  * @param events Supplies the events to append.
59
65
  * @returns Completes when the events are appended.
60
66
  */
61
67
  appendAll(events: Iterable<Event>): Promise<void>;
62
- /**
63
- * Writes generated Spine events and returns a one-shot rollback token.
64
- *
65
- * @param events Supplies the events to append.
66
- * @returns Resolves to the rollback token for this append.
67
- */
68
- appendAllWithRollback(events: Iterable<Event>): Promise<EventRollback>;
69
68
  /**
70
69
  * Reads persisted events through the underlying record-storage query seam.
71
70
  *
@@ -73,9 +72,33 @@ export declare class EventStore {
73
72
  * @returns Resolves to matching events.
74
73
  */
75
74
  read(query?: RecordQuery<EventId>): Promise<readonly Event[]>;
75
+ /**
76
+ * Writes strictly new Events after caller acceptance.
77
+ *
78
+ * @param records Supplies validated Event snapshots.
79
+ * @param context Selects their storage boundary.
80
+ * @returns Completion after every strict insertion.
81
+ */
76
82
  private appendUnique;
77
- private deleteIds;
83
+ /**
84
+ * Writes captured immutable Events, accepting identical stored retries.
85
+ *
86
+ * @param records Supplies ordered Event snapshots.
87
+ * @param context Selects their single storage boundary.
88
+ * @returns Completion after every immutable Event is confirmed.
89
+ */
90
+ private appendImmutable;
91
+ /**
92
+ * Checks strict admission without writing an Event.
93
+ *
94
+ * @param ids Supplies IDs that must be absent.
95
+ * @param context Selects the storage boundary.
96
+ * @returns Completion when no ID is stored.
97
+ */
78
98
  private checkUnique;
99
+ /**
100
+ * Rejects operations after this Event Store closes.
101
+ */
79
102
  private requireOpen;
80
103
  }
81
104
  /**
@@ -115,23 +138,6 @@ export type EventStoreContext = {
115
138
  * @returns Completes after caller acceptance finishes.
116
139
  */
117
140
  export type OnEventAccepted = (event: Event) => Promise<void> | void;
118
- /**
119
- * One-shot rollback token scoped to one successful event-store append.
120
- */
121
- export interface EventRollback {
122
- /**
123
- * Deletes the events appended by the operation that created this token.
124
- * @returns Completes when the events are deleted.
125
- */
126
- rollback(): Promise<void>;
127
- }
128
- /**
129
- * Provider-only coordination access for the Event Store context lock.
130
- * @internal
131
- */
132
- export declare const eventStoreAccess: {
133
- readonly withLock: <T>(factory: StorageFactory, context: StorageContext, work: () => Promise<T>) => Promise<T>;
134
- };
135
141
  /**
136
142
  * Provides the canonical event-store record layout to provider-only internals.
137
143
  *
@@ -1 +1 @@
1
- {"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../../src/event/event-store.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAK1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGpE;;;;;;GAMG;AACH,qBAAa,UAAU;;IAKrB;;;;;OAKG;gBACS,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc;IAK/D;;;;OAIG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzC;;;;;;;OAOG;IACG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAUjF;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC;;;;;OAKG;IACG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD;;;;;OAKG;IACG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAoB5E;;;;;OAKG;IACG,IAAI,CAAC,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;YAazD,YAAY;YAeZ,SAAS;YAeT,WAAW;IAczB,OAAO,CAAC,WAAW;CAGpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAGE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;CAC7B,GACD;IAGE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,aAAa;IAG5B;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAuCD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EACnB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KACnB,OAAO,CAAC,CAAC,CAAC,CAAC;CAmBhB,CAAC;AA0KH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAgB1D,CAAC"}
1
+ {"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../../src/event/event-store.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAK1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGpE;;;;;;;GAOG;AACH,qBAAa,UAAU;;IAqBrB;;;;;;OAMG;gBACS,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,YAAY;IAMrF;;;;OAIG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzC;;;;;;;;OAQG;IACG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAUjF;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC;;;;;;OAMG;IACG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD;;;;;OAKG;IACG,IAAI,CAAC,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IAcvE;;;;;;OAMG;YACW,YAAY;IAa1B;;;;;;OAMG;YACW,eAAe;IAW7B;;;;;;OAMG;YACW,WAAW;IAYzB;;OAEG;IACH,OAAO,CAAC,WAAW;CAGpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAGE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;CAC7B,GACD;IAGE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAmNrE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAgB1D,CAAC"}
@@ -11,7 +11,7 @@
11
11
  * or implied. See the License for the specific language governing permissions and limitations under
12
12
  * the License.
13
13
  */
14
- import { clone, create, ScalarType } from "@bufbuild/protobuf";
14
+ import { clone, create, equals, ScalarType } from "@bufbuild/protobuf";
15
15
  import { TimestampSchema } from "@bufbuild/protobuf/wkt";
16
16
  import { EventIdSchema, EventSchema, TenantIdSchema } from "@spine-event-engine/proto";
17
17
  import { RecordColumn } from "../record/record-column.js";
@@ -21,23 +21,39 @@ import { TenantBoundary } from "../internal/tenancy.js";
21
21
  /**
22
22
  * Framework event store backed by record storage.
23
23
  *
24
- * Snapshots input events before queued work, rejects missing, blank, and
25
- * duplicate IDs in one batch, and rejects IDs already stored for the same
26
- * captured storage context.
24
+ * Snapshots input Events and rejects missing, blank, or repeated IDs within a
25
+ * batch. Immutable append accepts identical complete stored Events and leaves
26
+ * completed prefixes when a later insert fails. Admission methods reject every
27
+ * existing ID, including an identical Event.
27
28
  */
28
29
  export class EventStore {
30
+ /**
31
+ * Selected Event Store context.
32
+ */
29
33
  #context;
34
+ /**
35
+ * Opens Event record-family handles.
36
+ */
30
37
  #factory;
38
+ /**
39
+ * Optional record family selector independent of the diagnostic context name.
40
+ */
41
+ #group;
42
+ /**
43
+ * Whether this Event Store accepts operations.
44
+ */
31
45
  #open = true;
32
46
  /**
33
47
  * Creates an event store for one storage context.
34
48
  *
35
49
  * @param context Specifies the storage context.
36
50
  * @param factory Creates the backing record storage.
51
+ * @param group Selects a separate Event record family when supplied.
37
52
  */
38
- constructor(context, factory) {
53
+ constructor(context, factory, group) {
39
54
  this.#context = EventContexts.base(context);
40
55
  this.#factory = factory;
56
+ this.#group = group;
41
57
  }
42
58
  /**
43
59
  * Returns whether this Event Store still accepts operations.
@@ -54,7 +70,8 @@ export class EventStore {
54
70
  this.#open = false;
55
71
  }
56
72
  /**
57
- * Validates that one generated Spine event can be appended without storing it.
73
+ * Validates strict new admission without storing an Event. An identical
74
+ * existing Event still rejects; this precheck does not reserve its ID.
58
75
  *
59
76
  * @param event Supplies the event to validate.
60
77
  * @returns Completes when the event is accepted.
@@ -65,8 +82,9 @@ export class EventStore {
65
82
  await this.checkUnique([EventIds.require(record)], context);
66
83
  }
67
84
  /**
68
- * Accepts one event, runs caller acceptance, and appends using one captured
69
- * storage context.
85
+ * Checks strict new admission, runs caller acceptance, then atomically inserts
86
+ * under one captured context. Competing callbacks may both run, but only one
87
+ * absent-slot insertion can succeed.
70
88
  *
71
89
  * @param event Supplies the event to accept.
72
90
  * @param onAccepted Runs after uniqueness validation and before append.
@@ -81,17 +99,19 @@ export class EventStore {
81
99
  return clone(EventSchema, record);
82
100
  }
83
101
  /**
84
- * Writes one generated Spine event, rejecting missing, blank, or duplicate IDs.
102
+ * Writes one complete Event, accepting an identical immutable retry without
103
+ * overwriting it. A conflicting Event at the same ID rejects.
85
104
  *
86
105
  * @param event Supplies the event to append.
87
106
  * @returns Completes when the event is appended.
88
107
  */
89
108
  async append(event) {
90
109
  const record = clone(EventSchema, event);
91
- await this.appendUnique([record], EventContexts.snapshotForEvent(this.#context, record));
110
+ await this.appendImmutable([record], EventContexts.snapshotForEvent(this.#context, record));
92
111
  }
93
112
  /**
94
- * Writes generated Spine events in order, rejecting missing, blank, or duplicate IDs.
113
+ * Writes generated Events in order, accepting identical immutable retries.
114
+ * A later failure retains the completed prefix for retry with the same IDs.
95
115
  *
96
116
  * @param events Supplies the events to append.
97
117
  * @returns Completes when the events are appended.
@@ -99,34 +119,9 @@ export class EventStore {
99
119
  async appendAll(events) {
100
120
  const records = [...events].map((event) => clone(EventSchema, event));
101
121
  if (records.length > 0) {
102
- await this.appendUnique(records, EventContexts.batch(this.#context, records));
122
+ await this.appendImmutable(records, EventContexts.batch(this.#context, records));
103
123
  }
104
124
  }
105
- /**
106
- * Writes generated Spine events and returns a one-shot rollback token.
107
- *
108
- * @param events Supplies the events to append.
109
- * @returns Resolves to the rollback token for this append.
110
- */
111
- async appendAllWithRollback(events) {
112
- const records = [...events].map((event) => clone(EventSchema, event));
113
- const ids = records.map((record) => EventIds.require(record));
114
- const context = records.length === 0 ? undefined : EventContexts.batch(this.#context, records);
115
- if (context !== undefined) {
116
- await this.appendUnique(records, context);
117
- }
118
- let used = false;
119
- return Object.freeze({
120
- rollback: async () => {
121
- if (used) {
122
- throw new Error("Event rollback token has already been used.");
123
- }
124
- used = true;
125
- if (context !== undefined)
126
- await this.deleteIds(ids, context);
127
- },
128
- });
129
- }
130
125
  /**
131
126
  * Reads persisted events through the underlying record-storage query seam.
132
127
  *
@@ -135,7 +130,7 @@ export class EventStore {
135
130
  */
136
131
  async read(query = {}) {
137
132
  this.requireOpen();
138
- const storage = this.#factory.createRecordStorage(EventContexts.snapshot(this.#context), eventStoreRecordSpec);
133
+ const storage = this.#factory.createRecordStorage(EventContexts.snapshot(this.#context), eventStoreRecordSpec, this.#group);
139
134
  try {
140
135
  return await storage.query(query);
141
136
  }
@@ -143,104 +138,79 @@ export class EventStore {
143
138
  storage.close();
144
139
  }
145
140
  }
141
+ /**
142
+ * Writes strictly new Events after caller acceptance.
143
+ *
144
+ * @param records Supplies validated Event snapshots.
145
+ * @param context Selects their storage boundary.
146
+ * @returns Completion after every strict insertion.
147
+ */
146
148
  async appendUnique(records, context) {
147
149
  this.requireOpen();
148
150
  const ids = records.map((record) => EventIds.require(record));
149
151
  EventIds.rejectDuplicates(ids);
150
- await eventStoreAccess.withLock(this.#factory, context, async () => {
151
- const storage = this.#factory.createRecordStorage(context, eventStoreRecordSpec);
152
- try {
153
- await EventIds.insertUnique(storage, records);
154
- }
155
- finally {
156
- storage.close();
157
- }
158
- });
152
+ const storage = this.#factory.createRecordStorage(context, eventStoreRecordSpec, this.#group);
153
+ try {
154
+ await EventIds.insertUnique(storage, records);
155
+ }
156
+ finally {
157
+ storage.close();
158
+ }
159
159
  }
160
- async deleteIds(ids, context) {
160
+ /**
161
+ * Writes captured immutable Events, accepting identical stored retries.
162
+ *
163
+ * @param records Supplies ordered Event snapshots.
164
+ * @param context Selects their single storage boundary.
165
+ * @returns Completion after every immutable Event is confirmed.
166
+ */
167
+ async appendImmutable(records, context) {
161
168
  this.requireOpen();
162
- await eventStoreAccess.withLock(this.#factory, context, async () => {
163
- const storage = this.#factory.createRecordStorage(context, eventStoreRecordSpec);
164
- try {
165
- for (const id of ids) {
166
- await storage.delete(id);
167
- }
168
- }
169
- finally {
170
- storage.close();
171
- }
172
- });
169
+ EventIds.rejectDuplicates(records.map((record) => EventIds.require(record)));
170
+ const storage = this.#factory.createRecordStorage(context, eventStoreRecordSpec, this.#group);
171
+ try {
172
+ await EventIds.insertImmutable(storage, records);
173
+ }
174
+ finally {
175
+ storage.close();
176
+ }
173
177
  }
178
+ /**
179
+ * Checks strict admission without writing an Event.
180
+ *
181
+ * @param ids Supplies IDs that must be absent.
182
+ * @param context Selects the storage boundary.
183
+ * @returns Completion when no ID is stored.
184
+ */
174
185
  async checkUnique(ids, context) {
175
186
  this.requireOpen();
176
187
  EventIds.rejectDuplicates(ids);
177
- await eventStoreAccess.withLock(this.#factory, context, async () => {
178
- const storage = this.#factory.createRecordStorage(context, eventStoreRecordSpec);
179
- try {
180
- await EventIds.rejectStored(storage, ids);
181
- }
182
- finally {
183
- storage.close();
184
- }
185
- });
186
- }
187
- requireOpen() {
188
- if (!this.#open)
189
- throw new Error("EventStore is closed.");
190
- }
191
- }
192
- const EventStoreLocks = Object.freeze({
193
- queues: new WeakMap(),
194
- async withLock(factory, context, work) {
195
- const queues = this.queueMap(factory);
196
- const key = EventContexts.key(context);
197
- const previous = queues.get(key) ?? Promise.resolve();
198
- const next = previous.then(work, work);
199
- const stored = next.then(() => undefined, () => undefined);
200
- queues.set(key, stored);
188
+ const storage = this.#factory.createRecordStorage(context, eventStoreRecordSpec, this.#group);
201
189
  try {
202
- return await next;
190
+ await EventIds.rejectStored(storage, ids);
203
191
  }
204
192
  finally {
205
- if (queues.get(key) === stored) {
206
- queues.delete(key);
207
- }
208
- }
209
- },
210
- queueMap(factory) {
211
- let queues = this.queues.get(factory);
212
- if (queues === undefined) {
213
- queues = new Map();
214
- this.queues.set(factory, queues);
193
+ storage.close();
215
194
  }
216
- return queues;
217
- },
218
- });
219
- /**
220
- * Provider-only coordination access for the Event Store context lock.
221
- * @internal
222
- */
223
- export const eventStoreAccess = Object.freeze({
224
- // prettier-ignore
195
+ }
225
196
  /**
226
- * Runs work under the same factory/context lock used by direct Event Store appends.
227
- *
228
- * @param factory The factory that owns the Event Store records.
229
- * @param context The Event Store context to serialize.
230
- * @param work The operation to run while holding the lock.
231
- * @returns The operation result.
197
+ * Rejects operations after this Event Store closes.
232
198
  */
233
- withLock(factory, context, work) {
234
- return EventStoreLocks.withLock(factory, context, work);
235
- },
236
- });
199
+ requireOpen() {
200
+ if (!this.#open)
201
+ throw new Error("EventStore is closed.");
202
+ }
203
+ }
237
204
  /**
238
205
  * Validates event IDs before record-store operations.
239
206
  */
240
207
  const EventIds = {
241
208
  // prettier-ignore
242
209
  /**
243
- * Requires an event to have a non-blank ID.
210
+ * Validates that an Event has a non-blank ID.
211
+ *
212
+ * @param event Supplies the Event envelope.
213
+ * @returns Its validated ID.
244
214
  */
245
215
  require(event) {
246
216
  if (event.id === undefined)
@@ -252,6 +222,10 @@ const EventIds = {
252
222
  },
253
223
  /**
254
224
  * Rejects IDs that already exist in storage.
225
+ *
226
+ * @param storage Reads existing Events.
227
+ * @param ids Supplies IDs that must be absent.
228
+ * @returns Completion when no ID exists.
255
229
  */
256
230
  async rejectStored(storage, ids) {
257
231
  if ((await storage.index({ ids })).length > 0) {
@@ -259,42 +233,53 @@ const EventIds = {
259
233
  }
260
234
  },
261
235
  /**
262
- * Atomically inserts each event ID and rolls back this batch on collision.
236
+ * Writes each strictly new Event, retaining a completed prefix on failure.
237
+ *
238
+ * @param storage Supplies atomic record insertion.
239
+ * @param records Supplies accepted Event snapshots.
240
+ * @returns Completion after every new Event is stored.
263
241
  */
264
242
  async insertUnique(storage, records) {
265
243
  if (!storage.atomicCompareAndSet) {
266
244
  throw new Error("EventStore requires atomic record compare-and-set.");
267
245
  }
268
- const inserted = [];
269
- try {
270
- for (const record of records) {
271
- const id = EventIds.require(record);
272
- if (!(await storage.compareAndSet(id, undefined, record))) {
273
- throw new Error("EventStore requires unique event IDs.");
274
- }
275
- inserted.push({ id, record });
246
+ for (const record of records) {
247
+ const id = EventIds.require(record);
248
+ if (!(await storage.compareAndSet(id, undefined, record))) {
249
+ throw new Error("EventStore requires unique event IDs.");
276
250
  }
277
251
  }
278
- catch (error) {
279
- const failures = [];
280
- for (const { id, record } of inserted.reverse()) {
281
- try {
282
- if (!(await storage.compareAndSet(id, record, undefined))) {
283
- failures.push(new Error("EventStore append rollback lost its stored event."));
284
- }
285
- }
286
- catch (rollbackError) {
287
- failures.push(rollbackError);
252
+ },
253
+ /**
254
+ * Writes immutable Events or confirms complete equality at the same ID.
255
+ *
256
+ * @param storage Supplies atomic single-record insertion and reads.
257
+ * @param records Supplies ordered Event snapshots.
258
+ * @returns Completion after each Event is present unchanged.
259
+ */
260
+ async insertImmutable(storage, records) {
261
+ if (!storage.atomicCompareAndSet)
262
+ throw new Error("EventStore requires atomic record compare-and-set.");
263
+ for (const record of records) {
264
+ const id = EventIds.require(record);
265
+ for (let attempt = 0; attempt < 2; attempt += 1) {
266
+ if (await storage.compareAndSet(id, undefined, record))
267
+ break;
268
+ const stored = await storage.read(id);
269
+ if (stored !== undefined) {
270
+ if (!equals(EventSchema, stored, record))
271
+ throw new Error("EventStore requires unique event IDs.");
272
+ break;
288
273
  }
274
+ if (attempt === 1)
275
+ throw new Error("EventStore immutable insert could not confirm its ID.");
289
276
  }
290
- if (failures.length > 0) {
291
- throw new AggregateError([error, ...failures], "EventStore append rollback failed.");
292
- }
293
- throw error;
294
277
  }
295
278
  },
296
279
  /**
297
280
  * Rejects repeated IDs within one append operation.
281
+ *
282
+ * @param ids Supplies the IDs in the operation.
298
283
  */
299
284
  rejectDuplicates(ids) {
300
285
  const seen = new Set();
@@ -306,12 +291,15 @@ const EventIds = {
306
291
  },
307
292
  };
308
293
  /**
309
- * Captures tenant-aware event-store contexts and their lock keys.
294
+ * Captures tenant-aware event-store contexts.
310
295
  */
311
296
  const EventContexts = {
312
297
  // prettier-ignore
313
298
  /**
314
299
  * Captures one storage context.
300
+ *
301
+ * @param context Supplies context and optional default tenant.
302
+ * @returns An immutable context snapshot.
315
303
  */
316
304
  base(context) {
317
305
  return context.multitenant
@@ -324,6 +312,12 @@ const EventContexts = {
324
312
  })
325
313
  : Object.freeze({ name: context.name, multitenant: false });
326
314
  },
315
+ /**
316
+ * Returns a complete storage context for a read.
317
+ *
318
+ * @param context Supplies an explicit default tenant when required.
319
+ * @returns A complete tenant-scoped storage context.
320
+ */
327
321
  snapshot(context) {
328
322
  if (!context.multitenant)
329
323
  return Object.freeze({ name: context.name, multitenant: false });
@@ -339,6 +333,10 @@ const EventContexts = {
339
333
  },
340
334
  /**
341
335
  * Captures one context using an event envelope tenant when present.
336
+ *
337
+ * @param context Supplies the Event Store default boundary.
338
+ * @param event Supplies an optional envelope tenant.
339
+ * @returns The Event's complete storage context.
342
340
  */
343
341
  snapshotForEvent(context, event) {
344
342
  if (!context.multitenant)
@@ -352,6 +350,13 @@ const EventContexts = {
352
350
  tenantId,
353
351
  });
354
352
  },
353
+ /**
354
+ * Returns one tenant boundary for every Event in a batch.
355
+ *
356
+ * @param context Supplies the Event Store default boundary.
357
+ * @param events Supplies the complete Event batch.
358
+ * @returns Their shared storage context.
359
+ */
355
360
  batch(context, events) {
356
361
  const first = events[0];
357
362
  if (first === undefined)
@@ -366,6 +371,9 @@ const EventContexts = {
366
371
  },
367
372
  /**
368
373
  * Reads an explicit tenant from an event envelope.
374
+ *
375
+ * @param event Supplies the envelope origin.
376
+ * @returns Its tenant when present.
369
377
  */
370
378
  readEventTenant(event) {
371
379
  switch (event.context?.origin.case) {
@@ -379,16 +387,13 @@ const EventContexts = {
379
387
  },
380
388
  /**
381
389
  * Converts a typed tenant ID to its storage-scope value.
390
+ *
391
+ * @param tenantId Supplies the optional tenant ID.
392
+ * @returns An independent tenant ID when present.
382
393
  */
383
394
  tenantValue(tenantId) {
384
395
  return tenantId === undefined ? undefined : clone(TenantIdSchema, tenantId);
385
396
  },
386
- /**
387
- * Creates a deterministic key for a context-scoped append lock.
388
- */
389
- key(context) {
390
- return TenantBoundary.of(context).key;
391
- },
392
397
  };
393
398
  /**
394
399
  * Provides the canonical event-store record layout to provider-only internals.
@@ -1 +1 @@
1
- {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/event/event-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/event/event-store.ts"],"names":[],"mappings":"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"}