@spine-event-engine/storage 2.0.0-snapshot.2

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 (133) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +160 -0
  3. package/REFERENCE.md +120 -0
  4. package/dist/entity/entity-history-record-spec.d.ts +26 -0
  5. package/dist/entity/entity-history-record-spec.d.ts.map +1 -0
  6. package/dist/entity/entity-history-record-spec.js +77 -0
  7. package/dist/entity/entity-history-record-spec.js.map +1 -0
  8. package/dist/entity/entity-history-storage.d.ts +111 -0
  9. package/dist/entity/entity-history-storage.d.ts.map +1 -0
  10. package/dist/entity/entity-history-storage.js +40 -0
  11. package/dist/entity/entity-history-storage.js.map +1 -0
  12. package/dist/entity/entity-record.d.ts +31 -0
  13. package/dist/entity/entity-record.d.ts.map +1 -0
  14. package/dist/entity/entity-record.js +15 -0
  15. package/dist/entity/entity-record.js.map +1 -0
  16. package/dist/entity/history-conformance.d.ts +55 -0
  17. package/dist/entity/history-conformance.d.ts.map +1 -0
  18. package/dist/entity/history-conformance.js +165 -0
  19. package/dist/entity/history-conformance.js.map +1 -0
  20. package/dist/event/event-store.d.ts +141 -0
  21. package/dist/event/event-store.d.ts.map +1 -0
  22. package/dist/event/event-store.js +407 -0
  23. package/dist/event/event-store.js.map +1 -0
  24. package/dist/index.d.ts +23 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +30 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/internal/delivery-cleanup.d.ts +99 -0
  29. package/dist/internal/delivery-cleanup.d.ts.map +1 -0
  30. package/dist/internal/delivery-cleanup.js +38 -0
  31. package/dist/internal/delivery-cleanup.js.map +1 -0
  32. package/dist/internal/entity-commit.d.ts +108 -0
  33. package/dist/internal/entity-commit.d.ts.map +1 -0
  34. package/dist/internal/entity-commit.js +32 -0
  35. package/dist/internal/entity-commit.js.map +1 -0
  36. package/dist/internal/entity-history.d.ts +12 -0
  37. package/dist/internal/entity-history.d.ts.map +1 -0
  38. package/dist/internal/entity-history.js +17 -0
  39. package/dist/internal/entity-history.js.map +1 -0
  40. package/dist/internal/event-store.d.ts +8 -0
  41. package/dist/internal/event-store.d.ts.map +1 -0
  42. package/dist/internal/event-store.js +21 -0
  43. package/dist/internal/event-store.js.map +1 -0
  44. package/dist/internal/query-values.d.ts +5 -0
  45. package/dist/internal/query-values.d.ts.map +1 -0
  46. package/dist/internal/query-values.js +18 -0
  47. package/dist/internal/query-values.js.map +1 -0
  48. package/dist/internal/tenancy.d.ts +89 -0
  49. package/dist/internal/tenancy.d.ts.map +1 -0
  50. package/dist/internal/tenancy.js +97 -0
  51. package/dist/internal/tenancy.js.map +1 -0
  52. package/dist/memory/canonical-utf8.d.ts +21 -0
  53. package/dist/memory/canonical-utf8.d.ts.map +1 -0
  54. package/dist/memory/canonical-utf8.js +65 -0
  55. package/dist/memory/canonical-utf8.js.map +1 -0
  56. package/dist/memory/in-memory-entity-commit.d.ts +35 -0
  57. package/dist/memory/in-memory-entity-commit.d.ts.map +1 -0
  58. package/dist/memory/in-memory-entity-commit.js +183 -0
  59. package/dist/memory/in-memory-entity-commit.js.map +1 -0
  60. package/dist/memory/in-memory-entity-history.d.ts +379 -0
  61. package/dist/memory/in-memory-entity-history.d.ts.map +1 -0
  62. package/dist/memory/in-memory-entity-history.js +756 -0
  63. package/dist/memory/in-memory-entity-history.js.map +1 -0
  64. package/dist/memory/in-memory-record-storage.d.ts +78 -0
  65. package/dist/memory/in-memory-record-storage.d.ts.map +1 -0
  66. package/dist/memory/in-memory-record-storage.js +127 -0
  67. package/dist/memory/in-memory-record-storage.js.map +1 -0
  68. package/dist/memory/in-memory-storage-backend.d.ts +38 -0
  69. package/dist/memory/in-memory-storage-backend.d.ts.map +1 -0
  70. package/dist/memory/in-memory-storage-backend.js +108 -0
  71. package/dist/memory/in-memory-storage-backend.js.map +1 -0
  72. package/dist/memory/in-memory-storage-factory.d.ts +58 -0
  73. package/dist/memory/in-memory-storage-factory.d.ts.map +1 -0
  74. package/dist/memory/in-memory-storage-factory.js +148 -0
  75. package/dist/memory/in-memory-storage-factory.js.map +1 -0
  76. package/dist/memory/memory-delivery-cleanup.d.ts +32 -0
  77. package/dist/memory/memory-delivery-cleanup.d.ts.map +1 -0
  78. package/dist/memory/memory-delivery-cleanup.js +61 -0
  79. package/dist/memory/memory-delivery-cleanup.js.map +1 -0
  80. package/dist/memory/tenant-records.d.ts +66 -0
  81. package/dist/memory/tenant-records.d.ts.map +1 -0
  82. package/dist/memory/tenant-records.js +573 -0
  83. package/dist/memory/tenant-records.js.map +1 -0
  84. package/dist/query/query-execution.d.ts +50 -0
  85. package/dist/query/query-execution.d.ts.map +1 -0
  86. package/dist/query/query-execution.js +222 -0
  87. package/dist/query/query-execution.js.map +1 -0
  88. package/dist/query/query-policy.d.ts +115 -0
  89. package/dist/query/query-policy.d.ts.map +1 -0
  90. package/dist/query/query-policy.js +294 -0
  91. package/dist/query/query-policy.js.map +1 -0
  92. package/dist/record/column-mapping.d.ts +41 -0
  93. package/dist/record/column-mapping.d.ts.map +1 -0
  94. package/dist/record/column-mapping.js +36 -0
  95. package/dist/record/column-mapping.js.map +1 -0
  96. package/dist/record/column-type.d.ts +75 -0
  97. package/dist/record/column-type.d.ts.map +1 -0
  98. package/dist/record/column-type.js +69 -0
  99. package/dist/record/column-type.js.map +1 -0
  100. package/dist/record/record-column.d.ts +23 -0
  101. package/dist/record/record-column.d.ts.map +1 -0
  102. package/dist/record/record-column.js +41 -0
  103. package/dist/record/record-column.js.map +1 -0
  104. package/dist/record/record-mask.d.ts +11 -0
  105. package/dist/record/record-mask.d.ts.map +1 -0
  106. package/dist/record/record-mask.js +82 -0
  107. package/dist/record/record-mask.js.map +1 -0
  108. package/dist/record/record-query.d.ts +102 -0
  109. package/dist/record/record-query.d.ts.map +1 -0
  110. package/dist/record/record-query.js +44 -0
  111. package/dist/record/record-query.js.map +1 -0
  112. package/dist/record/record-spec.d.ts +101 -0
  113. package/dist/record/record-spec.d.ts.map +1 -0
  114. package/dist/record/record-spec.js +159 -0
  115. package/dist/record/record-spec.js.map +1 -0
  116. package/dist/record/record-storage.d.ts +202 -0
  117. package/dist/record/record-storage.d.ts.map +1 -0
  118. package/dist/record/record-storage.js +234 -0
  119. package/dist/record/record-storage.js.map +1 -0
  120. package/dist/record/storage-group.d.ts +17 -0
  121. package/dist/record/storage-group.d.ts.map +1 -0
  122. package/dist/record/storage-group.js +37 -0
  123. package/dist/record/storage-group.js.map +1 -0
  124. package/dist/storage/storage-factory.d.ts +44 -0
  125. package/dist/storage/storage-factory.d.ts.map +1 -0
  126. package/dist/storage/storage-factory.js +54 -0
  127. package/dist/storage/storage-factory.js.map +1 -0
  128. package/dist/storage/storage.d.ts +62 -0
  129. package/dist/storage/storage.d.ts.map +1 -0
  130. package/dist/storage/storage.js +15 -0
  131. package/dist/storage/storage.js.map +1 -0
  132. package/dist/tsconfig.tsbuildinfo +1 -0
  133. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-entity-history.js","sourceRoot":"","sources":["../../src/memory/in-memory-entity-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { Message } from "@bufbuild/protobuf";
