@requence/event-sourcing 0.0.1 → 1.0.1

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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/dist/chunk-24xjphpk.js +51 -0
  4. package/dist/chunk-24xjphpk.js.map +10 -0
  5. package/dist/chunk-3t1vzbab.js +88 -0
  6. package/dist/chunk-3t1vzbab.js.map +10 -0
  7. package/dist/chunk-6q8mr1sg.js +13 -0
  8. package/dist/chunk-6q8mr1sg.js.map +10 -0
  9. package/dist/chunk-9psg50cb.js +22 -0
  10. package/dist/chunk-9psg50cb.js.map +10 -0
  11. package/dist/chunk-dgzw1nj9.js +50 -0
  12. package/dist/chunk-dgzw1nj9.js.map +10 -0
  13. package/dist/chunk-gq80tgvf.js +70 -0
  14. package/dist/chunk-gq80tgvf.js.map +10 -0
  15. package/dist/chunk-jd4q8fcf.js +11 -0
  16. package/dist/chunk-jd4q8fcf.js.map +10 -0
  17. package/dist/chunk-m07vf8q9.js +210 -0
  18. package/dist/chunk-m07vf8q9.js.map +10 -0
  19. package/dist/chunk-ncpk70p4.js +313 -0
  20. package/dist/chunk-ncpk70p4.js.map +10 -0
  21. package/dist/chunk-pmfzjavb.js +49 -0
  22. package/dist/chunk-pmfzjavb.js.map +10 -0
  23. package/dist/chunk-qdczt68t.js +84 -0
  24. package/dist/chunk-qdczt68t.js.map +10 -0
  25. package/dist/chunk-tfy01fah.js +34 -0
  26. package/dist/chunk-tfy01fah.js.map +10 -0
  27. package/dist/chunk-tkvj6x8k.js +389 -0
  28. package/dist/chunk-tkvj6x8k.js.map +10 -0
  29. package/dist/chunk-ty9bhdvx.js +53 -0
  30. package/dist/chunk-ty9bhdvx.js.map +10 -0
  31. package/dist/chunk-wmz6a1jk.js +233 -0
  32. package/dist/chunk-wmz6a1jk.js.map +10 -0
  33. package/dist/chunk-x90g388y.js +22 -0
  34. package/dist/chunk-x90g388y.js.map +10 -0
  35. package/dist/chunk-z388cd25.js +91 -0
  36. package/dist/chunk-z388cd25.js.map +10 -0
  37. package/dist/chunk-zf3x573k.js +65 -0
  38. package/dist/chunk-zf3x573k.js.map +10 -0
  39. package/dist/createAggregateRoot.d.ts +191 -0
  40. package/dist/createAggregateRoot.d.ts.map +1 -0
  41. package/dist/createAggregateRoot.js +18 -0
  42. package/dist/createAggregateRoot.js.map +9 -0
  43. package/dist/createCheckpointApi.d.ts +38 -0
  44. package/dist/createCheckpointApi.d.ts.map +1 -0
  45. package/dist/createCheckpointApi.js +9 -0
  46. package/dist/createCheckpointApi.js.map +9 -0
  47. package/dist/createEventListener.d.ts +46 -0
  48. package/dist/createEventListener.d.ts.map +1 -0
  49. package/dist/createEventListener.js +12 -0
  50. package/dist/createEventListener.js.map +9 -0
  51. package/dist/createEventStore.d.ts +57 -0
  52. package/dist/createEventStore.d.ts.map +1 -0
  53. package/dist/createEventStore.js +20 -0
  54. package/dist/createEventStore.js.map +9 -0
  55. package/dist/createProcessManager.d.ts +70 -0
  56. package/dist/createProcessManager.d.ts.map +1 -0
  57. package/dist/createProcessManager.js +16 -0
  58. package/dist/createProcessManager.js.map +9 -0
  59. package/dist/createProjection.d.ts +120 -0
  60. package/dist/createProjection.d.ts.map +1 -0
  61. package/dist/createProjection.js +16 -0
  62. package/dist/createProjection.js.map +9 -0
  63. package/dist/drizzle/index.d.ts +449 -0
  64. package/dist/drizzle/index.d.ts.map +1 -0
  65. package/dist/drizzle/index.js +325 -0
  66. package/dist/drizzle/index.js.map +10 -0
  67. package/dist/drizzle/postgres.d.ts +686 -0
  68. package/dist/drizzle/postgres.d.ts.map +1 -0
  69. package/dist/drizzle/postgres.js +18 -0
  70. package/dist/drizzle/postgres.js.map +9 -0
  71. package/dist/errors.d.ts +53 -0
  72. package/dist/errors.d.ts.map +1 -0
  73. package/dist/errors.js +26 -0
  74. package/dist/errors.js.map +9 -0
  75. package/dist/index.d.ts +15 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +73 -0
  78. package/dist/index.js.map +9 -0
  79. package/dist/lock.d.ts +6 -0
  80. package/dist/lock.d.ts.map +1 -0
  81. package/dist/lock.js +8 -0
  82. package/dist/lock.js.map +9 -0
  83. package/dist/memory/index.d.ts +15 -0
  84. package/dist/memory/index.d.ts.map +1 -0
  85. package/dist/memory/index.js +178 -0
  86. package/dist/memory/index.js.map +10 -0
  87. package/dist/redis/index.d.ts +2 -0
  88. package/dist/redis/index.d.ts.map +1 -0
  89. package/dist/redis/index.js +8 -0
  90. package/dist/redis/index.js.map +9 -0
  91. package/dist/redis/redisLock.d.ts +4 -0
  92. package/dist/redis/redisLock.d.ts.map +1 -0
  93. package/dist/redis/redisLock.js +8 -0
  94. package/dist/redis/redisLock.js.map +9 -0
  95. package/dist/refresh.d.ts +4 -0
  96. package/dist/refresh.d.ts.map +1 -0
  97. package/dist/refresh.js +13 -0
  98. package/dist/refresh.js.map +9 -0
  99. package/dist/replay.d.ts +4 -0
  100. package/dist/replay.d.ts.map +1 -0
  101. package/dist/replay.js +13 -0
  102. package/dist/replay.js.map +9 -0
  103. package/dist/snapshotGenerator.d.ts +79 -0
  104. package/dist/snapshotGenerator.d.ts.map +1 -0
  105. package/dist/snapshotGenerator.js +9 -0
  106. package/dist/snapshotGenerator.js.map +9 -0
  107. package/dist/superjson.d.ts +5 -0
  108. package/dist/superjson.d.ts.map +1 -0
  109. package/dist/superjson.js +12 -0
  110. package/dist/superjson.js.map +9 -0
  111. package/dist/transaction.d.ts +13 -0
  112. package/dist/transaction.d.ts.map +1 -0
  113. package/dist/transaction.js +8 -0
  114. package/dist/transaction.js.map +9 -0
  115. package/dist/utilityTypes.d.js +2 -0
  116. package/dist/utilityTypes.d.js.map +9 -0
  117. package/dist/utils.d.ts +4 -0
  118. package/dist/utils.d.ts.map +1 -0
  119. package/dist/utils.js +10 -0
  120. package/dist/utils.js.map +9 -0
  121. package/dist/wrappedEventBuilder.d.ts +37 -0
  122. package/dist/wrappedEventBuilder.d.ts.map +1 -0
  123. package/dist/wrappedEventBuilder.js +12 -0
  124. package/dist/wrappedEventBuilder.js.map +9 -0
  125. package/package.json +87 -1
  126. package/src/createAggregateRoot.ts +902 -0
  127. package/src/createCheckpointApi.ts +106 -0
  128. package/src/createEventListener.ts +118 -0
  129. package/src/createEventStore.ts +446 -0
  130. package/src/createProcessManager.ts +363 -0
  131. package/src/createProjection.ts +577 -0
  132. package/src/drizzle/index.ts +449 -0
  133. package/src/drizzle/postgres.ts +120 -0
  134. package/src/errors.ts +85 -0
  135. package/src/index.ts +45 -0
  136. package/src/lock.ts +58 -0
  137. package/src/memory/index.ts +224 -0
  138. package/src/redis/index.ts +1 -0
  139. package/src/redis/redisLock.ts +61 -0
  140. package/src/refresh.ts +19 -0
  141. package/src/replay.ts +19 -0
  142. package/src/snapshotGenerator.ts +190 -0
  143. package/src/superjson.ts +11 -0
  144. package/src/tests/aggregateRoot.spec.ts +532 -0
  145. package/src/tests/eventListener.spec.ts +57 -0
  146. package/src/tests/eventStore.spec.ts +86 -0
  147. package/src/tests/processManager.spec.ts +185 -0
  148. package/src/tests/projection.spec.ts +511 -0
  149. package/src/tests/projectionProcessManager.spec.ts +203 -0
  150. package/src/tests/setup.ts +230 -0
  151. package/src/tests/transaction.spec.ts +185 -0
  152. package/src/transaction.ts +93 -0
  153. package/src/utilityTypes.d.ts +110 -0
  154. package/src/utils.ts +43 -0
  155. package/src/wrappedEventBuilder.ts +181 -0