2
+ import type { RecordEntry } from "../record/record-storage.js";
3
+ import type { RecordQuery } from "../record/record-query.js";
4
+ import type { RecordSpec } from "../record/record-spec.js";
5
+ import { RecordStorage } from "../record/record-storage.js";
6
+ import type { StorageContext } from "../storage/storage.js";
7
+ import type { NormalizedQueryPlan, StorageQueryCapabilities } from "../query/query-policy.js";
8
+ import { TenantRecords } from "./tenant-records.js";
9
+ /**
10
+ * In-memory record storage with per-tenant slices when the context is multitenant.
11
+ */
12
+ export declare class InMemoryRecordStorage<I, R extends Message> extends RecordStorage<I, R> {
13
+ #private;
14
+ /**
15
+ * Declares atomic conditional mutations for compatible in-memory handles.
16
+ */
17
+ readonly atomicCompareAndSet = true;
18
+ /**
19
+ * Creates an in-memory record storage.
20
+ * @param context Supplies the storage and tenant context.
21
+ * @param recordSpec Supplies the record materialization specification.
22
+ * @param tenantRecords Supplies shared tenant records when factory-owned.
23
+ */
24
+ constructor(context: StorageContext, recordSpec: RecordSpec<I, R>, tenantRecords?: () => TenantRecords<I, R>);
25
+ /**
26
+ * Deletes the record at one storage slot.
27
+ * @param id The storage slot identifier.
28
+ * @returns Whether a record was deleted.
29
+ */
30
+ protected deleteRecord(id: I): Promise<boolean>;
31
+ /**
32
+ * Compares and conditionally replaces the record at one storage slot.
33
+ * @param id The storage slot identifier.
34
+ * @param expected The expected materialized record.
35
+ * @param next The replacement materialized record, if any.
36
+ * @returns Whether the conditional mutation was applied.
37
+ */
38
+ protected compareAndSetRecord(id: I, expected: ReturnType<RecordSpec<I, R>["materialize"]> | undefined, next: ReturnType<RecordSpec<I, R>["materialize"]> | undefined): Promise<boolean>;
39
+ /**
40
+ * Returns records matching a query.
41
+ * @param query The record query.
42
+ * @returns The matching storage entries.
43
+ */
44
+ protected queryRecordEntries(query: RecordQuery<I>): Promise<readonly RecordEntry<I, R>[]>;
45
+ /**
46
+ * Returns the supported in-memory query capabilities.
47
+ * @returns The supported query capabilities.
48
+ */
49
+ protected queryCapabilities(): StorageQueryCapabilities;
50
+ /**
51
+ * Returns candidate records for a normalized query plan.
52
+ * @param plan The normalized query plan.
53
+ * @returns The candidate storage entries.
54
+ */
55
+ protected queryPlanRecordEntries(plan: NormalizedQueryPlan<I>): Promise<readonly RecordEntry<I, R>[]>;
56
+ /**
57
+ * Reads the record at one storage slot.
58
+ * @param id The storage slot identifier.
59
+ * @returns The stored record, if present.
60
+ */
61
+ protected readRecord(id: I): Promise<R | undefined>;
62
+ /**
63
+ * Writes materialized records.
64
+ * @param records The materialized records to write.
65
+ * @returns Completes when the records are written.
66
+ */
67
+ protected writeAllRecords(records: readonly ReturnType<RecordSpec<I, R>["materialize"]>[]): Promise<void>;
68
+ /**
69
+ * Writes one materialized record.
70
+ * @param record The materialized record to write.
71
+ * @returns Completes when the record is written.
72
+ */
73
+ protected writeRecord(record: ReturnType<RecordSpec<I, R>["materialize"]>): Promise<void>;
74
+ private records;
75
+ private localRecords;
76
+ private tenantKey;
77
+ }
78
+ //# sourceMappingURL=in-memory-record-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-record-storage.d.ts","sourceRoot":"","sources":["../../src/memory/in-memory-record-storage.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;GAEG;AACH,qBAAa,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;;IAGlF;;OAEG;IACH,SAAkB,mBAAmB,QAAQ;IAG7C;;;;;OAKG;gBAED,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5B,aAAa,CAAC,EAAE,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAO3C;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C;;;;;;OAMG;IACH,SAAS,CAAC,mBAAmB,CAC3B,EAAE,EAAE,CAAC,EACL,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,EACjE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,GAC5D,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;cACgB,kBAAkB,CACnC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAIxC;;;OAGG;cACgB,iBAAiB,IAAI,wBAAwB;IAOhE;;;;OAIG;cACgB,sBAAsB,CACvC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAQxC;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAInD;;;;OAIG;IACH,SAAS,CAAC,eAAe,CACvB,OAAO,EAAE,SAAS,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzF,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,SAAS;CAGlB"}
@@ -0,0 +1,127 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { RecordStorage } from "../record/record-storage.js";
15
+ import { defaultQueryCandidateLimit } from "../query/query-execution.js";
16
+ import { TenantRecords } from "./tenant-records.js";
17
+ import { TenantBoundary } from "../internal/tenancy.js";
18
+ /**
19
+ * In-memory record storage with per-tenant slices when the context is multitenant.
20
+ */
21
+ export class InMemoryRecordStorage extends RecordStorage {
22
+ // prettier-ignore
23
+ /**
24
+ * Declares atomic conditional mutations for compatible in-memory handles.
25
+ */
26
+ atomicCompareAndSet = true;
27
+ #records;
28
+ /**
29
+ * Creates an in-memory record storage.
30
+ * @param context Supplies the storage and tenant context.
31
+ * @param recordSpec Supplies the record materialization specification.
32
+ * @param tenantRecords Supplies shared tenant records when factory-owned.
33
+ */
34
+ constructor(context, recordSpec, tenantRecords) {
35
+ super(context, recordSpec);
36
+ const localTenants = new Map();
37
+ this.#records = tenantRecords ?? (() => this.localRecords(localTenants));
38
+ }
39
+ /**
40
+ * Deletes the record at one storage slot.
41
+ * @param id The storage slot identifier.
42
+ * @returns Whether a record was deleted.
43
+ */
44
+ deleteRecord(id) {
45
+ return Promise.resolve(this.records().delete(id));
46
+ }
47
+ /**
48
+ * Compares and conditionally replaces the record at one storage slot.
49
+ * @param id The storage slot identifier.
50
+ * @param expected The expected materialized record.
51
+ * @param next The replacement materialized record, if any.
52
+ * @returns Whether the conditional mutation was applied.
53
+ */
54
+ compareAndSetRecord(id, expected, next) {
55
+ return Promise.resolve(this.records().compareAndSet(id, expected, next));
56
+ }
57
+ /**
58
+ * Returns records matching a query.
59
+ * @param query The record query.
60
+ * @returns The matching storage entries.
61
+ */
62
+ queryRecordEntries(query) {
63
+ return Promise.resolve(this.records().queryEntries(this.recordSpec, query));
64
+ }
65
+ /**
66
+ * Returns the supported in-memory query capabilities.
67
+ * @returns The supported query capabilities.
68
+ */
69
+ queryCapabilities() {
70
+ return {
71
+ comparisons: ["equal", "greaterThan", "lessThan", "greaterOrEqual", "lessOrEqual"],
72
+ features: ["either", "nested", "order", "mask", "limit"],
73
+ };
74
+ }
75
+ /**
76
+ * Returns candidate records for a normalized query plan.
77
+ * @param plan The normalized query plan.
78
+ * @returns The candidate storage entries.
79
+ */
80
+ queryPlanRecordEntries(plan) {
81
+ return Promise.resolve(this.records().queryEntries(this.recordSpec, {
82
+ limit: (plan.candidateLimit ?? defaultQueryCandidateLimit) + 1,
83
+ }));
84
+ }
85
+ /**
86
+ * Reads the record at one storage slot.
87
+ * @param id The storage slot identifier.
88
+ * @returns The stored record, if present.
89
+ */
90
+ readRecord(id) {
91
+ return Promise.resolve(this.records().read(id));
92
+ }
93
+ /**
94
+ * Writes materialized records.
95
+ * @param records The materialized records to write.
96
+ * @returns Completes when the records are written.
97
+ */
98
+ writeAllRecords(records) {
99
+ this.records().writeAll(records);
100
+ return Promise.resolve();
101
+ }
102
+ /**
103
+ * Writes one materialized record.
104
+ * @param record The materialized record to write.
105
+ * @returns Completes when the record is written.
106
+ */
107
+ writeRecord(record) {
108
+ this.records().write(record);
109
+ return Promise.resolve();
110
+ }
111
+ records() {
112
+ return this.#records();
113
+ }
114
+ localRecords(tenantRecords) {
115
+ const tenantKey = this.tenantKey();
116
+ let records = tenantRecords.get(tenantKey);
117
+ if (records === undefined) {
118
+ records = new TenantRecords();
119
+ tenantRecords.set(tenantKey, records);
120
+ }
121
+ return records;
122
+ }
123
+ tenantKey() {
124
+ return TenantBoundary.of(this.context).key;
125
+ }
126
+ }
127
+ //# sourceMappingURL=in-memory-record-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-record-storage.js","sourceRoot":"","sources":["../../src/memory/in-memory-record-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Opaque token selecting one ephemeral in-memory storage backend.
3
+ *
4
+ * A factory constructed without a token owns a fresh backend. Pass this same
5
+ * token to independently constructed factories only when they must share rows.
6
+ */
7
+ export declare class InMemoryStorageBackend {
8
+ /**
9
+ * Identifies this opaque backend in diagnostics.
10
+ */
11
+ readonly [Symbol.toStringTag] = "InMemoryStorageBackend";
12
+ /**
13
+ * Binds one tenant and record family to one backend-owned value.
14
+ * @param backend Selects the shared ephemeral backend.
15
+ * @param namespace Separates Entity and generic record backend values.
16
+ * @param tenant Selects the provider tenant boundary.
17
+ * @param family Identifies the record family inside the tenant.
18
+ * @param create Creates the value when the scope is first bound.
19
+ * @returns The existing or newly created backend-owned value.
20
+ */
21
+ static bind<T>(backend: InMemoryStorageBackend, namespace: "entity" | "record", tenant: TenantBoundary, family: string, create: () => T): T;
22
+ /**
23
+ * Records one tenant in this backend without creating a record family.
24
+ *
25
+ * @param backend Selects the shared backend.
26
+ * @param tenant The complete provider tenant boundary.
27
+ */
28
+ static admit(backend: InMemoryStorageBackend, tenant: TenantBoundary): void;
29
+ /**
30
+ * Lists multitenant boundaries admitted to this backend.
31
+ *
32
+ * @param backend Selects the shared backend.
33
+ * @returns Immutable boundary snapshots.
34
+ */
35
+ static tenants(backend: InMemoryStorageBackend): readonly TenantBoundary[];
36
+ }
37
+ import type { TenantBoundary } from "../internal/tenancy.js";
38
+ //# sourceMappingURL=in-memory-storage-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-storage-backend.d.ts","sourceRoot":"","sources":["../../src/memory/in-memory-storage-backend.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,qBAAa,sBAAsB;IAGjC;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,4BAA4B;IAEzD;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EACX,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,GACd,CAAC;IAIJ;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAI3E;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,cAAc,EAAE;CAG3E;AAmED,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,108 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ /**
15
+ * Opaque token selecting one ephemeral in-memory storage backend.
16
+ *
17
+ * A factory constructed without a token owns a fresh backend. Pass this same
18
+ * token to independently constructed factories only when they must share rows.
19
+ */
20
+ export class InMemoryStorageBackend {
21
+ // prettier-ignore
22
+ /**
23
+ * Identifies this opaque backend in diagnostics.
24
+ */
25
+ [Symbol.toStringTag] = "InMemoryStorageBackend";
26
+ /**
27
+ * Binds one tenant and record family to one backend-owned value.
28
+ * @param backend Selects the shared ephemeral backend.
29
+ * @param namespace Separates Entity and generic record backend values.
30
+ * @param tenant Selects the provider tenant boundary.
31
+ * @param family Identifies the record family inside the tenant.
32
+ * @param create Creates the value when the scope is first bound.
33
+ * @returns The existing or newly created backend-owned value.
34
+ */
35
+ static bind(backend, namespace, tenant, family, create) {
36
+ return MemoryBackendScopes.bind(backend, namespace, tenant, family, create);
37
+ }
38
+ /**
39
+ * Records one tenant in this backend without creating a record family.
40
+ *
41
+ * @param backend Selects the shared backend.
42
+ * @param tenant The complete provider tenant boundary.
43
+ */
44
+ static admit(backend, tenant) {
45
+ MemoryBackendScopes.admit(backend, tenant);
46
+ }
47
+ /**
48
+ * Lists multitenant boundaries admitted to this backend.
49
+ *
50
+ * @param backend Selects the shared backend.
51
+ * @returns Immutable boundary snapshots.
52
+ */
53
+ static tenants(backend) {
54
+ return MemoryBackendScopes.tenants(backend);
55
+ }
56
+ }
57
+ const scopesByBackend = new WeakMap();
58
+ const tenantsByBackend = new WeakMap();
59
+ /**
60
+ * Binds provider tenant and record-family identities for each backend.
61
+ */
62
+ const MemoryBackendScopes = {
63
+ // prettier-ignore
64
+ /**
65
+ * Binds one tenant and record family to one backend-owned value.
66
+ */
67
+ bind(backend, namespace, tenant, family, create) {
68
+ this.admit(backend, tenant);
69
+ let scopes = scopesByBackend.get(backend);
70
+ if (scopes === undefined) {
71
+ scopes = new Map();
72
+ scopesByBackend.set(backend, scopes);
73
+ }
74
+ let tenants = scopes.get(namespace);
75
+ if (tenants === undefined) {
76
+ tenants = new Map();
77
+ scopes.set(namespace, tenants);
78
+ }
79
+ let families = tenants.get(tenant.key);
80
+ if (families === undefined) {
81
+ families = new Map();
82
+ tenants.set(tenant.key, families);
83
+ }
84
+ const existing = families.get(family);
85
+ if (existing === undefined) {
86
+ const value = create();
87
+ families.set(family, value);
88
+ return value;
89
+ }
90
+ return existing;
91
+ },
92
+ admit(backend, tenant) {
93
+ if (tenant.single)
94
+ return;
95
+ let tenants = tenantsByBackend.get(backend);
96
+ if (tenants === undefined) {
97
+ tenants = new Map();
98
+ tenantsByBackend.set(backend, tenants);
99
+ }
100
+ tenants.set(String(tenant.key), tenant);
101
+ },
102
+ tenants(backend) {
103
+ return Object.freeze([...(tenantsByBackend.get(backend)?.entries() ?? [])]
104
+ .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
105
+ .map(([, boundary]) => boundary));
106
+ },
107
+ };
108
+ //# sourceMappingURL=in-memory-storage-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-storage-backend.js","sourceRoot":"","sources":["../../src/memory/in-memory-storage-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { Message } from "@bufbuild/protobuf";
2
+ import type { RecordSpec } from "../record/record-spec.js";
3
+ import type { RecordStorage } from "../record/record-storage.js";
4
+ import type { StorageGroup } from "../record/storage-group.js";
5
+ import type { StorageContext } from "../storage/storage.js";
6
+ import { StorageFactory } from "../storage/storage-factory.js";
7
+ import { type TenantCatalog, type TenantCatalogProvider } from "../internal/tenancy.js";
8
+ import { InMemoryStorageBackend } from "./in-memory-storage-backend.js";
9
+ import { type EntityStorageInput } from "./in-memory-entity-history.js";
10
+ import { type EntityCommitStorage } from "../internal/entity-commit.js";
11
+ /**
12
+ * In-memory factory for record storages and framework delegates such as the event store.
13
+ */
14
+ export declare class InMemoryStorageFactory extends StorageFactory implements TenantCatalogProvider {
15
+ #private;
16
+ /**
17
+ * Creates a factory with a fresh backend, or deliberately shares one.
18
+ * @param backend Selects the backend to own or share.
19
+ */
20
+ constructor(backend?: InMemoryStorageBackend);
21
+ /**
22
+ * Returns the factory-owned view of admitted in-memory tenant slices.
23
+ *
24
+ * @returns The in-memory tenant catalog.
25
+ */
26
+ tenantCatalog(): TenantCatalog;
27
+ /**
28
+ * Closes the catalog view and this factory.
29
+ */
30
+ close(): void;
31
+ /**
32
+ * Creates the internal latest-state/history seam used by framework repositories.
33
+ *
34
+ * This is deliberately not exported from the root storage API. Provider
35
+ * adapters expose the same structural method for the server runtime.
36
+ * @param input Supplies the internal entity storage configuration.
37
+ * @returns The created internal entity storage.
38
+ */
39
+ createEntityStorage(input: unknown): unknown;
40
+ /**
41
+ * Creates the provider-only atomic Entity commit seam used by repositories.
42
+ *
43
+ * @param input Supplies the internal Entity storage configuration.
44
+ * @returns The independently closeable in-memory commit handle.
45
+ */
46
+ protected createEntityCommitStorage<I, S extends Message>(input: EntityStorageInput<I, S>): EntityCommitStorage;
47
+ /**
48
+ * Creates an in-memory record storage.
49
+ *
50
+ * @param context The storage context.
51
+ * @param recordSpec The record specification.
52
+ * @param group Separates records that share a source type.
53
+ * @returns The created record storage.
54
+ */
55
+ protected onCreateRecordStorage<I, R extends Message>(context: StorageContext, recordSpec: RecordSpec<I, R>, group?: StorageGroup): RecordStorage<I, R>;
56
+ private tenantRecords;
57
+ }
58
+ //# sourceMappingURL=in-memory-storage-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-storage-factory.d.ts","sourceRoot":"","sources":["../../src/memory/in-memory-storage-factory.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAA8B,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEpG,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,8BAA8B,CAAC;AAItC;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAe,YAAW,qBAAqB;;IAKzF;;;OAGG;gBACS,OAAO,GAAE,sBAAqD;IAgB1E;;;;OAIG;IACH,aAAa,IAAI,aAAa;IAI9B;;OAEG;IACM,KAAK,IAAI,IAAI;IAKtB;;;;;;;OAOG;IACH,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IA4B5C;;;;;OAKG;IACH,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,EACtD,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GAC9B,mBAAmB;IAUtB;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,EAClD,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5B,KAAK,CAAC,EAAE,YAAY,GACnB,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAMtB,OAAO,CAAC,aAAa;CAetB"}
@@ -0,0 +1,148 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { eventHistorySpec, stateHistorySpec } from "../entity/entity-history-record-spec.js";
15
+ import { StorageFactory } from "../storage/storage-factory.js";
16
+ import { TenantBoundary, } from "../internal/tenancy.js";
17
+ import { InMemoryStorageBackend } from "./in-memory-storage-backend.js";
18
+ import { InMemoryRecordStorage } from "./in-memory-record-storage.js";
19
+ import { TenantRecords } from "./tenant-records.js";
20
+ import { MemoryEntityStorageFactory } from "./in-memory-entity-history.js";
21
+ import { MemoryEntityCommitStorage } from "./in-memory-entity-commit.js";
22
+ import { EntityCommitStorageFactories, } from "../internal/entity-commit.js";
23
+ import { DeliveryCleanupStorageFactories } from "../internal/delivery-cleanup.js";
24
+ import { MemoryDeliveryCleanupStorage } from "./memory-delivery-cleanup.js";
25
+ /**
26
+ * In-memory factory for record storages and framework delegates such as the event store.
27
+ */
28
+ export class InMemoryStorageFactory extends StorageFactory {
29
+ #backend;
30
+ #entities;
31
+ #catalog;
32
+ /**
33
+ * Creates a factory with a fresh backend, or deliberately shares one.
34
+ * @param backend Selects the backend to own or share.
35
+ */
36
+ constructor(backend = new InMemoryStorageBackend()) {
37
+ super();
38
+ this.#backend = backend;
39
+ this.#entities = new MemoryEntityStorageFactory(backend);
40
+ this.#catalog = new MemoryTenantCatalog(backend);
41
+ EntityCommitStorageFactories.register(this, {
42
+ createEntityCommitStorage: (input) => this.createEntityCommitStorage(input),
43
+ });
44
+ DeliveryCleanupStorageFactories.register(this, {
45
+ createDeliveryCleanupStorage: () => new MemoryDeliveryCleanupStorage((context, spec, group) => this.tenantRecords(context, spec, group)),
46
+ });
47
+ }
48
+ /**
49
+ * Returns the factory-owned view of admitted in-memory tenant slices.
50
+ *
51
+ * @returns The in-memory tenant catalog.
52
+ */
53
+ tenantCatalog() {
54
+ return this.#catalog;
55
+ }
56
+ /**
57
+ * Closes the catalog view and this factory.
58
+ */
59
+ close() {
60
+ void this.#catalog.close();
61
+ super.close();
62
+ }
63
+ /**
64
+ * Creates the internal latest-state/history seam used by framework repositories.
65
+ *
66
+ * This is deliberately not exported from the root storage API. Provider
67
+ * adapters expose the same structural method for the server runtime.
68
+ * @param input Supplies the internal entity storage configuration.
69
+ * @returns The created internal entity storage.
70
+ */
71
+ createEntityStorage(input) {
72
+ if (!this.isOpen())
73
+ throw new Error("StorageFactory is closed.");
74
+ const entity = input;
75
+ const stateHistory = entity.stateHistory ? stateHistorySpec(entity.stateSchema) : undefined;
76
+ const eventHistory = entity.eventHistory ? eventHistorySpec(entity.stateSchema) : undefined;
77
+ return this.#entities.create({
78
+ ...entity,
79
+ ...(stateHistory === undefined
80
+ ? {}
81
+ : {
82
+ stateHistoryStorage: this.createRecordStorage(entity.context, stateHistory.spec, stateHistory.group),
83
+ }),
84
+ ...(eventHistory === undefined
85
+ ? {}
86
+ : {
87
+ eventHistoryStorage: this.createRecordStorage(entity.context, eventHistory.spec, eventHistory.group),
88
+ }),
89
+ });
90
+ }
91
+ /**
92
+ * Creates the provider-only atomic Entity commit seam used by repositories.
93
+ *
94
+ * @param input Supplies the internal Entity storage configuration.
95
+ * @returns The independently closeable in-memory commit handle.
96
+ */
97
+ createEntityCommitStorage(input) {
98
+ if (!this.isOpen())
99
+ throw new Error("StorageFactory is closed.");
100
+ return new MemoryEntityCommitStorage(this.#entities, this, (context, spec, group) => this.tenantRecords(context, spec, group), input);
101
+ }
102
+ /**
103
+ * Creates an in-memory record storage.
104
+ *
105
+ * @param context The storage context.
106
+ * @param recordSpec The record specification.
107
+ * @param group Separates records that share a source type.
108
+ * @returns The created record storage.
109
+ */
110
+ onCreateRecordStorage(context, recordSpec, group) {
111
+ return new InMemoryRecordStorage(context, recordSpec, () => this.tenantRecords(context, recordSpec, group));
112
+ }
113
+ tenantRecords(context, recordSpec, group) {
114
+ const tenant = TenantBoundary.of(context);
115
+ const family = JSON.stringify([recordSpec.sourceType.typeName, group?.name ?? null]);
116
+ return InMemoryStorageBackend.bind(this.#backend, "record", tenant, family, () => new TenantRecords());
117
+ }
118
+ }
119
+ class MemoryTenantCatalog {
120
+ backend;
121
+ #open = true;
122
+ constructor(backend) {
123
+ this.backend = backend;
124
+ }
125
+ all() {
126
+ return Promise.resolve().then(() => {
127
+ this.requireOpen();
128
+ return InMemoryStorageBackend.tenants(this.backend);
129
+ });
130
+ }
131
+ keep(boundary) {
132
+ return Promise.resolve().then(() => {
133
+ this.requireOpen();
134
+ if (boundary.single)
135
+ throw new Error("In-memory tenant catalog requires a tenant boundary.");
136
+ InMemoryStorageBackend.admit(this.backend, boundary);
137
+ });
138
+ }
139
+ close() {
140
+ this.#open = false;
141
+ return Promise.resolve();
142
+ }
143
+ requireOpen() {
144
+ if (!this.#open)
145
+ throw new Error("In-memory tenant catalog is closed.");
146
+ }
147
+ }
148
+ //# sourceMappingURL=in-memory-storage-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-storage-factory.js","sourceRoot":"","sources":["../../src/memory/in-memory-storage-factory.ts"],"names":[],"mappings":"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"}