@@ -0,0 +1,120 @@
1
+ import z from 'zod/v4';
2
+ import { type CheckpointMethods } from './createCheckpointApi.ts';
3
+ import type { LoadEvents, OnProgress } from './createEventStore.ts';
4
+ import type { CompleteSnapshotGenerator, SnapshotGenerator } from './snapshotGenerator.ts';
5
+ import type { AllEvents, BaseOutputEvent, EventHandlers, EventTemplate, Keys, MaybePromise, Merge, OutputEvent, StreamEvents } from './utilityTypes.d.ts';
6
+ type ProjectionInfo = {
7
+ name: string;
8
+ event: BaseOutputEvent;
9
+ };
10
+ export declare function getProjectionInfo(): ProjectionInfo | undefined;
11
+ export declare function isInsideProjection(): boolean;
12
+ type ReplayConfig = {
13
+ deleteOne?: (id: string) => MaybePromise<void>;
14
+ deleteAll?: () => MaybePromise<void>;
15
+ };
16
+ type ProjectionEventHandlers<Events extends EventTemplate> = EventHandlers<Events, {
17
+ replaying: boolean;
18
+ replayUntil: (position: number, filterEvents?: (event: OutputEvent<Events>) => boolean) => Promise<void>;
19
+ }>;
20
+ type ReplayProjection<Events extends EventTemplate> = {
21
+ replayOne: (streamId: string) => Promise<void>;
22
+ replayUntil: (streamId: string, position: number, filterEvents?: (event: OutputEvent<Events>) => boolean) => Promise<void>;
23
+ replay: () => Promise<void>;
24
+ };
25
+ export type InternalProjection = {
26
+ apply: (event: BaseOutputEvent) => Promise<void>;
27
+ setRelatedStreamEvents: (generateRelatedStreamEvents: (eventHandlers: EventHandlers<EventTemplate>) => StreamEvents[]) => void;
28
+ isReady(): Promise<void>;
29
+ canReplay(): boolean;
30
+ beginReplay(): Promise<void>;
31
+ progressReplay(index: number, event: BaseOutputEvent): Promise<void>;
32
+ endReplay(): void;
33
+ init(catchUp: boolean): Promise<void>;
34
+ };
35
+ export type ProjectionApi<Events extends EventTemplate = never, RConfig extends ReplayConfig = never, Flags extends {
36
+ withEventHandlers: boolean;
37
+ withGlobalEventHandler: boolean;
38
+ concurrent: boolean;
39
+ withReplay: boolean;
40
+ withSnapshots: boolean;
41
+ } = {
42
+ withEventHandlers: false;
43
+ withGlobalEventHandler: false;
44
+ concurrent: false;
45
+ withReplay: false;
46
+ withSnapshots: true;
47
+ }> = {
48
+ withEventHandlers: (handlers: ProjectionEventHandlers<Events>) => Omit<ProjectionApi<Events, RConfig, Merge<Flags, {
49
+ withEventHandlers: true;
50
+ }>>, Keys<Merge<Flags, {
51
+ withEventHandlers: true;
52
+ }>>>;
53
+ withGlobalEventHandler: (handler: (event: AllEvents<Events>, methods: ReplayProjection<Events>) => MaybePromise<void>) => Omit<ProjectionApi<Events, RConfig, Merge<Flags, {
54
+ withGlobalEventHandler: true;
55
+ }>>, Keys<Merge<Flags, {
56
+ withGlobalEventHandler: true;
57
+ }>>>;
58
+ concurrent: () => Omit<ProjectionApi<Events, RConfig, Merge<Flags, {
59
+ concurrent: true;
60
+ }>>, Keys<Merge<Flags, {
61
+ concurrent: true;
62
+ }>>>;
63
+ withReplay: <Config extends ReplayConfig>(config: Config) => Omit<ProjectionApi<Events, Config, Merge<Flags, {
64
+ withReplay: true;
65
+ }>>, Keys<Merge<Flags, {
66
+ withReplay: true;
67
+ }>>>;
68
+ withSnapshots: (handler: (generator: SnapshotGenerator<Omit<Snapshot, 'schemaVersion' | 'state'>>) => CompleteSnapshotGenerator) => Omit<ProjectionApi<Events, RConfig, Merge<Flags, {
69
+ withSnapshots: true;
70
+ }>>, Keys<Merge<Flags, {
71
+ withSnapshots: true;
72
+ }>>>;
73
+ isReady(): Promise<void>;
74
+ } & ('deleteOne' extends keyof RConfig ? Pick<ReplayProjection<Events>, 'replayOne' | 'replayUntil'> : {}) & ('deleteAll' extends keyof RConfig ? Pick<ReplayProjection<Events>, 'replay'> : {});
75
+ export type ProjectionApiWithSnapshots<Events extends EventTemplate = never, RConfig extends ReplayConfig = never, Flags extends {
76
+ withEventHandlers: boolean;
77
+ withGlobalEventHandler: boolean;
78
+ concurrent: boolean;
79
+ withReplay: boolean;
80
+ withSnapshots: boolean;
81
+ } = {
82
+ withEventHandlers: false;
83
+ withGlobalEventHandler: false;
84
+ concurrent: false;
85
+ withReplay: false;
86
+ withSnapshots: false;
87
+ }> = ProjectionApi<Events, RConfig, Flags>;
88
+ declare const snapshotSchema: z.ZodObject<{
89
+ projectionId: z.ZodString;
90
+ projectionType: z.ZodString;
91
+ lastEventPosition: z.ZodInt;
92
+ state: z.ZodUnknown;
93
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
94
+ schemaVersion: z.ZodInt;
95
+ createdAt: z.ZodDate;
96
+ }, z.core.$strip>;
97
+ export type Snapshot = z.output<typeof snapshotSchema>;
98
+ export type ProjectionSnapshotMethods = {
99
+ get: (select: {
100
+ projection: string;
101
+ id: string;
102
+ }) => MaybePromise<Snapshot | null | undefined>;
103
+ put: (snapshot: Snapshot) => MaybePromise<void>;
104
+ delete: (target: {
105
+ id?: string;
106
+ projection: string;
107
+ }, fromPosition?: number) => MaybePromise<void>;
108
+ incrementAppliedCount: (target: {
109
+ projection: string;
110
+ id: string;
111
+ }) => MaybePromise<number>;
112
+ };
113
+ export declare function buildProjectionCreator(params: {
114
+ loadEvents: LoadEvents;
115
+ checkpoint: CheckpointMethods;
116
+ onReplay?: OnProgress;
117
+ snapshot?: ProjectionSnapshotMethods;
118
+ }): (name: string) => ProjectionApi;
119
+ export {};
120
+ //# sourceMappingURL=createProjection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProjection.d.ts","sourceRoot":"","sources":["../src/createProjection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import {
2
+ buildProjectionCreator,
3
+ getProjectionInfo,
4
+ isInsideProjection
5
+ } from "./chunk-ncpk70p4.js";
6
+ import"./chunk-x90g388y.js";
7
+ import"./chunk-zf3x573k.js";
8
+ import"./chunk-pmfzjavb.js";
9
+ import"./chunk-qdczt68t.js";
10
+ export {
11
+ isInsideProjection,
12
+ getProjectionInfo,
13
+ buildProjectionCreator
14
+ };
15
+
16
+ //# debugId=4F2030013DDDE52A64756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "4F2030013DDDE52A64756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,449 @@
1
+ import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
2
+ import type { AnyAggregateRoot } from '../createAggregateRoot.ts';
3
+ import { events } from './postgres.ts';
4
+ import type { EventStore, EventStoreParamsWithAggregateRootSnapshots, EventsFromRoot, OnProgress } from '../createEventStore.ts';
5
+ import type { BaseOutputEvent, MaybePromise, OutputEvent } from '../utilityTypes.js';
6
+ export { createAggregateRoot } from '../index.ts';
7
+ export { extendTypes } from '../superjson.ts';
8
+ export type OnEventsAppendend = (events: BaseOutputEvent[]) => MaybePromise<void>;
9
+ interface DrizzleEventStoreParams<Root extends AnyAggregateRoot> {
10
+ database: NodePgDatabase<any> | (() => NodePgDatabase<any>);
11
+ aggregateRoots: Root[];
12
+ autoInit?: boolean;
13
+ postProcessEvent?: EventStoreParamsWithAggregateRootSnapshots<Root>['postProcessEvent'];
14
+ onProjectionReplay?: OnProgress;
15
+ onProcessManagerRefresh?: OnProgress;
16
+ onEventsAppended?: OnEventsAppendend;
17
+ }
18
+ declare function createEventsQuery(database: NodePgDatabase<any>): import("drizzle-orm/pg-core").PgSelectBase<"events", {
19
+ position: import("drizzle-orm/pg-core").PgColumn<{
20
+ name: "position";
21
+ tableName: "events";
22
+ dataType: "number";
23
+ columnType: "PgBigInt53";
24
+ data: number;
25
+ driverParam: string | number;
26
+ notNull: true;
27
+ hasDefault: true;
28
+ isPrimaryKey: true;
29
+ isAutoincrement: false;
30
+ hasRuntimeDefault: false;
31
+ enumValues: undefined;
32
+ baseColumn: never;
33
+ identity: "byDefault";
34
+ generated: undefined;
35
+ }, {}, {}>;
36
+ type: import("drizzle-orm/pg-core").PgColumn<{
37
+ name: "type";
38
+ tableName: "events";
39
+ dataType: "string";
40
+ columnType: "PgText";
41
+ data: string;
42
+ driverParam: string;
43
+ notNull: true;
44
+ hasDefault: false;
45
+ isPrimaryKey: false;
46
+ isAutoincrement: false;
47
+ hasRuntimeDefault: false;
48
+ enumValues: [string, ...string[]];
49
+ baseColumn: never;
50
+ identity: undefined;
51
+ generated: undefined;
52
+ }, {}, {}>;
53
+ schemaVersion: import("drizzle-orm/pg-core").PgColumn<{
54
+ name: "schemaVersion";
55
+ tableName: "events";
56
+ dataType: "number";
57
+ columnType: "PgInteger";
58
+ data: number;
59
+ driverParam: string | number;
60
+ notNull: true;
61
+ hasDefault: false;
62
+ isPrimaryKey: false;
63
+ isAutoincrement: false;
64
+ hasRuntimeDefault: false;
65
+ enumValues: undefined;
66
+ baseColumn: never;
67
+ identity: undefined;
68
+ generated: undefined;
69
+ }, {}, {}>;
70
+ payload: import("drizzle-orm/pg-core").PgColumn<{
71
+ name: "payload";
72
+ tableName: "events";
73
+ dataType: "string";
74
+ columnType: "PgText";
75
+ data: string;
76
+ driverParam: string;
77
+ notNull: true;
78
+ hasDefault: false;
79
+ isPrimaryKey: false;
80
+ isAutoincrement: false;
81
+ hasRuntimeDefault: false;
82
+ enumValues: [string, ...string[]];
83
+ baseColumn: never;
84
+ identity: undefined;
85
+ generated: undefined;
86
+ }, {}, {}>;
87
+ streamId: import("drizzle-orm/pg-core").PgColumn<{
88
+ name: "streamId";
89
+ tableName: "events";
90
+ dataType: "string";
91
+ columnType: "PgText";
92
+ data: string;
93
+ driverParam: string;
94
+ notNull: true;
95
+ hasDefault: false;
96
+ isPrimaryKey: false;
97
+ isAutoincrement: false;
98
+ hasRuntimeDefault: false;
99
+ enumValues: [string, ...string[]];
100
+ baseColumn: never;
101
+ identity: undefined;
102
+ generated: undefined;
103
+ }, {}, {}>;
104
+ streamType: import("drizzle-orm/pg-core").PgColumn<{
105
+ name: "streamType";
106
+ tableName: "events";
107
+ dataType: "string";
108
+ columnType: "PgText";
109
+ data: string;
110
+ driverParam: string;
111
+ notNull: true;
112
+ hasDefault: false;
113
+ isPrimaryKey: false;
114
+ isAutoincrement: false;
115
+ hasRuntimeDefault: false;
116
+ enumValues: [string, ...string[]];
117
+ baseColumn: never;
118
+ identity: undefined;
119
+ generated: undefined;
120
+ }, {}, {}>;
121
+ streamVersion: import("drizzle-orm/pg-core").PgColumn<{
122
+ name: "streamVersion";
123
+ tableName: "events";
124
+ dataType: "number";
125
+ columnType: "PgBigInt53";
126
+ data: number;
127
+ driverParam: string | number;
128
+ notNull: true;
129
+ hasDefault: false;
130
+ isPrimaryKey: false;
131
+ isAutoincrement: false;
132
+ hasRuntimeDefault: false;
133
+ enumValues: undefined;
134
+ baseColumn: never;
135
+ identity: undefined;
136
+ generated: undefined;
137
+ }, {}, {}>;
138
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
139
+ name: "createdAt";
140
+ tableName: "events";
141
+ dataType: "date";
142
+ columnType: "PgTimestamp";
143
+ data: Date;
144
+ driverParam: string;
145
+ notNull: true;
146
+ hasDefault: true;
147
+ isPrimaryKey: false;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: undefined;
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {}>;
155
+ actorId: import("drizzle-orm/pg-core").PgColumn<{
156
+ name: "actorId";
157
+ tableName: "events";
158
+ dataType: "string";
159
+ columnType: "PgText";
160
+ data: string;
161
+ driverParam: string;
162
+ notNull: false;
163
+ hasDefault: false;
164
+ isPrimaryKey: false;
165
+ isAutoincrement: false;
166
+ hasRuntimeDefault: false;
167
+ enumValues: [string, ...string[]];
168
+ baseColumn: never;
169
+ identity: undefined;
170
+ generated: undefined;
171
+ }, {}, {}>;
172
+ correlationId: import("drizzle-orm/pg-core").PgColumn<{
173
+ name: "correlationId";
174
+ tableName: "events";
175
+ dataType: "string";
176
+ columnType: "PgUUID";
177
+ data: string;
178
+ driverParam: string;
179
+ notNull: false;
180
+ hasDefault: false;
181
+ isPrimaryKey: false;
182
+ isAutoincrement: false;
183
+ hasRuntimeDefault: false;
184
+ enumValues: undefined;
185
+ baseColumn: never;
186
+ identity: undefined;
187
+ generated: undefined;
188
+ }, {}, {}>;
189
+ causationId: import("drizzle-orm/pg-core").PgColumn<{
190
+ name: "causationId";
191
+ tableName: "events";
192
+ dataType: "string";
193
+ columnType: "PgUUID";
194
+ data: string;
195
+ driverParam: string;
196
+ notNull: false;
197
+ hasDefault: false;
198
+ isPrimaryKey: false;
199
+ isAutoincrement: false;
200
+ hasRuntimeDefault: false;
201
+ enumValues: undefined;
202
+ baseColumn: never;
203
+ identity: undefined;
204
+ generated: undefined;
205
+ }, {}, {}>;
206
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
207
+ name: "metadata";
208
+ tableName: "events";
209
+ dataType: "json";
210
+ columnType: "PgJsonb";
211
+ data: import("superjson").SuperJSONResult;
212
+ driverParam: unknown;
213
+ notNull: true;
214
+ hasDefault: false;
215
+ isPrimaryKey: false;
216
+ isAutoincrement: false;
217
+ hasRuntimeDefault: false;
218
+ enumValues: undefined;
219
+ baseColumn: never;
220
+ identity: undefined;
221
+ generated: undefined;
222
+ }, {}, {
223
+ $type: import("superjson").SuperJSONResult;
224
+ }>;
225
+ }, "partial", Record<"events", "not-null">, true, never, {
226
+ position: number;
227
+ type: string;
228
+ schemaVersion: number;
229
+ payload: string;
230
+ streamId: string;
231
+ streamType: string;
232
+ streamVersion: number;
233
+ createdAt: Date;
234
+ actorId: string | null;
235
+ correlationId: string | null;
236
+ causationId: string | null;
237
+ metadata: import("superjson").SuperJSONResult;
238
+ }[], {
239
+ position: import("drizzle-orm/pg-core").PgColumn<{
240
+ name: "position";
241
+ tableName: "events";
242
+ dataType: "number";
243
+ columnType: "PgBigInt53";
244
+ data: number;
245
+ driverParam: string | number;
246
+ notNull: true;
247
+ hasDefault: true;
248
+ isPrimaryKey: true;
249
+ isAutoincrement: false;
250
+ hasRuntimeDefault: false;
251
+ enumValues: undefined;
252
+ baseColumn: never;
253
+ identity: "byDefault";
254
+ generated: undefined;
255
+ }, {}, {}>;
256
+ type: import("drizzle-orm/pg-core").PgColumn<{
257
+ name: "type";
258
+ tableName: "events";
259
+ dataType: "string";
260
+ columnType: "PgText";
261
+ data: string;
262
+ driverParam: string;
263
+ notNull: true;
264
+ hasDefault: false;
265
+ isPrimaryKey: false;
266
+ isAutoincrement: false;
267
+ hasRuntimeDefault: false;
268
+ enumValues: [string, ...string[]];
269
+ baseColumn: never;
270
+ identity: undefined;
271
+ generated: undefined;
272
+ }, {}, {}>;
273
+ schemaVersion: import("drizzle-orm/pg-core").PgColumn<{
274
+ name: "schemaVersion";
275
+ tableName: "events";
276
+ dataType: "number";
277
+ columnType: "PgInteger";
278
+ data: number;
279
+ driverParam: string | number;
280
+ notNull: true;
281
+ hasDefault: false;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: undefined;
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {}>;
290
+ payload: import("drizzle-orm/pg-core").PgColumn<{
291
+ name: "payload";
292
+ tableName: "events";
293
+ dataType: "string";
294
+ columnType: "PgText";
295
+ data: string;
296
+ driverParam: string;
297
+ notNull: true;
298
+ hasDefault: false;
299
+ isPrimaryKey: false;
300
+ isAutoincrement: false;
301
+ hasRuntimeDefault: false;
302
+ enumValues: [string, ...string[]];
303
+ baseColumn: never;
304
+ identity: undefined;
305
+ generated: undefined;
306
+ }, {}, {}>;
307
+ streamId: import("drizzle-orm/pg-core").PgColumn<{
308
+ name: "streamId";
309
+ tableName: "events";
310
+ dataType: "string";
311
+ columnType: "PgText";
312
+ data: string;
313
+ driverParam: string;
314
+ notNull: true;
315
+ hasDefault: false;
316
+ isPrimaryKey: false;
317
+ isAutoincrement: false;
318
+ hasRuntimeDefault: false;
319
+ enumValues: [string, ...string[]];
320
+ baseColumn: never;
321
+ identity: undefined;
322
+ generated: undefined;
323
+ }, {}, {}>;
324
+ streamType: import("drizzle-orm/pg-core").PgColumn<{
325
+ name: "streamType";
326
+ tableName: "events";
327
+ dataType: "string";
328
+ columnType: "PgText";
329
+ data: string;
330
+ driverParam: string;
331
+ notNull: true;
332
+ hasDefault: false;
333
+ isPrimaryKey: false;
334
+ isAutoincrement: false;
335
+ hasRuntimeDefault: false;
336
+ enumValues: [string, ...string[]];
337
+ baseColumn: never;
338
+ identity: undefined;
339
+ generated: undefined;
340
+ }, {}, {}>;
341
+ streamVersion: import("drizzle-orm/pg-core").PgColumn<{
342
+ name: "streamVersion";
343
+ tableName: "events";
344
+ dataType: "number";
345
+ columnType: "PgBigInt53";
346
+ data: number;
347
+ driverParam: string | number;
348
+ notNull: true;
349
+ hasDefault: false;
350
+ isPrimaryKey: false;
351
+ isAutoincrement: false;
352
+ hasRuntimeDefault: false;
353
+ enumValues: undefined;
354
+ baseColumn: never;
355
+ identity: undefined;
356
+ generated: undefined;
357
+ }, {}, {}>;
358
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
359
+ name: "createdAt";
360
+ tableName: "events";
361
+ dataType: "date";
362
+ columnType: "PgTimestamp";
363
+ data: Date;
364
+ driverParam: string;
365
+ notNull: true;
366
+ hasDefault: true;
367
+ isPrimaryKey: false;
368
+ isAutoincrement: false;
369
+ hasRuntimeDefault: false;
370
+ enumValues: undefined;
371
+ baseColumn: never;
372
+ identity: undefined;
373
+ generated: undefined;
374
+ }, {}, {}>;
375
+ actorId: import("drizzle-orm/pg-core").PgColumn<{
376
+ name: "actorId";
377
+ tableName: "events";
378
+ dataType: "string";
379
+ columnType: "PgText";
380
+ data: string;
381
+ driverParam: string;
382
+ notNull: false;
383
+ hasDefault: false;
384
+ isPrimaryKey: false;
385
+ isAutoincrement: false;
386
+ hasRuntimeDefault: false;
387
+ enumValues: [string, ...string[]];
388
+ baseColumn: never;
389
+ identity: undefined;
390
+ generated: undefined;
391
+ }, {}, {}>;
392
+ correlationId: import("drizzle-orm/pg-core").PgColumn<{
393
+ name: "correlationId";
394
+ tableName: "events";
395
+ dataType: "string";
396
+ columnType: "PgUUID";
397
+ data: string;
398
+ driverParam: string;
399
+ notNull: false;
400
+ hasDefault: false;
401
+ isPrimaryKey: false;
402
+ isAutoincrement: false;
403
+ hasRuntimeDefault: false;
404
+ enumValues: undefined;
405
+ baseColumn: never;
406
+ identity: undefined;
407
+ generated: undefined;
408
+ }, {}, {}>;
409
+ causationId: import("drizzle-orm/pg-core").PgColumn<{
410
+ name: "causationId";
411
+ tableName: "events";
412
+ dataType: "string";
413
+ columnType: "PgUUID";
414
+ data: string;
415
+ driverParam: string;
416
+ notNull: false;
417
+ hasDefault: false;
418
+ isPrimaryKey: false;
419
+ isAutoincrement: false;
420
+ hasRuntimeDefault: false;
421
+ enumValues: undefined;
422
+ baseColumn: never;
423
+ identity: undefined;
424
+ generated: undefined;
425
+ }, {}, {}>;
426
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
427
+ name: "metadata";
428
+ tableName: "events";
429
+ dataType: "json";
430
+ columnType: "PgJsonb";
431
+ data: import("superjson").SuperJSONResult;
432
+ driverParam: unknown;
433
+ notNull: true;
434
+ hasDefault: false;
435
+ isPrimaryKey: false;
436
+ isAutoincrement: false;
437
+ hasRuntimeDefault: false;
438
+ enumValues: undefined;
439
+ baseColumn: never;
440
+ identity: undefined;
441
+ generated: undefined;
442
+ }, {}, {
443
+ $type: import("superjson").SuperJSONResult;
444
+ }>;
445
+ }>;
446
+ type EventsQuery = ReturnType<typeof createEventsQuery>;
447
+ export declare function fetchEvents<E extends OutputEvent<any> = BaseOutputEvent>(database: NodePgDatabase<any>, modifyQuery?: (query: EventsQuery, table: typeof events) => EventsQuery): Promise<E[]>;
448
+ export declare function createEventStore<const Root extends AnyAggregateRoot>({ database, aggregateRoots, postProcessEvent, onProjectionReplay, onProcessManagerRefresh, onEventsAppended, autoInit, }: DrizzleEventStoreParams<Root>): EventStore<EventsFromRoot<Root>, Root, true>;
449
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAOjE,OAAO,EAGL,MAAM,EAGP,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EACV,UAAU,EACV,0CAA0C,EAC1C,cAAc,EACd,UAAU,EACX,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACZ,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,eAAe,EAAE,KACtB,YAAY,CAAC,IAAI,CAAC,CAAA;AAEvB,UAAU,uBAAuB,CAAC,IAAI,SAAS,gBAAgB;IAC7D,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3D,cAAc,EAAE,IAAI,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,0CAA0C,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAA;IACvF,kBAAkB,CAAC,EAAE,UAAU,CAAA;IAC/B,uBAAuB,CAAC,EAAE,UAAU,CAAA;IACpC,gBAAgB,CAAC,EAAE,iBAAiB,CAAA;CACrC;AAqBD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmBvD;AAED,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEvD,wBAAsB,WAAW,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,eAAe,EAC5E,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,EAC7B,WAAW,GAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,MAAM,KAAK,WAErD,gBASP;AAED,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,IAAI,SAAS,gBAAgB,EAAE,EACpE,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,QAAQ,GACT,EAAE,uBAAuB,CAAC,IAAI,CAAC,GAAG,UAAU,CAC3C,cAAc,CAAC,IAAI,CAAC,EACpB,IAAI,EACJ,IAAI,CACL,CAkUA"}