@event-driven-io/emmett 0.43.0-beta.12 → 0.43.0-beta.14
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.
- package/README.md +591 -0
- package/dist/cli.cjs +124 -179
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +12 -9
- package/dist/cli.d.ts +12 -9
- package/dist/cli.js +115 -178
- package/dist/cli.js.map +1 -1
- package/dist/index-BXN5muYb.d.cts +73 -0
- package/dist/index-C0agmFA7.d.ts +73 -0
- package/dist/index.cjs +2309 -2872
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +689 -623
- package/dist/index.d.ts +689 -623
- package/dist/index.js +2090 -2800
- package/dist/index.js.map +1 -1
- package/dist/plugins-CUbnGFPp.js +131 -0
- package/dist/plugins-CUbnGFPp.js.map +1 -0
- package/dist/plugins-DB9xe8AV.cjs +272 -0
- package/dist/plugins-DB9xe8AV.cjs.map +1 -0
- package/package.json +4 -4
- package/dist/chunk-AZDDB5SF.js +0 -161
- package/dist/chunk-AZDDB5SF.js.map +0 -1
- package/dist/chunk-WND32L6P.cjs +0 -161
- package/dist/chunk-WND32L6P.cjs.map +0 -1
- package/dist/index-D13Bsibj.d.cts +0 -69
- package/dist/index-D13Bsibj.d.ts +0 -69
package/dist/index.d.ts
CHANGED
|
@@ -1,67 +1,65 @@
|
|
|
1
|
-
import { a as EmmettError,
|
|
2
|
-
|
|
3
|
-
import retry from 'async-retry';
|
|
1
|
+
import { _ as isPluginConfig, a as IllegalStateError, c as isErrorConstructor, d as EmmettCliPlugin, f as EmmettCliPluginRegistration, g as EmmettPluginType, h as EmmettPluginRegistration, i as ErrorConstructor, l as EmmettPluginsConfig, m as EmmettPluginConfig, n as ConcurrencyInMemoryDatabaseError, o as NotFoundError, p as EmmettPlugin, r as EmmettError, s as ValidationError, t as ConcurrencyError, u as EmmettCliCommand } from "./index-C0agmFA7.js";
|
|
2
|
+
import retry from "async-retry";
|
|
4
3
|
|
|
4
|
+
//#region src/typing/deepReadonly.d.ts
|
|
5
5
|
type Primitive = undefined | null | boolean | string | number | bigint | symbol | Function;
|
|
6
6
|
type ImmutableTypes = Date | RegExp;
|
|
7
7
|
type DeepReadonly<T> = T extends Primitive | ImmutableTypes ? T : T extends Array<infer U> ? ReadonlyArray<DeepReadonly<U>> : T extends Map<infer K, infer V> ? ReadonlyMap<DeepReadonly<K>, DeepReadonly<V>> : T extends Set<infer M> ? ReadonlySet<DeepReadonly<M>> : T extends Promise<infer U> ? Promise<DeepReadonly<U>> : T extends object ? DeepReadonlyObject<T> : Readonly<T>;
|
|
8
|
-
type DeepReadonlyObject<T> = {
|
|
9
|
-
readonly [P in keyof T]: DeepReadonly<T[P]>;
|
|
10
|
-
};
|
|
8
|
+
type DeepReadonlyObject<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> };
|
|
11
9
|
type Mutable<T> = T extends Primitive ? T : T extends ReadonlyArray<infer U> ? MutableArray<U> : T extends ReadonlyMap<infer K, infer V> ? MutableMap<K, V> : T extends ReadonlySet<infer M> ? MutableSet<M> : T extends Function ? T : T extends object ? MutableObject<T> : unknown;
|
|
12
10
|
type MutableArray<T> = Array<Mutable<T>>;
|
|
13
11
|
type MutableMap<K, V> = Map<Mutable<K>, Mutable<V>>;
|
|
14
12
|
type MutableSet<T> = Set<Mutable<T>>;
|
|
15
|
-
type MutableObject<T> = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
type MutableObject<T> = { -readonly [P in keyof T]: Mutable<T[P]> };
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/typing/command.d.ts
|
|
19
16
|
type Command<CommandType extends string = string, CommandData extends DefaultRecord = DefaultRecord, CommandMetaData extends DefaultRecord | undefined = undefined> = Readonly<CommandMetaData extends undefined ? {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
type: CommandType;
|
|
18
|
+
data: Readonly<CommandData>;
|
|
19
|
+
metadata?: DefaultCommandMetadata | undefined;
|
|
23
20
|
} : {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
type: CommandType;
|
|
22
|
+
data: CommandData;
|
|
23
|
+
metadata: CommandMetaData;
|
|
27
24
|
}> & {
|
|
28
|
-
|
|
25
|
+
readonly kind?: 'Command';
|
|
29
26
|
};
|
|
30
27
|
type AnyCommand = Command<any, any, any>;
|
|
31
28
|
type CommandTypeOf<T extends Command> = T['type'];
|
|
32
29
|
type CommandDataOf<T extends Command> = T['data'];
|
|
33
30
|
type CommandMetaDataOf<T extends Command> = T extends {
|
|
34
|
-
|
|
31
|
+
metadata: infer M;
|
|
35
32
|
} ? M : undefined;
|
|
36
33
|
type CreateCommandType<CommandType extends string, CommandData extends DefaultRecord, CommandMetaData extends DefaultRecord | undefined = undefined> = Readonly<CommandMetaData extends undefined ? {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
type: CommandType;
|
|
35
|
+
data: CommandData;
|
|
36
|
+
metadata?: DefaultCommandMetadata | undefined;
|
|
40
37
|
} : {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
type: CommandType;
|
|
39
|
+
data: CommandData;
|
|
40
|
+
metadata: CommandMetaData;
|
|
44
41
|
}> & {
|
|
45
|
-
|
|
42
|
+
readonly kind?: 'Command';
|
|
46
43
|
};
|
|
47
44
|
declare const command: <CommandType extends Command<string, any, any>>(...args: CommandMetaDataOf<CommandType> extends undefined ? [type: CommandTypeOf<CommandType>, data: CommandDataOf<CommandType>, metadata?: DefaultCommandMetadata | undefined] : [type: CommandTypeOf<CommandType>, data: CommandDataOf<CommandType>, metadata: CommandMetaDataOf<CommandType>]) => CommandType;
|
|
48
45
|
type DefaultCommandMetadata = {
|
|
49
|
-
|
|
46
|
+
now: Date;
|
|
50
47
|
};
|
|
51
|
-
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/database/types.d.ts
|
|
52
50
|
/** TypeScript Omit (Exclude to be specific) does not work for objects with an "any" indexed type, and breaks discriminated unions @public */
|
|
53
51
|
declare type EnhancedOmit<TRecordOrUnion, KeyUnion> = string extends keyof TRecordOrUnion ? TRecordOrUnion : TRecordOrUnion extends any ? Pick<TRecordOrUnion, Exclude<keyof TRecordOrUnion, KeyUnion>> : never;
|
|
54
52
|
declare type WithId<TSchema> = EnhancedOmit<TSchema, '_id'> & {
|
|
55
|
-
|
|
53
|
+
_id: string;
|
|
56
54
|
};
|
|
57
55
|
type WithoutId<T> = Omit<T, '_id'>;
|
|
58
56
|
declare type WithVersion<TSchema> = EnhancedOmit<TSchema, '_version'> & {
|
|
59
|
-
|
|
57
|
+
_version: bigint;
|
|
60
58
|
};
|
|
61
59
|
type WithoutVersion<T> = Omit<T, '_version'>;
|
|
62
60
|
type WithIdAndVersion<TSchema> = EnhancedOmit<TSchema, '_version' | '_id'> & {
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
_id: string;
|
|
62
|
+
_version: bigint;
|
|
65
63
|
};
|
|
66
64
|
type Document = Record<string, unknown>;
|
|
67
65
|
type DocumentHandler<T extends Document> = (document: T | null) => T | null;
|
|
@@ -69,204 +67,209 @@ type ExpectedDocumentVersionGeneral = 'DOCUMENT_EXISTS' | 'DOCUMENT_DOES_NOT_EXI
|
|
|
69
67
|
type ExpectedDocumentVersion = bigint | ExpectedDocumentVersionGeneral;
|
|
70
68
|
type ExpectedDocumentVersionValue = bigint;
|
|
71
69
|
type DatabaseHandleOptions = {
|
|
72
|
-
|
|
70
|
+
expectedVersion?: ExpectedDocumentVersion;
|
|
73
71
|
};
|
|
74
72
|
type OperationResult = {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
acknowledged: boolean;
|
|
74
|
+
successful: boolean;
|
|
75
|
+
assertSuccessful: (errorMessage?: string) => void;
|
|
78
76
|
};
|
|
79
77
|
interface InsertOneResult extends OperationResult {
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
insertedId: string | null;
|
|
79
|
+
nextExpectedVersion: bigint;
|
|
82
80
|
}
|
|
83
81
|
interface InsertManyResult extends OperationResult {
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
insertedIds: string[];
|
|
83
|
+
insertedCount: number;
|
|
86
84
|
}
|
|
87
85
|
interface UpdateResult extends OperationResult {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
matchedCount: number;
|
|
87
|
+
modifiedCount: number;
|
|
88
|
+
nextExpectedVersion: bigint;
|
|
91
89
|
}
|
|
92
90
|
interface UpdateManyResult extends OperationResult {
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
matchedCount: number;
|
|
92
|
+
modifiedCount: number;
|
|
95
93
|
}
|
|
96
94
|
interface DeleteResult extends OperationResult {
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
matchedCount: number;
|
|
96
|
+
deletedCount: number;
|
|
99
97
|
}
|
|
100
98
|
interface DeleteManyResult extends OperationResult {
|
|
101
|
-
|
|
99
|
+
deletedCount: number;
|
|
102
100
|
}
|
|
103
101
|
type DatabaseHandleResult<T> = (InsertOneResult & {
|
|
104
|
-
|
|
102
|
+
document: WithIdAndVersion<T>;
|
|
105
103
|
}) | (UpdateResult & {
|
|
106
|
-
|
|
104
|
+
document: WithIdAndVersion<T>;
|
|
107
105
|
}) | (DeleteResult & {
|
|
108
|
-
|
|
106
|
+
document: null;
|
|
109
107
|
}) | (OperationResult & {
|
|
110
|
-
|
|
108
|
+
document: null;
|
|
111
109
|
});
|
|
112
110
|
type DatabaseHandleOptionErrors = {
|
|
113
|
-
|
|
111
|
+
throwOnOperationFailures?: boolean;
|
|
114
112
|
} | undefined;
|
|
115
113
|
declare type OptionalId<TSchema> = EnhancedOmit<TSchema, '_id'> & {
|
|
116
|
-
|
|
114
|
+
_id?: string;
|
|
117
115
|
};
|
|
118
116
|
declare type OptionalVersion<TSchema> = EnhancedOmit<TSchema, '_version'> & {
|
|
119
|
-
|
|
117
|
+
_version?: bigint;
|
|
120
118
|
};
|
|
121
119
|
declare type OptionalUnlessRequiredId<TSchema> = TSchema extends {
|
|
122
|
-
|
|
120
|
+
_id: string;
|
|
123
121
|
} ? TSchema : OptionalId<TSchema>;
|
|
124
122
|
declare type OptionalUnlessRequiredVersion<TSchema> = TSchema extends {
|
|
125
|
-
|
|
123
|
+
_version: bigint;
|
|
126
124
|
} ? TSchema : OptionalVersion<TSchema>;
|
|
127
125
|
declare type OptionalUnlessRequiredIdAndVersion<TSchema> = OptionalUnlessRequiredId<TSchema> & OptionalUnlessRequiredVersion<TSchema>;
|
|
128
126
|
type InsertOneOptions = {
|
|
129
|
-
|
|
127
|
+
expectedVersion?: Extract<ExpectedDocumentVersion, 'DOCUMENT_DOES_NOT_EXIST' | 'NO_CONCURRENCY_CHECK'>;
|
|
130
128
|
};
|
|
131
129
|
type InsertManyOptions = {
|
|
132
|
-
|
|
130
|
+
expectedVersion?: Extract<ExpectedDocumentVersion, 'DOCUMENT_DOES_NOT_EXIST' | 'NO_CONCURRENCY_CHECK'>;
|
|
133
131
|
};
|
|
134
132
|
type UpdateOneOptions = {
|
|
135
|
-
|
|
133
|
+
expectedVersion?: Exclude<ExpectedDocumentVersion, 'DOCUMENT_DOES_NOT_EXIST'>;
|
|
136
134
|
};
|
|
137
135
|
type UpdateManyOptions = {
|
|
138
|
-
|
|
136
|
+
expectedVersion?: Extract<ExpectedDocumentVersion, 'DOCUMENT_EXISTS' | 'NO_CONCURRENCY_CHECK'>;
|
|
139
137
|
};
|
|
140
138
|
type ReplaceOneOptions = {
|
|
141
|
-
|
|
139
|
+
expectedVersion?: Exclude<ExpectedDocumentVersion, 'DOCUMENT_DOES_NOT_EXIST'>;
|
|
142
140
|
};
|
|
143
141
|
type DeleteOneOptions = {
|
|
144
|
-
|
|
142
|
+
expectedVersion?: Exclude<ExpectedDocumentVersion, 'DOCUMENT_DOES_NOT_EXIST'>;
|
|
145
143
|
};
|
|
146
144
|
type DeleteManyOptions = {
|
|
147
|
-
|
|
145
|
+
expectedVersion?: Extract<ExpectedDocumentVersion, 'DOCUMENT_EXISTS' | 'NO_CONCURRENCY_CHECK'>;
|
|
148
146
|
};
|
|
149
147
|
type FullId<Collection extends string, Id extends string> = `${Collection}-${Id}`;
|
|
150
|
-
|
|
148
|
+
//#endregion
|
|
149
|
+
//#region src/database/inMemoryDatabase.d.ts
|
|
151
150
|
interface InMemoryDocumentsCollection<T extends Document> {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
151
|
+
handle: (id: string, handle: DocumentHandler<T>, options?: DatabaseHandleOptions) => Promise<DatabaseHandleResult<T>>;
|
|
152
|
+
findOne: (predicate?: Predicate<T>) => Promise<T | null>;
|
|
153
|
+
find: (predicate?: Predicate<T>) => Promise<T[]>;
|
|
154
|
+
insertOne: (document: OptionalUnlessRequiredIdAndVersion<T>) => Promise<InsertOneResult>;
|
|
155
|
+
deleteOne: (predicate?: Predicate<T>) => Promise<DeleteResult>;
|
|
156
|
+
replaceOne: (predicate: Predicate<T>, document: WithoutId<T>, options?: ReplaceOneOptions) => Promise<UpdateResult>;
|
|
158
157
|
}
|
|
159
158
|
interface InMemoryDatabase {
|
|
160
|
-
|
|
159
|
+
collection: <T extends Document>(name: string) => InMemoryDocumentsCollection<T>;
|
|
161
160
|
}
|
|
162
161
|
type Predicate<T> = (item: T) => boolean;
|
|
163
162
|
declare const getInMemoryDatabase: () => InMemoryDatabase;
|
|
164
|
-
|
|
163
|
+
//#endregion
|
|
164
|
+
//#region src/serialization/json/serializer.d.ts
|
|
165
165
|
interface Serializer<Payload, SerializeOptions extends Record<string, unknown> = Record<string, unknown>, DeserializeOptions extends Record<string, unknown> = SerializeOptions> {
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
serialize<T>(object: T, options?: SerializeOptions): Payload;
|
|
167
|
+
deserialize<T>(payload: Payload, options?: DeserializeOptions): T;
|
|
168
168
|
}
|
|
169
169
|
interface SerializationCodec<T, Payload, SerializeOptions extends Record<string, unknown> = Record<string, unknown>, DeserializeOptions extends Record<string, unknown> = SerializeOptions> {
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
encode(object: T, options?: SerializeOptions): Payload;
|
|
171
|
+
decode(payload: Payload, options?: DeserializeOptions): T;
|
|
172
|
+
}
|
|
173
|
+
//#endregion
|
|
174
|
+
//#region src/serialization/json/jsonSerializer.d.ts
|
|
175
|
+
interface JSONSerializer<SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions> extends Serializer<string, SerializeOptions, DeserializeOptions> {
|
|
176
|
+
serialize<T>(object: T, options?: SerializeOptions): string;
|
|
177
|
+
deserialize<T>(payload: string, options?: DeserializeOptions): T;
|
|
172
178
|
}
|
|
173
|
-
|
|
174
179
|
type JSONSerializerOptions = {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
180
|
+
parseDates?: boolean;
|
|
181
|
+
parseBigInts?: boolean;
|
|
182
|
+
failOnBigIntSerialization?: boolean;
|
|
183
|
+
useDefaultDateSerialization?: boolean;
|
|
179
184
|
};
|
|
180
185
|
type JSONSerializeOptions = {
|
|
181
|
-
|
|
186
|
+
replacer?: JSONReplacer;
|
|
182
187
|
} & JSONSerializerOptions;
|
|
183
188
|
type JSONDeserializeOptions = {
|
|
184
|
-
|
|
189
|
+
reviver?: JSONReviver;
|
|
185
190
|
} & JSONSerializerOptions;
|
|
191
|
+
interface JSONCodec<T, SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions> extends SerializationCodec<T, string, SerializeOptions, DeserializeOptions> {
|
|
192
|
+
encode(object: T, options?: SerializeOptions): string;
|
|
193
|
+
decode(payload: string, options?: DeserializeOptions): T;
|
|
194
|
+
}
|
|
186
195
|
type JSONCodecSerializationOptions<SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions> = {
|
|
187
|
-
|
|
188
|
-
|
|
196
|
+
serializer?: JSONSerializer<SerializeOptions, DeserializeOptions>;
|
|
197
|
+
serializerOptions?: never;
|
|
189
198
|
} | {
|
|
190
|
-
|
|
191
|
-
|
|
199
|
+
serializer?: never;
|
|
200
|
+
serializerOptions?: JSONSerializerOptions;
|
|
192
201
|
};
|
|
193
202
|
type JSONSerializationOptions<SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions> = {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
203
|
+
serialization?: {
|
|
204
|
+
serializer?: JSONSerializer<SerializeOptions, DeserializeOptions>;
|
|
205
|
+
options?: JSONSerializeOptions | JSONDeserializeOptions;
|
|
206
|
+
} | undefined;
|
|
198
207
|
};
|
|
199
208
|
type JSONCodecOptions<T, Payload = T, SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions> = JSONCodecSerializationOptions<SerializeOptions, DeserializeOptions> & {
|
|
200
|
-
|
|
201
|
-
|
|
209
|
+
upcast?: (document: Payload) => T;
|
|
210
|
+
downcast?: (document: T) => Payload;
|
|
202
211
|
};
|
|
212
|
+
type JSONReplacer = (this: any, key: string, value: any) => any;
|
|
213
|
+
type JSONReviver = (this: any, key: string, value: any, context: JSONReviverContext) => any;
|
|
203
214
|
type JSONReviverContext = {
|
|
204
|
-
|
|
215
|
+
source: string;
|
|
205
216
|
};
|
|
206
217
|
declare const composeJSONReplacers: (...replacers: (JSONReplacer | undefined)[]) => JSONReplacer | undefined;
|
|
207
218
|
declare const composeJSONRevivers: (...revivers: (JSONReviver | undefined)[]) => JSONReviver | undefined;
|
|
208
|
-
type JSONReplacer = (this: any, key: string, value: any) => any;
|
|
209
219
|
declare const JSONReplacer: (opts?: JSONSerializeOptions) => JSONReplacer | undefined;
|
|
210
|
-
type JSONReviver = (this: any, key: string, value: any, context: JSONReviverContext) => any;
|
|
211
220
|
declare const JSONReviver: (opts?: JSONDeserializeOptions) => JSONReviver | undefined;
|
|
212
221
|
declare const JSONReplacers: {
|
|
213
|
-
|
|
214
|
-
|
|
222
|
+
bigInt: JSONReplacer;
|
|
223
|
+
date: JSONReplacer;
|
|
215
224
|
};
|
|
216
225
|
declare const JSONRevivers: {
|
|
217
|
-
|
|
218
|
-
|
|
226
|
+
bigInt: JSONReviver;
|
|
227
|
+
date: JSONReviver;
|
|
219
228
|
};
|
|
220
229
|
declare const jsonSerializer: (options?: JSONSerializerOptions & JSONDeserializeOptions & JSONSerializeOptions) => JSONSerializer;
|
|
221
|
-
interface JSONSerializer<SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions> extends Serializer<string, SerializeOptions, DeserializeOptions> {
|
|
222
|
-
serialize<T>(object: T, options?: SerializeOptions): string;
|
|
223
|
-
deserialize<T>(payload: string, options?: DeserializeOptions): T;
|
|
224
|
-
}
|
|
225
230
|
declare const JSONSerializer: JSONSerializer & {
|
|
226
|
-
|
|
231
|
+
from: <SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions>(options?: JSONSerializationOptions<SerializeOptions, DeserializeOptions>) => JSONSerializer<SerializeOptions, DeserializeOptions>;
|
|
227
232
|
};
|
|
228
|
-
interface JSONCodec<T, SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions> extends SerializationCodec<T, string, SerializeOptions, DeserializeOptions> {
|
|
229
|
-
encode(object: T, options?: SerializeOptions): string;
|
|
230
|
-
decode(payload: string, options?: DeserializeOptions): T;
|
|
231
|
-
}
|
|
232
233
|
declare const JSONCodec: <T, Payload = T, SerializeOptions extends JSONSerializeOptions = JSONSerializeOptions, DeserializeOptions extends JSONDeserializeOptions = JSONDeserializeOptions>(options: JSONCodecOptions<T, Payload, SerializeOptions, DeserializeOptions>) => JSONCodec<T, SerializeOptions, DeserializeOptions>;
|
|
233
|
-
|
|
234
|
+
//#endregion
|
|
235
|
+
//#region src/projections/index.d.ts
|
|
234
236
|
type ProjectionHandlingType = 'inline' | 'async';
|
|
235
237
|
type ProjectionHandler<EventType extends Event = AnyEvent, EventMetaDataType extends AnyReadEventMetadata = AnyReadEventMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord> = BatchRecordedMessageHandlerWithContext<EventType, EventMetaDataType, ProjectionHandlerContext>;
|
|
236
238
|
type TruncateProjection<ProjectionHandlerContext extends DefaultRecord = DefaultRecord> = (context: ProjectionHandlerContext) => Promise<void>;
|
|
237
239
|
type ProjectionInitOptions<ProjectionHandlerContext extends DefaultRecord = DefaultRecord> = {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
240
|
+
version: number;
|
|
241
|
+
status?: 'active' | 'inactive';
|
|
242
|
+
registrationType: ProjectionHandlingType;
|
|
243
|
+
context: ProjectionHandlerContext;
|
|
242
244
|
};
|
|
243
245
|
type ProjectionDefinition<EventType extends Event = AnyEvent, EventMetaDataType extends AnyReadEventMetadata = AnyReadEventMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord, EventPayloadType extends Event = EventType> = {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
246
|
+
name?: string;
|
|
247
|
+
version?: number;
|
|
248
|
+
kind?: string;
|
|
249
|
+
canHandle: CanHandle<EventType>;
|
|
250
|
+
handle: ProjectionHandler<EventType, EventMetaDataType, ProjectionHandlerContext>;
|
|
251
|
+
truncate?: TruncateProjection<ProjectionHandlerContext>;
|
|
252
|
+
init?: (options: ProjectionInitOptions<ProjectionHandlerContext>) => void | Promise<void>;
|
|
253
|
+
eventsOptions?: {
|
|
254
|
+
schema?: EventStoreReadSchemaOptions<EventType, EventPayloadType>;
|
|
255
|
+
};
|
|
254
256
|
} & JSONSerializationOptions;
|
|
255
257
|
type ProjectionRegistration<HandlingType extends ProjectionHandlingType, ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord> = {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
+
type: HandlingType;
|
|
259
|
+
projection: ProjectionDefinition<AnyEvent, ReadEventMetadataType, ProjectionHandlerContext, AnyEvent>;
|
|
258
260
|
};
|
|
259
261
|
declare const filterProjections: <ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord>(type: ProjectionHandlingType, projections: ProjectionRegistration<ProjectionHandlingType, ReadEventMetadataType, ProjectionHandlerContext>[]) => ProjectionDefinition<AnyEvent, ReadEventMetadataType, ProjectionHandlerContext, AnyEvent>[];
|
|
260
262
|
declare const projection: <EventType extends Event = Event, EventMetaDataType extends AnyReadEventMetadata = AnyReadEventMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord, EventPayloadType extends Event = EventType>(definition: ProjectionDefinition<EventType, EventMetaDataType, ProjectionHandlerContext, EventPayloadType>) => ProjectionDefinition<EventType, EventMetaDataType, ProjectionHandlerContext, EventPayloadType>;
|
|
261
263
|
declare const inlineProjections: <ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord>(definitions: ProjectionDefinition<any, ReadEventMetadataType, ProjectionHandlerContext>[]) => ProjectionRegistration<"inline", ReadEventMetadataType, ProjectionHandlerContext>[];
|
|
262
264
|
declare const asyncProjections: <ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord>(definitions: ProjectionDefinition<AnyEvent, ReadEventMetadataType, ProjectionHandlerContext>[]) => ProjectionRegistration<"inline", ReadEventMetadataType, ProjectionHandlerContext>[];
|
|
263
265
|
declare const projections: {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
+
inline: <ReadEventMetadataType extends AnyReadEventMetadata = AnyRecordedMessageMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord>(definitions: ProjectionDefinition<any, ReadEventMetadataType, ProjectionHandlerContext>[]) => ProjectionRegistration<"inline", ReadEventMetadataType, ProjectionHandlerContext>[];
|
|
267
|
+
async: <ReadEventMetadataType extends AnyReadEventMetadata = AnyRecordedMessageMetadata, ProjectionHandlerContext extends DefaultRecord = DefaultRecord>(definitions: ProjectionDefinition<AnyEvent, ReadEventMetadataType, ProjectionHandlerContext>[]) => ProjectionRegistration<"inline", ReadEventMetadataType, ProjectionHandlerContext>[];
|
|
266
268
|
};
|
|
267
|
-
|
|
269
|
+
//#endregion
|
|
270
|
+
//#region src/processors/processors.d.ts
|
|
268
271
|
type CurrentMessageProcessorPosition = {
|
|
269
|
-
|
|
272
|
+
lastCheckpoint: ProcessorCheckpoint;
|
|
270
273
|
} | 'BEGINNING' | 'END';
|
|
271
274
|
type GetCheckpoint<MessageType extends AnyMessage = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata> = (message: RecordedMessage<MessageType, MessageMetadataType>) => ProcessorCheckpoint | null;
|
|
272
275
|
declare const getCheckpoint: <MessageType extends AnyMessage = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata>(message: RecordedMessage<MessageType, MessageMetadataType>) => ProcessorCheckpoint | null;
|
|
@@ -274,194 +277,197 @@ declare const wasMessageHandled: <MessageType extends AnyMessage = AnyMessage, M
|
|
|
274
277
|
type MessageProcessorStartFrom = CurrentMessageProcessorPosition | 'CURRENT';
|
|
275
278
|
type MessageProcessorType = 'projector' | 'reactor';
|
|
276
279
|
declare const MessageProcessorType: {
|
|
277
|
-
|
|
278
|
-
|
|
280
|
+
PROJECTOR: MessageProcessorType;
|
|
281
|
+
REACTOR: MessageProcessorType;
|
|
279
282
|
};
|
|
280
283
|
type MessageProcessor<MessageType extends AnyMessage = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord | undefined = undefined> = {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
284
|
+
id: string;
|
|
285
|
+
instanceId: string;
|
|
286
|
+
type: string;
|
|
287
|
+
canHandle?: string[];
|
|
288
|
+
init: (options: Partial<HandlerContext>) => Promise<void>;
|
|
289
|
+
start: (options: Partial<HandlerContext>) => Promise<CurrentMessageProcessorPosition | undefined>;
|
|
290
|
+
close: (closeOptions: Partial<HandlerContext>) => Promise<void>;
|
|
291
|
+
isActive: boolean;
|
|
292
|
+
handle: BatchRecordedMessageHandlerWithContext<MessageType, MessageMetadataType, Partial<HandlerContext>>;
|
|
290
293
|
};
|
|
291
294
|
declare const MessageProcessor: {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
result: {
|
|
296
|
+
skip: (options?: {
|
|
297
|
+
reason?: string;
|
|
298
|
+
}) => SingleMessageHandlerResult;
|
|
299
|
+
stop: (options?: {
|
|
300
|
+
reason?: string;
|
|
301
|
+
error?: EmmettError;
|
|
302
|
+
}) => SingleMessageHandlerResult;
|
|
303
|
+
};
|
|
301
304
|
};
|
|
302
|
-
type MessageProcessingScope<HandlerContext extends DefaultRecord | undefined = undefined> = <Result =
|
|
305
|
+
type MessageProcessingScope<HandlerContext extends DefaultRecord | undefined = undefined> = <Result = SingleMessageHandlerResult>(handler: (context: HandlerContext) => Result | Promise<Result>, partialContext: Partial<HandlerContext>) => Result | Promise<Result>;
|
|
303
306
|
type Checkpointer<MessageType extends AnyMessage = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord = DefaultRecord> = {
|
|
304
|
-
|
|
305
|
-
|
|
307
|
+
read: ReadProcessorCheckpoint<HandlerContext>;
|
|
308
|
+
store: StoreProcessorCheckpoint<MessageType, MessageMetadataType, HandlerContext>;
|
|
306
309
|
};
|
|
307
310
|
type ProcessorHooks<HandlerContext extends DefaultRecord = DefaultRecord> = {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
+
onInit?: OnReactorInitHook<HandlerContext>;
|
|
312
|
+
onStart?: OnReactorStartHook<HandlerContext>;
|
|
313
|
+
onClose?: OnReactorCloseHook<HandlerContext>;
|
|
311
314
|
};
|
|
312
315
|
type BaseMessageProcessorOptions<MessageType extends AnyMessage = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord = DefaultRecord> = {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
316
|
+
type?: string;
|
|
317
|
+
processorId: string;
|
|
318
|
+
processorInstanceId?: string;
|
|
319
|
+
version?: number;
|
|
320
|
+
partition?: string;
|
|
321
|
+
startFrom?: MessageProcessorStartFrom;
|
|
322
|
+
stopAfter?: (message: RecordedMessage<MessageType, MessageMetadataType>) => boolean;
|
|
323
|
+
processingScope?: MessageProcessingScope<HandlerContext>;
|
|
324
|
+
checkpoints?: Checkpointer<MessageType, MessageMetadataType, HandlerContext>;
|
|
325
|
+
canHandle?: CanHandle<MessageType>;
|
|
326
|
+
hooks?: ProcessorHooks<HandlerContext>;
|
|
324
327
|
} & JSONSerializationOptions;
|
|
325
328
|
type HandlerOptions<MessageType extends AnyMessage = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord = DefaultRecord> = {
|
|
326
|
-
|
|
327
|
-
|
|
329
|
+
eachMessage: SingleRecordedMessageHandlerWithContext<MessageType, MessageMetadataType, HandlerContext>;
|
|
330
|
+
eachBatch?: never;
|
|
328
331
|
} | {
|
|
329
|
-
|
|
330
|
-
|
|
332
|
+
eachMessage?: never;
|
|
333
|
+
eachBatch: BatchRecordedMessageHandlerWithContext<MessageType, MessageMetadataType, HandlerContext>;
|
|
331
334
|
};
|
|
332
335
|
type OnReactorInitHook<HandlerContext extends DefaultRecord = DefaultRecord> = (context: HandlerContext) => Promise<void>;
|
|
333
336
|
type OnReactorStartHook<HandlerContext extends DefaultRecord = DefaultRecord> = (context: HandlerContext) => Promise<void>;
|
|
334
337
|
type OnReactorCloseHook<HandlerContext extends DefaultRecord = DefaultRecord> = (context: HandlerContext) => Promise<void>;
|
|
335
338
|
type ReactorOptions<MessageType extends AnyMessage = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord = DefaultRecord, MessagePayloadType extends AnyMessage = MessageType> = BaseMessageProcessorOptions<MessageType, MessageMetadataType, HandlerContext> & HandlerOptions<MessageType, MessageMetadataType, HandlerContext> & {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
};
|
|
339
|
+
messageOptions?: {
|
|
340
|
+
schema?: {
|
|
341
|
+
versioning?: {
|
|
342
|
+
upcast?: (event: MessagePayloadType) => MessageType;
|
|
343
|
+
};
|
|
342
344
|
};
|
|
345
|
+
};
|
|
343
346
|
};
|
|
344
347
|
type ProjectorOptions<EventType extends AnyEvent = AnyEvent, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord = DefaultRecord, EventPayloadType extends Event = EventType> = Omit<BaseMessageProcessorOptions<EventType, MessageMetadataType, HandlerContext>, 'type' | 'processorId'> & {
|
|
345
|
-
|
|
348
|
+
processorId?: string;
|
|
346
349
|
} & {
|
|
347
|
-
|
|
348
|
-
|
|
350
|
+
truncateOnStart?: boolean;
|
|
351
|
+
projection: ProjectionDefinition<EventType, MessageMetadataType, HandlerContext, EventPayloadType>;
|
|
349
352
|
};
|
|
350
|
-
declare const defaultProcessingMessageProcessingScope: <HandlerContext = never, Result =
|
|
353
|
+
declare const defaultProcessingMessageProcessingScope: <HandlerContext = never, Result = SingleMessageHandlerResult>(handler: (context: HandlerContext) => Result | Promise<Result>, partialContext: Partial<HandlerContext>) => Result | Promise<Result>;
|
|
351
354
|
type ProcessorCheckpoint = Brand<string, 'ProcessorCheckpoint'>;
|
|
352
355
|
declare const bigIntProcessorCheckpoint: (value: bigint) => ProcessorCheckpoint;
|
|
353
356
|
declare const parseBigIntProcessorCheckpoint: (value: ProcessorCheckpoint) => bigint;
|
|
354
357
|
type ReadProcessorCheckpointResult = {
|
|
355
|
-
|
|
358
|
+
lastCheckpoint: ProcessorCheckpoint | null;
|
|
356
359
|
};
|
|
357
360
|
type ReadProcessorCheckpoint<HandlerContext extends DefaultRecord = DefaultRecord> = (options: {
|
|
358
|
-
|
|
359
|
-
|
|
361
|
+
processorId: string;
|
|
362
|
+
partition?: string;
|
|
360
363
|
}, context: HandlerContext) => Promise<ReadProcessorCheckpointResult>;
|
|
361
364
|
type StoreProcessorCheckpointResult = {
|
|
362
|
-
|
|
363
|
-
|
|
365
|
+
success: true;
|
|
366
|
+
newCheckpoint: ProcessorCheckpoint | null;
|
|
364
367
|
} | {
|
|
365
|
-
|
|
366
|
-
|
|
368
|
+
success: false;
|
|
369
|
+
reason: 'IGNORED' | 'MISMATCH' | 'CURRENT_AHEAD';
|
|
367
370
|
};
|
|
368
371
|
type StoreProcessorCheckpoint<MessageType extends Message = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord | undefined = undefined> = (options: {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
372
|
+
message: RecordedMessage<MessageType, MessageMetadataType>;
|
|
373
|
+
processorId: string;
|
|
374
|
+
version: number | undefined;
|
|
375
|
+
lastCheckpoint: ProcessorCheckpoint | null;
|
|
376
|
+
partition?: string;
|
|
374
377
|
}, context: HandlerContext) => Promise<StoreProcessorCheckpointResult>;
|
|
375
378
|
declare const defaultProcessorVersion = 1;
|
|
376
379
|
declare const defaultProcessorPartition = "emt:default";
|
|
377
380
|
declare const getProcessorInstanceId: (processorId: string) => string;
|
|
378
381
|
declare const getProjectorId: (options: {
|
|
379
|
-
|
|
382
|
+
projectionName: string;
|
|
380
383
|
}) => string;
|
|
381
384
|
declare const reactor: <MessageType extends Message = AnyMessage, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends DefaultRecord = DefaultRecord, MessagePayloadType extends Message = MessageType>(options: ReactorOptions<MessageType, MessageMetadataType, HandlerContext, MessagePayloadType>) => MessageProcessor<MessageType, MessageMetadataType, HandlerContext>;
|
|
382
385
|
declare const projector: <EventType extends Event = Event, EventMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord = DefaultRecord, EventPayloadType extends Event = EventType>(options: ProjectorOptions<EventType, EventMetaDataType, HandlerContext, EventPayloadType>) => MessageProcessor<EventType, EventMetaDataType, HandlerContext>;
|
|
383
|
-
|
|
386
|
+
//#endregion
|
|
387
|
+
//#region src/processors/inMemoryProcessors.d.ts
|
|
384
388
|
type InMemoryProcessorHandlerContext = {
|
|
385
|
-
|
|
389
|
+
database: InMemoryDatabase;
|
|
386
390
|
};
|
|
387
391
|
type InMemoryProcessor<MessageType extends AnyMessage = AnyMessage> = MessageProcessor<MessageType, ReadEventMetadataWithGlobalPosition, InMemoryProcessorHandlerContext> & {
|
|
388
|
-
|
|
392
|
+
database: InMemoryDatabase;
|
|
389
393
|
};
|
|
390
394
|
type InMemoryProcessorEachMessageHandler<MessageType extends AnyMessage = AnyMessage> = SingleRecordedMessageHandlerWithContext<MessageType, ReadEventMetadataWithGlobalPosition, InMemoryProcessorHandlerContext>;
|
|
391
395
|
type InMemoryProcessorEachBatchHandler<MessageType extends AnyMessage = AnyMessage> = BatchRecordedMessageHandlerWithContext<MessageType, ReadEventMetadataWithGlobalPosition, InMemoryProcessorHandlerContext>;
|
|
392
396
|
type InMemoryProcessorConnectionOptions = {
|
|
393
|
-
|
|
397
|
+
database?: InMemoryDatabase;
|
|
394
398
|
};
|
|
395
399
|
type InMemoryCheckpointer<MessageType extends AnyMessage = AnyMessage> = Checkpointer<MessageType, ReadEventMetadataWithGlobalPosition, InMemoryProcessorHandlerContext>;
|
|
396
400
|
declare const inMemoryCheckpointer: <MessageType extends AnyMessage = AnyMessage>() => InMemoryCheckpointer<MessageType>;
|
|
397
401
|
type InMemoryConnectionOptions = {
|
|
398
|
-
|
|
402
|
+
connectionOptions?: InMemoryProcessorConnectionOptions;
|
|
399
403
|
};
|
|
400
404
|
type InMemoryReactorOptions<MessageType extends AnyMessage = AnyMessage> = ReactorOptions<MessageType, ReadEventMetadataWithGlobalPosition, InMemoryProcessorHandlerContext> & InMemoryConnectionOptions;
|
|
401
405
|
type InMemoryProjectorOptions<EventType extends AnyEvent = AnyEvent> = ProjectorOptions<EventType, ReadEventMetadataWithGlobalPosition, InMemoryProcessorHandlerContext> & InMemoryConnectionOptions;
|
|
402
406
|
type InMemoryProcessorOptions<MessageType extends AnyMessage = AnyMessage> = InMemoryReactorOptions<MessageType> | InMemoryProjectorOptions<MessageType & AnyEvent>;
|
|
403
407
|
declare const inMemoryProjector: <EventType extends AnyEvent = AnyEvent>(options: InMemoryProjectorOptions<EventType>) => InMemoryProcessor<EventType>;
|
|
404
408
|
declare const inMemoryReactor: <MessageType extends AnyMessage = AnyMessage>(options: InMemoryReactorOptions<MessageType>) => InMemoryProcessor<MessageType>;
|
|
405
|
-
|
|
409
|
+
//#endregion
|
|
410
|
+
//#region src/typing/message.d.ts
|
|
406
411
|
type Message<Type extends string = string, Data extends DefaultRecord = DefaultRecord, MetaData extends DefaultRecord | undefined = undefined> = Command<Type, Data, MetaData> | Event<Type, Data, MetaData>;
|
|
407
412
|
type AnyMessage = AnyEvent | AnyCommand;
|
|
408
413
|
type MessageKindOf<T extends Message> = T['kind'];
|
|
409
414
|
type MessageTypeOf<T extends Message> = T['type'];
|
|
410
415
|
type MessageDataOf<T extends Message> = T['data'];
|
|
411
416
|
type MessageMetaDataOf<T extends Message> = T extends {
|
|
412
|
-
|
|
417
|
+
metadata: infer M;
|
|
413
418
|
} ? M : undefined;
|
|
414
419
|
type CanHandle<T extends Message> = MessageTypeOf<T>[];
|
|
415
420
|
declare const message: <MessageType extends Message<string, any, any>>(...args: MessageMetaDataOf<MessageType> extends undefined ? [kind: MessageKindOf<MessageType>, type: MessageTypeOf<MessageType>, data: MessageDataOf<MessageType>] : [kind: MessageKindOf<MessageType>, type: MessageTypeOf<MessageType>, data: MessageDataOf<MessageType>, metadata: MessageMetaDataOf<MessageType>]) => MessageType;
|
|
416
421
|
type CombinedMessageMetadata<MessageType extends Message = Message, MessageMetaDataType extends DefaultRecord = DefaultRecord> = MessageMetaDataOf<MessageType> extends undefined ? MessageMetaDataType : MessageMetaDataOf<MessageType> & MessageMetaDataType;
|
|
417
422
|
type CombineMetadata<MessageType extends Message = Message, MessageMetaDataType extends DefaultRecord = DefaultRecord> = MessageType & {
|
|
418
|
-
|
|
423
|
+
metadata: CombinedMessageMetadata<MessageType, MessageMetaDataType>;
|
|
419
424
|
};
|
|
420
425
|
type RecordedMessage<MessageType extends Message = Message, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = CombineMetadata<MessageType, MessageMetaDataType> & {
|
|
421
|
-
|
|
426
|
+
kind: NonNullable<MessageKindOf<Message>>;
|
|
422
427
|
};
|
|
423
428
|
type CommonRecordedMessageMetadata = Readonly<{
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
429
|
+
messageId: string;
|
|
430
|
+
streamPosition: StreamPosition;
|
|
431
|
+
streamName: string;
|
|
432
|
+
checkpoint?: ProcessorCheckpoint | null;
|
|
428
433
|
}>;
|
|
429
434
|
type WithGlobalPosition = Readonly<{
|
|
430
|
-
|
|
435
|
+
globalPosition: GlobalPosition;
|
|
431
436
|
}>;
|
|
432
437
|
type RecordedMessageMetadata<HasGlobalPosition = undefined> = CommonRecordedMessageMetadata & (HasGlobalPosition extends undefined ? {} : WithGlobalPosition);
|
|
433
438
|
type AnyRecordedMessage = Message<any, any, any>;
|
|
434
439
|
type AnyRecordedMessageMetadata = RecordedMessageMetadata<any>;
|
|
435
440
|
type RecordedMessageMetadataWithGlobalPosition = RecordedMessageMetadata<true>;
|
|
436
441
|
type RecordedMessageMetadataWithoutGlobalPosition = RecordedMessageMetadata<undefined>;
|
|
437
|
-
|
|
442
|
+
//#endregion
|
|
443
|
+
//#region src/typing/event.d.ts
|
|
438
444
|
type StreamPosition = bigint;
|
|
439
445
|
type GlobalPosition = bigint;
|
|
440
446
|
type Event<EventType extends string = string, EventData extends DefaultRecord = DefaultRecord, EventMetaData extends DefaultRecord | undefined = undefined> = Readonly<EventMetaData extends undefined ? {
|
|
441
|
-
|
|
442
|
-
|
|
447
|
+
type: EventType;
|
|
448
|
+
data: EventData;
|
|
443
449
|
} : {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
450
|
+
type: EventType;
|
|
451
|
+
data: EventData;
|
|
452
|
+
metadata: EventMetaData;
|
|
447
453
|
}> & {
|
|
448
|
-
|
|
454
|
+
readonly kind?: 'Event';
|
|
449
455
|
};
|
|
450
456
|
type AnyEvent = Event<any, any, any>;
|
|
451
457
|
type EventTypeOf<T extends Event> = T['type'];
|
|
452
458
|
type EventDataOf<T extends Event> = T['data'];
|
|
453
459
|
type EventMetaDataOf<T extends Event> = T extends {
|
|
454
|
-
|
|
460
|
+
metadata: infer M;
|
|
455
461
|
} ? M : undefined;
|
|
456
462
|
type CreateEventType<EventType extends string, EventData extends DefaultRecord, EventMetaData extends DefaultRecord | undefined = undefined> = Readonly<EventMetaData extends undefined ? {
|
|
457
|
-
|
|
458
|
-
|
|
463
|
+
type: EventType;
|
|
464
|
+
data: EventData;
|
|
459
465
|
} : {
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
466
|
+
type: EventType;
|
|
467
|
+
data: EventData;
|
|
468
|
+
metadata: EventMetaData;
|
|
463
469
|
}> & {
|
|
464
|
-
|
|
470
|
+
readonly kind?: 'Event';
|
|
465
471
|
};
|
|
466
472
|
declare const event: <EventType extends Event<string, any, any>>(...args: EventMetaDataOf<EventType> extends undefined ? [type: EventTypeOf<EventType>, data: EventDataOf<EventType>] : [type: EventTypeOf<EventType>, data: EventDataOf<EventType>, metadata: EventMetaDataOf<EventType>]) => EventType;
|
|
467
473
|
type CombinedReadEventMetadata<EventType extends Event = Event, EventMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = CombinedMessageMetadata<EventType, EventMetaDataType>;
|
|
@@ -472,42 +478,59 @@ type ReadEventMetadata<HasGlobalPosition = undefined> = RecordedMessageMetadata<
|
|
|
472
478
|
type AnyReadEventMetadata = AnyRecordedMessageMetadata;
|
|
473
479
|
type ReadEventMetadataWithGlobalPosition = RecordedMessageMetadataWithGlobalPosition;
|
|
474
480
|
type ReadEventMetadataWithoutGlobalPosition = RecordedMessageMetadataWithoutGlobalPosition;
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
type
|
|
481
|
+
//#endregion
|
|
482
|
+
//#region src/typing/messageHandling.d.ts
|
|
483
|
+
type SingleRawMessageHandlerWithoutContext<MessageType extends Message = AnyMessage> = (message: MessageType) => Promise<SingleMessageHandlerResult> | SingleMessageHandlerResult;
|
|
484
|
+
type SingleRecordedMessageHandlerWithoutContext<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = (message: RecordedMessage<MessageType, MessageMetaDataType>) => Promise<SingleMessageHandlerResult> | SingleMessageHandlerResult;
|
|
478
485
|
type SingleMessageHandlerWithoutContext<MessageType extends AnyMessage = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = never> = SingleRawMessageHandlerWithoutContext<MessageType> | SingleRecordedMessageHandlerWithoutContext<MessageType, MessageMetaDataType>;
|
|
479
|
-
type SingleRawMessageHandlerWithContext<MessageType extends Message = AnyMessage, HandlerContext extends DefaultRecord | undefined = undefined> = (message: MessageType, context: HandlerContext) => Promise<
|
|
480
|
-
type SingleRecordedMessageHandlerWithContext<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord | undefined = undefined> = (message: RecordedMessage<MessageType, MessageMetaDataType>, context: HandlerContext) => Promise<
|
|
486
|
+
type SingleRawMessageHandlerWithContext<MessageType extends Message = AnyMessage, HandlerContext extends DefaultRecord | undefined = undefined> = (message: MessageType, context: HandlerContext) => Promise<SingleMessageHandlerResult> | SingleMessageHandlerResult;
|
|
487
|
+
type SingleRecordedMessageHandlerWithContext<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord | undefined = undefined> = (message: RecordedMessage<MessageType, MessageMetaDataType>, context: HandlerContext) => Promise<SingleMessageHandlerResult> | SingleMessageHandlerResult;
|
|
481
488
|
type SingleMessageHandlerWithContext<MessageType extends AnyMessage = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = never, HandlerContext extends DefaultRecord = DefaultRecord> = SingleRawMessageHandlerWithContext<MessageType, HandlerContext> | SingleRecordedMessageHandlerWithContext<MessageType, MessageMetaDataType, HandlerContext>;
|
|
482
489
|
type SingleMessageHandler<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord | undefined = undefined> = HandlerContext extends DefaultRecord ? SingleMessageHandlerWithContext<MessageType, MessageMetaDataType, HandlerContext> : SingleMessageHandlerWithoutContext<MessageType, MessageMetaDataType>;
|
|
483
|
-
type BatchRawMessageHandlerWithoutContext<MessageType extends Message = AnyMessage> = (messages: MessageType[]) => Promise<
|
|
484
|
-
type BatchRecordedMessageHandlerWithoutContext<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = (messages: RecordedMessage<MessageType, MessageMetaDataType>[]) => Promise<
|
|
490
|
+
type BatchRawMessageHandlerWithoutContext<MessageType extends Message = AnyMessage> = (messages: MessageType[]) => Promise<BatchMessageHandlerResult> | BatchMessageHandlerResult;
|
|
491
|
+
type BatchRecordedMessageHandlerWithoutContext<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = (messages: RecordedMessage<MessageType, MessageMetaDataType>[]) => Promise<BatchMessageHandlerResult> | BatchMessageHandlerResult;
|
|
485
492
|
type BatchMessageHandlerWithoutContext<MessageType extends AnyMessage = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = BatchRawMessageHandlerWithoutContext<MessageType> | BatchRecordedMessageHandlerWithoutContext<MessageType, MessageMetaDataType>;
|
|
486
|
-
type BatchRawMessageHandlerWithContext<MessageType extends Message = AnyMessage, HandlerContext extends DefaultRecord | undefined = undefined> = (messages: MessageType[], context: HandlerContext) => Promise<
|
|
487
|
-
type BatchRecordedMessageHandlerWithContext<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord = DefaultRecord> = (messages: RecordedMessage<MessageType, MessageMetaDataType>[], context: HandlerContext) => Promise<
|
|
493
|
+
type BatchRawMessageHandlerWithContext<MessageType extends Message = AnyMessage, HandlerContext extends DefaultRecord | undefined = undefined> = (messages: MessageType[], context: HandlerContext) => Promise<BatchMessageHandlerResult> | BatchMessageHandlerResult;
|
|
494
|
+
type BatchRecordedMessageHandlerWithContext<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord = DefaultRecord> = (messages: RecordedMessage<MessageType, MessageMetaDataType>[], context: HandlerContext) => Promise<BatchMessageHandlerResult> | BatchMessageHandlerResult;
|
|
488
495
|
type BatchMessageHandlerWithContext<MessageType extends AnyMessage = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord = DefaultRecord> = BatchRawMessageHandlerWithContext<MessageType, HandlerContext> | BatchRecordedMessageHandlerWithContext<MessageType, MessageMetaDataType, HandlerContext>;
|
|
489
496
|
type BatchMessageHandler<MessageType extends Message = AnyMessage, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord | undefined = undefined> = HandlerContext extends DefaultRecord ? BatchMessageHandlerWithContext<MessageType, MessageMetaDataType, HandlerContext> : BatchMessageHandlerWithoutContext<MessageType, MessageMetaDataType>;
|
|
490
497
|
type MessageHandler<MessageType extends Message = Message, MessageMetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends DefaultRecord | undefined = undefined> = (HandlerContext extends DefaultRecord ? SingleMessageHandler<MessageType, MessageMetaDataType, HandlerContext> : SingleMessageHandler<MessageType, MessageMetaDataType>) | (HandlerContext extends DefaultRecord ? BatchMessageHandler<MessageType, MessageMetaDataType, HandlerContext> : BatchMessageHandler<MessageType, MessageMetaDataType>);
|
|
491
|
-
type
|
|
492
|
-
|
|
493
|
-
reason?: string;
|
|
498
|
+
type SingleMessageHandlerResult = void | {
|
|
499
|
+
type: 'ACK';
|
|
494
500
|
} | {
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
501
|
+
type: 'SKIP';
|
|
502
|
+
reason?: string;
|
|
503
|
+
} | {
|
|
504
|
+
type: 'STOP';
|
|
505
|
+
reason?: string;
|
|
506
|
+
error?: EmmettError;
|
|
498
507
|
};
|
|
499
|
-
|
|
508
|
+
type BatchMessageHandlerResult = void | {
|
|
509
|
+
type: 'ACK';
|
|
510
|
+
} | {
|
|
511
|
+
type: 'SKIP';
|
|
512
|
+
reason?: string;
|
|
513
|
+
lastSuccessfulMessage: AnyRecordedMessage;
|
|
514
|
+
} | {
|
|
515
|
+
type: 'STOP';
|
|
516
|
+
reason?: string;
|
|
517
|
+
error?: EmmettError;
|
|
518
|
+
lastSuccessfulMessage?: AnyRecordedMessage;
|
|
519
|
+
};
|
|
520
|
+
//#endregion
|
|
521
|
+
//#region src/typing/decider.d.ts
|
|
500
522
|
type Decider<State, CommandType extends Command, StreamEvent extends Event> = {
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
523
|
+
decide: (command: CommandType, state: State) => StreamEvent | StreamEvent[];
|
|
524
|
+
evolve: (currentState: State, event: StreamEvent) => State;
|
|
525
|
+
initialState: () => State;
|
|
504
526
|
};
|
|
505
|
-
|
|
527
|
+
//#endregion
|
|
528
|
+
//#region src/typing/index.d.ts
|
|
506
529
|
type Brand<K, T> = K & {
|
|
507
|
-
|
|
530
|
+
readonly __brand: T;
|
|
508
531
|
};
|
|
509
532
|
type Flavour<K, T> = K & {
|
|
510
|
-
|
|
533
|
+
readonly __brand?: T;
|
|
511
534
|
};
|
|
512
535
|
type DefaultRecord = Record<string, unknown>;
|
|
513
536
|
type AnyRecord = Record<string, any>;
|
|
@@ -516,7 +539,8 @@ declare const emmettPrefix = "emt";
|
|
|
516
539
|
declare const globalTag = "global";
|
|
517
540
|
declare const defaultTag = "emt:default";
|
|
518
541
|
declare const unknownTag = "emt:unknown";
|
|
519
|
-
|
|
542
|
+
//#endregion
|
|
543
|
+
//#region src/eventStore/expectedVersion.d.ts
|
|
520
544
|
type ExpectedStreamVersion = ExpectedStreamVersionWithValue | ExpectedStreamVersionGeneral;
|
|
521
545
|
type ExpectedStreamVersionWithValue = Flavour<StreamPosition, 'StreamVersion'>;
|
|
522
546
|
type ExpectedStreamVersionGeneral = Flavour<'STREAM_EXISTS' | 'STREAM_DOES_NOT_EXIST' | 'NO_CONCURRENCY_CHECK', 'StreamVersion'>;
|
|
@@ -526,156 +550,159 @@ declare const NO_CONCURRENCY_CHECK: ExpectedStreamVersionGeneral;
|
|
|
526
550
|
declare const matchesExpectedVersion: (current: StreamPosition | undefined, expected: ExpectedStreamVersion, defaultVersion: StreamPosition) => boolean;
|
|
527
551
|
declare const assertExpectedVersionMatchesCurrent: (current: StreamPosition, expected: ExpectedStreamVersion | undefined, defaultVersion: StreamPosition) => void;
|
|
528
552
|
declare class ExpectedVersionConflictError extends ConcurrencyError {
|
|
529
|
-
|
|
553
|
+
constructor(current: StreamPosition, expected: ExpectedStreamVersion);
|
|
530
554
|
}
|
|
531
555
|
declare const isExpectedVersionConflictError: (error: unknown) => error is ExpectedVersionConflictError;
|
|
532
|
-
|
|
556
|
+
//#endregion
|
|
557
|
+
//#region src/eventStore/eventStore.d.ts
|
|
533
558
|
interface EventStore<ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata> {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
559
|
+
aggregateStream<State, EventType extends Event, EventPayloadType extends Event = EventType>(streamName: string, options: AggregateStreamOptions<State, EventType, ReadEventMetadataType, EventPayloadType>): Promise<AggregateStreamResult<State>>;
|
|
560
|
+
readStream<EventType extends Event, EventPayloadType extends Event = EventType>(streamName: string, options?: ReadStreamOptions<EventType, EventPayloadType>): Promise<ReadStreamResult<EventType, ReadEventMetadataType>>;
|
|
561
|
+
appendToStream<EventType extends Event, EventPayloadType extends Event = EventType>(streamName: string, events: EventType[], options?: AppendToStreamOptions<EventType, EventPayloadType>): Promise<AppendToStreamResult>;
|
|
562
|
+
streamExists(streamName: string): Promise<StreamExistsResult>;
|
|
538
563
|
}
|
|
539
564
|
type EventStoreReadEventMetadata<Store extends EventStore> = Store extends EventStore<infer T> ? T extends CommonReadEventMetadata ? T extends WithGlobalPosition ? ReadEventMetadata<true> & T : ReadEventMetadata<undefined> & T : never : never;
|
|
540
565
|
type EventStoreSession<EventStoreType extends EventStore> = {
|
|
541
|
-
|
|
542
|
-
|
|
566
|
+
eventStore: EventStoreType;
|
|
567
|
+
close: () => Promise<void>;
|
|
543
568
|
};
|
|
544
569
|
interface EventStoreSessionFactory<EventStoreType extends EventStore> {
|
|
545
|
-
|
|
570
|
+
withSession<T = unknown>(callback: (session: EventStoreSession<EventStoreType>) => Promise<T>): Promise<T>;
|
|
546
571
|
}
|
|
547
572
|
declare const canCreateEventStoreSession: <Store extends EventStore>(eventStore: Store | EventStoreSessionFactory<Store>) => eventStore is EventStoreSessionFactory<Store>;
|
|
548
573
|
declare const nulloSessionFactory: <EventStoreType extends EventStore>(eventStore: EventStoreType) => EventStoreSessionFactory<EventStoreType>;
|
|
549
574
|
type EventStoreReadSchemaOptions<StreamEvent extends Event = Event, StoredEvent extends Event = StreamEvent> = {
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
575
|
+
versioning?: {
|
|
576
|
+
upcast?: (event: StoredEvent) => StreamEvent;
|
|
577
|
+
};
|
|
553
578
|
};
|
|
554
579
|
type EventStoreAppendSchemaOptions<StreamEvent extends Event = Event, StoredEvent extends Event = StreamEvent> = {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
580
|
+
versioning?: {
|
|
581
|
+
downcast?: (event: StreamEvent) => StoredEvent;
|
|
582
|
+
};
|
|
558
583
|
};
|
|
559
584
|
type EventStoreSchemaOptions<StreamEvent extends Event = Event, StoredEvent extends Event = StreamEvent> = EventStoreReadSchemaOptions<StreamEvent, StoredEvent> & EventStoreAppendSchemaOptions<StreamEvent, StoredEvent>;
|
|
560
585
|
type ReadStreamOptions<EventType extends Event = Event, EventPayloadType extends Event = EventType> = {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
586
|
+
from?: StreamPosition;
|
|
587
|
+
to?: StreamPosition;
|
|
588
|
+
maxCount?: bigint;
|
|
589
|
+
expectedStreamVersion?: ExpectedStreamVersion;
|
|
590
|
+
schema?: EventStoreReadSchemaOptions<EventType, EventPayloadType>;
|
|
566
591
|
} & JSONSerializationOptions;
|
|
567
592
|
type ReadStreamResult<EventType extends Event, ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata> = {
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
593
|
+
currentStreamVersion: StreamPosition;
|
|
594
|
+
events: ReadEvent<EventType, ReadEventMetadataType>[];
|
|
595
|
+
streamExists: boolean;
|
|
571
596
|
};
|
|
572
597
|
type Evolve<State, EventType extends Event, ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata> = ((currentState: State, event: EventType) => State) | ((currentState: State, event: ReadEvent<EventType, ReadEventMetadataType>) => State) | ((currentState: State, event: ReadEvent<EventType>) => State);
|
|
573
598
|
type AggregateStreamOptions<State, EventType extends Event, ReadEventMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, EventPayloadType extends Event = EventType> = {
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
599
|
+
evolve: Evolve<State, EventType, ReadEventMetadataType>;
|
|
600
|
+
initialState: () => State;
|
|
601
|
+
read?: ReadStreamOptions<EventType, EventPayloadType>;
|
|
577
602
|
};
|
|
578
603
|
type AggregateStreamResult<State> = {
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
604
|
+
currentStreamVersion: StreamPosition;
|
|
605
|
+
state: State;
|
|
606
|
+
streamExists: boolean;
|
|
582
607
|
};
|
|
583
608
|
type AggregateStreamResultWithGlobalPosition<State> = (AggregateStreamResult<State> & {
|
|
584
|
-
|
|
585
|
-
|
|
609
|
+
streamExists: true;
|
|
610
|
+
lastEventGlobalPosition: GlobalPosition;
|
|
586
611
|
}) | (AggregateStreamResult<State> & {
|
|
587
|
-
|
|
612
|
+
streamExists: false;
|
|
588
613
|
});
|
|
589
|
-
type AggregateStreamResultOfEventStore<Store extends EventStore> = Store['aggregateStream'] extends (...args: any[]) => Promise<infer R> ? R : never;
|
|
614
|
+
type AggregateStreamResultOfEventStore<Store extends EventStore> = Store['aggregateStream'] extends ((...args: any[]) => Promise<infer R>) ? R : never;
|
|
590
615
|
type AppendToStreamOptions<EventType extends Event = Event, EventPayloadType extends Event = EventType> = {
|
|
591
|
-
|
|
592
|
-
|
|
616
|
+
expectedStreamVersion?: ExpectedStreamVersion;
|
|
617
|
+
schema?: EventStoreAppendSchemaOptions<EventType, EventPayloadType> & JSONSerializationOptions;
|
|
593
618
|
};
|
|
594
619
|
type AppendToStreamResult = {
|
|
595
|
-
|
|
596
|
-
|
|
620
|
+
nextExpectedStreamVersion: StreamPosition;
|
|
621
|
+
createdNewStream: boolean;
|
|
597
622
|
};
|
|
598
623
|
type AppendToStreamResultWithGlobalPosition = AppendToStreamResult & {
|
|
599
|
-
|
|
624
|
+
lastEventGlobalPosition: GlobalPosition;
|
|
600
625
|
};
|
|
601
|
-
type AppendStreamResultOfEventStore<Store extends EventStore> = Store['appendToStream'] extends (...args: any[]) => Promise<infer R> ? R : never;
|
|
626
|
+
type AppendStreamResultOfEventStore<Store extends EventStore> = Store['appendToStream'] extends ((...args: any[]) => Promise<infer R>) ? R : never;
|
|
602
627
|
type StreamExistsResult = boolean;
|
|
603
628
|
type DefaultEventStoreOptions<Store extends EventStore, HandlerContext extends DefaultRecord | undefined = undefined> = {
|
|
629
|
+
/**
|
|
630
|
+
* Pluggable set of hooks informing about the event store internal behaviour.
|
|
631
|
+
*/
|
|
632
|
+
hooks?: {
|
|
604
633
|
/**
|
|
605
|
-
*
|
|
634
|
+
* This hook will be called **AFTER** events were stored in the event store.
|
|
635
|
+
* It's designed to handle scenarios where delivery and ordering guarantees do not matter much.
|
|
636
|
+
*
|
|
637
|
+
* **WARNINGS:**
|
|
638
|
+
*
|
|
639
|
+
* 1. It will be called **EXACTLY ONCE** if append succeded.
|
|
640
|
+
* 2. If the hook fails, its append **will still silently succeed**, and no error will be thrown.
|
|
641
|
+
* 3. Wen process crashes after events were committed, but before the hook was called, delivery won't be retried.
|
|
642
|
+
* That can lead to state inconsistencies.
|
|
643
|
+
* 4. In the case of high concurrent traffic, **race conditions may cause ordering issues**.
|
|
644
|
+
* For instance, where the second hook takes longer to process than the first one, ordering won't be guaranteed.
|
|
645
|
+
*
|
|
646
|
+
* @type {AfterEventStoreCommitHandler<Store, HandlerContext>}
|
|
606
647
|
*/
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
* This hook will be called **AFTER** events were stored in the event store.
|
|
610
|
-
* It's designed to handle scenarios where delivery and ordering guarantees do not matter much.
|
|
611
|
-
*
|
|
612
|
-
* **WARNINGS:**
|
|
613
|
-
*
|
|
614
|
-
* 1. It will be called **EXACTLY ONCE** if append succeded.
|
|
615
|
-
* 2. If the hook fails, its append **will still silently succeed**, and no error will be thrown.
|
|
616
|
-
* 3. Wen process crashes after events were committed, but before the hook was called, delivery won't be retried.
|
|
617
|
-
* That can lead to state inconsistencies.
|
|
618
|
-
* 4. In the case of high concurrent traffic, **race conditions may cause ordering issues**.
|
|
619
|
-
* For instance, where the second hook takes longer to process than the first one, ordering won't be guaranteed.
|
|
620
|
-
*
|
|
621
|
-
* @type {AfterEventStoreCommitHandler<Store, HandlerContext>}
|
|
622
|
-
*/
|
|
623
|
-
onAfterCommit?: AfterEventStoreCommitHandler<Store, HandlerContext>;
|
|
624
|
-
};
|
|
648
|
+
onAfterCommit?: AfterEventStoreCommitHandler<Store, HandlerContext>;
|
|
649
|
+
};
|
|
625
650
|
};
|
|
626
|
-
|
|
651
|
+
//#endregion
|
|
652
|
+
//#region src/eventStore/afterCommit/afterEventStoreCommitHandler.d.ts
|
|
627
653
|
type AfterEventStoreCommitHandler<Store extends EventStore, HandlerContext extends DefaultRecord | undefined = undefined> = HandlerContext extends undefined ? BatchRecordedMessageHandlerWithoutContext<Event, EventStoreReadEventMetadata<Store>> : BatchRecordedMessageHandlerWithContext<Event, EventStoreReadEventMetadata<Store>, NonNullable<HandlerContext>>;
|
|
628
654
|
type BeforeEventStoreCommitHandler<Store extends EventStore, HandlerContext extends DefaultRecord | undefined = undefined> = HandlerContext extends undefined ? BatchRecordedMessageHandlerWithoutContext<Event, EventStoreReadEventMetadata<Store>> : BatchRecordedMessageHandlerWithContext<Event, EventStoreReadEventMetadata<Store>, NonNullable<HandlerContext>>;
|
|
629
655
|
type TryPublishMessagesAfterCommitOptions<Store extends EventStore, HandlerContext extends DefaultRecord | undefined = undefined> = {
|
|
630
|
-
|
|
656
|
+
onAfterCommit?: AfterEventStoreCommitHandler<Store, HandlerContext>;
|
|
631
657
|
};
|
|
632
658
|
declare function tryPublishMessagesAfterCommit<Store extends EventStore>(messages: ReadEvent<Event, EventStoreReadEventMetadata<Store>>[], options: TryPublishMessagesAfterCommitOptions<Store, undefined> | undefined): Promise<boolean>;
|
|
633
659
|
declare function tryPublishMessagesAfterCommit<Store extends EventStore, HandlerContext extends DefaultRecord | undefined = undefined>(messages: ReadEvent<Event, EventStoreReadEventMetadata<Store>>[], options: TryPublishMessagesAfterCommitOptions<Store, HandlerContext> | undefined, context: HandlerContext): Promise<boolean>;
|
|
634
|
-
|
|
660
|
+
//#endregion
|
|
661
|
+
//#region src/messageBus/index.d.ts
|
|
635
662
|
interface CommandSender {
|
|
636
|
-
|
|
663
|
+
send<CommandType extends Command = Command>(command: CommandType): Promise<void>;
|
|
637
664
|
}
|
|
638
665
|
interface EventsPublisher {
|
|
639
|
-
|
|
666
|
+
publish<EventType extends Event = Event>(event: EventType): Promise<void>;
|
|
640
667
|
}
|
|
641
668
|
type ScheduleOptions = {
|
|
642
|
-
|
|
669
|
+
afterInMs: number;
|
|
643
670
|
} | {
|
|
644
|
-
|
|
671
|
+
at: Date;
|
|
645
672
|
};
|
|
646
673
|
interface MessageScheduler<CommandOrEvent extends Command | Event> {
|
|
647
|
-
|
|
648
|
-
}
|
|
649
|
-
interface CommandBus extends CommandSender, MessageScheduler<Command> {
|
|
650
|
-
}
|
|
651
|
-
interface EventBus extends EventsPublisher, MessageScheduler<Event> {
|
|
674
|
+
schedule<MessageType extends CommandOrEvent>(message: MessageType, when?: ScheduleOptions): void;
|
|
652
675
|
}
|
|
676
|
+
interface CommandBus extends CommandSender, MessageScheduler<Command> {}
|
|
677
|
+
interface EventBus extends EventsPublisher, MessageScheduler<Event> {}
|
|
653
678
|
interface MessageBus extends CommandBus, EventBus {
|
|
654
|
-
|
|
679
|
+
schedule<MessageType extends Command | Event>(message: MessageType, when?: ScheduleOptions): void;
|
|
655
680
|
}
|
|
656
681
|
interface CommandProcessor {
|
|
657
|
-
|
|
682
|
+
handle<CommandType extends Command>(commandHandler: SingleMessageHandler<CommandType>, ...commandTypes: CommandTypeOf<CommandType>[]): void;
|
|
658
683
|
}
|
|
659
684
|
interface EventSubscription {
|
|
660
|
-
|
|
685
|
+
subscribe<EventType extends Event>(eventHandler: SingleMessageHandler<EventType>, ...eventTypes: EventTypeOf<EventType>[]): void;
|
|
661
686
|
}
|
|
662
687
|
type ScheduledMessage = {
|
|
663
|
-
|
|
664
|
-
|
|
688
|
+
message: Message;
|
|
689
|
+
options?: ScheduleOptions;
|
|
665
690
|
};
|
|
666
691
|
interface ScheduledMessageProcessor {
|
|
667
|
-
|
|
692
|
+
dequeue(): ScheduledMessage[];
|
|
668
693
|
}
|
|
669
694
|
type MessageSubscription = EventSubscription | CommandProcessor;
|
|
670
695
|
declare const getInMemoryMessageBus: () => MessageBus & EventSubscription & CommandProcessor & ScheduledMessageProcessor;
|
|
671
|
-
|
|
696
|
+
//#endregion
|
|
697
|
+
//#region src/eventStore/afterCommit/forwardToMessageBus.d.ts
|
|
672
698
|
declare const forwardToMessageBus: <Store extends EventStore, HandlerContext extends DefaultRecord | undefined = undefined>(eventPublisher: EventsPublisher) => AfterEventStoreCommitHandler<Store, HandlerContext>;
|
|
673
|
-
|
|
699
|
+
//#endregion
|
|
700
|
+
//#region src/eventStore/events/index.d.ts
|
|
674
701
|
declare const GlobalStreamCaughtUpType = "__emt:GlobalStreamCaughtUp";
|
|
675
702
|
type GlobalStreamCaughtUp = Event<'__emt:GlobalStreamCaughtUp', {
|
|
676
|
-
|
|
703
|
+
globalPosition: bigint;
|
|
677
704
|
}, {
|
|
678
|
-
|
|
705
|
+
globalPosition: bigint;
|
|
679
706
|
}>;
|
|
680
707
|
declare const isGlobalStreamCaughtUp: (event: Event) => event is GlobalStreamCaughtUp;
|
|
681
708
|
declare const caughtUpEventFrom: (position: bigint) => (event: ReadEvent<Event, ReadEventMetadataWithGlobalPosition>) => event is ReadEvent<GlobalStreamCaughtUp, ReadEventMetadataWithGlobalPosition>;
|
|
@@ -683,30 +710,32 @@ declare const globalStreamCaughtUp: (data: EventDataOf<GlobalStreamCaughtUp>) =>
|
|
|
683
710
|
declare const isSubscriptionEvent: (event: Event) => event is GlobalSubscriptionEvent;
|
|
684
711
|
declare const isNotInternalEvent: (event: Event) => boolean;
|
|
685
712
|
type GlobalSubscriptionEvent = GlobalStreamCaughtUp;
|
|
686
|
-
|
|
713
|
+
//#endregion
|
|
714
|
+
//#region src/eventStore/inMemoryEventStore.d.ts
|
|
687
715
|
declare const InMemoryEventStoreDefaultStreamVersion = 0n;
|
|
688
716
|
type InMemoryEventStore = EventStore<ReadEventMetadataWithGlobalPosition> & {
|
|
689
|
-
|
|
717
|
+
database: InMemoryDatabase;
|
|
690
718
|
};
|
|
691
719
|
type InMemoryReadEventMetadata = ReadEventMetadataWithGlobalPosition;
|
|
692
720
|
type InMemoryProjectionHandlerContext = {
|
|
693
|
-
|
|
694
|
-
|
|
721
|
+
eventStore?: InMemoryEventStore;
|
|
722
|
+
database?: InMemoryDatabase;
|
|
695
723
|
};
|
|
696
724
|
type InMemoryEventStoreOptions = DefaultEventStoreOptions<InMemoryEventStore> & {
|
|
697
|
-
|
|
698
|
-
|
|
725
|
+
projections?: ProjectionRegistration<'inline', InMemoryReadEventMetadata, InMemoryProjectionHandlerContext>[];
|
|
726
|
+
database?: InMemoryDatabase;
|
|
699
727
|
};
|
|
700
728
|
type InMemoryReadEvent<EventType extends Event = Event> = ReadEvent<EventType, ReadEventMetadataWithGlobalPosition>;
|
|
701
729
|
declare const getInMemoryEventStore: (eventStoreOptions?: InMemoryEventStoreOptions) => InMemoryEventStore;
|
|
702
|
-
|
|
730
|
+
//#endregion
|
|
731
|
+
//#region src/eventStore/projections/inMemory/inMemoryProjection.d.ts
|
|
703
732
|
declare const DATABASE_REQUIRED_ERROR_MESSAGE = "Database is required in context for InMemory projections";
|
|
704
733
|
type InMemoryProjectionDefinition<EventType extends Event> = ProjectionDefinition<EventType, InMemoryReadEventMetadata, InMemoryProjectionHandlerContext>;
|
|
705
734
|
type InMemoryProjectionHandlerOptions<EventType extends Event = Event> = {
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
735
|
+
projections: InMemoryProjectionDefinition<EventType>[];
|
|
736
|
+
events: ReadEvent<EventType, InMemoryReadEventMetadata>[];
|
|
737
|
+
database: InMemoryDatabase;
|
|
738
|
+
eventStore?: InMemoryProjectionHandlerContext['eventStore'];
|
|
710
739
|
};
|
|
711
740
|
/**
|
|
712
741
|
* Handles projections for the InMemoryEventStore
|
|
@@ -717,30 +746,34 @@ type InMemoryWithNotNullDocumentEvolve<DocumentType extends Record<string, unkno
|
|
|
717
746
|
type InMemoryWithNullableDocumentEvolve<DocumentType extends Record<string, unknown>, EventType extends Event> = (document: DocumentType | null, event: ReadEvent<EventType, InMemoryReadEventMetadata>) => DocumentType | null;
|
|
718
747
|
type InMemoryDocumentEvolve<DocumentType extends Record<string, unknown>, EventType extends Event> = InMemoryWithNotNullDocumentEvolve<DocumentType, EventType> | InMemoryWithNullableDocumentEvolve<DocumentType, EventType>;
|
|
719
748
|
type InMemoryProjectionOptions<EventType extends Event> = {
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
749
|
+
handle: (events: ReadEvent<EventType, InMemoryReadEventMetadata>[], context: InMemoryProjectionHandlerContext & {
|
|
750
|
+
database: InMemoryDatabase;
|
|
751
|
+
}) => Promise<void>;
|
|
752
|
+
canHandle: CanHandle<EventType>;
|
|
753
|
+
truncate?: TruncateProjection<InMemoryProjectionHandlerContext & {
|
|
754
|
+
database: InMemoryDatabase;
|
|
755
|
+
}>;
|
|
727
756
|
};
|
|
728
757
|
/**
|
|
729
758
|
* Creates an InMemory projection
|
|
730
759
|
*/
|
|
731
|
-
declare const inMemoryProjection: <EventType extends Event>({
|
|
760
|
+
declare const inMemoryProjection: <EventType extends Event>({
|
|
761
|
+
truncate,
|
|
762
|
+
handle,
|
|
763
|
+
canHandle
|
|
764
|
+
}: InMemoryProjectionOptions<EventType>) => InMemoryProjectionDefinition<EventType>;
|
|
732
765
|
/**
|
|
733
766
|
* Creates a multi-stream projection for InMemoryDatabase
|
|
734
767
|
*/
|
|
735
768
|
type InMemoryMultiStreamProjectionOptions<DocumentType extends Record<string, unknown>, EventType extends Event> = {
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
769
|
+
canHandle: CanHandle<EventType>;
|
|
770
|
+
collectionName: string;
|
|
771
|
+
getDocumentId: (event: ReadEvent<EventType>) => string;
|
|
739
772
|
} & ({
|
|
740
|
-
|
|
773
|
+
evolve: InMemoryWithNullableDocumentEvolve<DocumentType, EventType>;
|
|
741
774
|
} | {
|
|
742
|
-
|
|
743
|
-
|
|
775
|
+
evolve: InMemoryWithNotNullDocumentEvolve<DocumentType, EventType>;
|
|
776
|
+
initialState: () => DocumentType;
|
|
744
777
|
});
|
|
745
778
|
/**
|
|
746
779
|
* Creates a projection that handles events across multiple streams
|
|
@@ -750,22 +783,23 @@ declare const inMemoryMultiStreamProjection: <DocumentType extends Record<string
|
|
|
750
783
|
* Creates a single-stream projection for InMemoryDatabase
|
|
751
784
|
*/
|
|
752
785
|
type InMemorySingleStreamProjectionOptions<DocumentType extends Record<string, unknown>, EventType extends Event> = {
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
786
|
+
canHandle: CanHandle<EventType>;
|
|
787
|
+
getDocumentId?: (event: ReadEvent<EventType>) => string;
|
|
788
|
+
collectionName: string;
|
|
756
789
|
} & ({
|
|
757
|
-
|
|
790
|
+
evolve: InMemoryWithNullableDocumentEvolve<DocumentType, EventType>;
|
|
758
791
|
} | {
|
|
759
|
-
|
|
760
|
-
|
|
792
|
+
evolve: InMemoryWithNotNullDocumentEvolve<DocumentType, EventType>;
|
|
793
|
+
initialState: () => DocumentType;
|
|
761
794
|
});
|
|
762
795
|
/**
|
|
763
796
|
* Creates a projection that handles events from a single stream
|
|
764
797
|
*/
|
|
765
798
|
declare const inMemorySingleStreamProjection: <DocumentType extends Record<string, unknown>, EventType extends Event>(options: InMemorySingleStreamProjectionOptions<DocumentType, EventType>) => InMemoryProjectionDefinition<EventType>;
|
|
766
|
-
|
|
799
|
+
//#endregion
|
|
800
|
+
//#region src/testing/assertions.d.ts
|
|
767
801
|
declare class AssertionError extends Error {
|
|
768
|
-
|
|
802
|
+
constructor(message: string);
|
|
769
803
|
}
|
|
770
804
|
declare const isSubset: (superObj: unknown, subObj: unknown) => boolean;
|
|
771
805
|
declare const assertFails: (message?: string) => never;
|
|
@@ -777,7 +811,7 @@ declare const assertMatches: (actual: unknown, expected: unknown, message?: stri
|
|
|
777
811
|
declare const assertDeepEqual: <T = unknown>(actual: T, expected: T, message?: string) => void;
|
|
778
812
|
declare const assertNotDeepEqual: <T = unknown>(actual: T, expected: T, message?: string) => void;
|
|
779
813
|
declare const assertThat: <T>(item: T) => {
|
|
780
|
-
|
|
814
|
+
isEqualTo: (other: T) => void;
|
|
781
815
|
};
|
|
782
816
|
declare const assertDefined: (value: unknown, message?: string | Error) => asserts value;
|
|
783
817
|
declare function assertFalse(condition: boolean, message?: string): asserts condition is false;
|
|
@@ -785,244 +819,261 @@ declare function assertTrue(condition: boolean, message?: string): asserts condi
|
|
|
785
819
|
declare function assertOk<T>(obj: T | null | undefined, message?: string): asserts obj is T;
|
|
786
820
|
declare function assertEqual<T>(expected: T | null | undefined, actual: T | null | undefined, message?: string): void;
|
|
787
821
|
declare function assertNotEqual<T>(obj: T | null | undefined, other: T | null | undefined, message?: string): void;
|
|
788
|
-
declare function assertIsNotNull<T extends object | bigint>(result: T | null): asserts result is T;
|
|
789
|
-
declare function assertIsNull<T extends object>(result: T | null): asserts result is null;
|
|
822
|
+
declare function assertIsNotNull<T extends object | string | bigint | boolean | number>(result: T | null): asserts result is T;
|
|
823
|
+
declare function assertIsNull<T extends object | string | bigint | boolean | number>(result: T | null): asserts result is null;
|
|
790
824
|
type Call = {
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
825
|
+
arguments: unknown[];
|
|
826
|
+
result: unknown;
|
|
827
|
+
target: unknown;
|
|
828
|
+
this: unknown;
|
|
795
829
|
};
|
|
796
830
|
type ArgumentMatcher = (arg: unknown) => boolean;
|
|
797
831
|
declare const argValue: <T>(value: T) => ArgumentMatcher;
|
|
798
832
|
declare const argMatches: <T>(matches: (arg: T) => boolean) => ArgumentMatcher;
|
|
799
833
|
type MockedFunction = Function & {
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
834
|
+
mock?: {
|
|
835
|
+
calls: Call[];
|
|
836
|
+
};
|
|
803
837
|
};
|
|
804
838
|
declare function verifyThat(fn: MockedFunction): {
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
839
|
+
calledTimes: (times: number) => void;
|
|
840
|
+
notCalled: () => void;
|
|
841
|
+
called: () => void;
|
|
842
|
+
calledWith: (...args: unknown[]) => void;
|
|
843
|
+
calledOnceWith: (...args: unknown[]) => void;
|
|
844
|
+
calledWithArgumentMatching: (...matches: ArgumentMatcher[]) => void;
|
|
845
|
+
notCalledWithArgumentMatching: (...matches: ArgumentMatcher[]) => void;
|
|
812
846
|
};
|
|
813
847
|
declare const assertThatArray: <T>(array: T[]) => {
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
};
|
|
831
|
-
|
|
848
|
+
isEmpty: () => void;
|
|
849
|
+
isNotEmpty: () => void;
|
|
850
|
+
hasSize: (length: number) => void;
|
|
851
|
+
containsElements: (other: T[]) => void;
|
|
852
|
+
containsElementsMatching: (other: T[]) => void;
|
|
853
|
+
containsOnlyElementsMatching: (other: T[]) => void;
|
|
854
|
+
containsExactlyInAnyOrder: (other: T[]) => void;
|
|
855
|
+
containsExactlyInAnyOrderElementsOf: (other: T[]) => void;
|
|
856
|
+
containsExactlyElementsOf: (other: T[]) => void;
|
|
857
|
+
containsExactly: (elem: T) => void;
|
|
858
|
+
contains: (elem: T) => void;
|
|
859
|
+
containsOnlyOnceElementsOf: (other: T[]) => void;
|
|
860
|
+
containsAnyOf: (other: T[]) => void;
|
|
861
|
+
allMatch: (matches: (item: T) => boolean) => void;
|
|
862
|
+
anyMatches: (matches: (item: T) => boolean) => void;
|
|
863
|
+
allMatchAsync: (matches: (item: T) => Promise<boolean>) => Promise<void>;
|
|
864
|
+
};
|
|
865
|
+
//#endregion
|
|
866
|
+
//#region src/testing/deciderSpecification.d.ts
|
|
832
867
|
type ErrorCheck<ErrorType> = (error: ErrorType) => boolean;
|
|
833
868
|
type ThenThrows<ErrorType extends Error> = (() => void) | ((errorConstructor: ErrorConstructor<ErrorType>) => void) | ((errorCheck: ErrorCheck<ErrorType>) => void) | ((errorConstructor: ErrorConstructor<ErrorType>, errorCheck?: ErrorCheck<ErrorType>) => void);
|
|
834
|
-
type AsyncDeciderSpecification<Command, Event> = (givenEvents: Event | Event[]) => {
|
|
835
|
-
when: (command: Command) => {
|
|
836
|
-
then: (expectedEvents: Event | Event[]) => Promise<void>;
|
|
837
|
-
thenNothingHappened: () => Promise<void>;
|
|
838
|
-
thenThrows: <ErrorType extends Error = Error>(...args: Parameters<ThenThrows<ErrorType>>) => Promise<void>;
|
|
839
|
-
};
|
|
840
|
-
};
|
|
841
869
|
type DeciderSpecification<Command, Event> = (givenEvents: Event | Event[]) => {
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
870
|
+
when: (command: Command) => {
|
|
871
|
+
then: (expectedEvents: Event | Event[]) => void;
|
|
872
|
+
thenNothingHappened: () => void;
|
|
873
|
+
thenThrows: <ErrorType extends Error = Error>(...args: Parameters<ThenThrows<ErrorType>>) => void;
|
|
874
|
+
};
|
|
875
|
+
};
|
|
876
|
+
type AsyncDeciderSpecification<Command, Event> = (givenEvents: Event | Event[]) => {
|
|
877
|
+
when: (command: Command) => {
|
|
878
|
+
then: (expectedEvents: Event | Event[]) => Promise<void>;
|
|
879
|
+
thenNothingHappened: () => Promise<void>;
|
|
880
|
+
thenThrows: <ErrorType extends Error = Error>(...args: Parameters<ThenThrows<ErrorType>>) => Promise<void>;
|
|
881
|
+
};
|
|
847
882
|
};
|
|
848
883
|
declare const DeciderSpecification: {
|
|
849
|
-
|
|
884
|
+
for: typeof deciderSpecificationFor;
|
|
850
885
|
};
|
|
851
886
|
declare function deciderSpecificationFor<Command, Event, State>(decider: {
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
887
|
+
decide: (command: Command, state: State) => Event | Event[];
|
|
888
|
+
evolve: (state: State, event: Event) => State;
|
|
889
|
+
initialState: () => State;
|
|
855
890
|
}): DeciderSpecification<Command, Event>;
|
|
856
891
|
declare function deciderSpecificationFor<Command, Event, State>(decider: {
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
892
|
+
decide: (command: Command, state: State) => Promise<Event | Event[]>;
|
|
893
|
+
evolve: (state: State, event: Event) => State;
|
|
894
|
+
initialState: () => State;
|
|
860
895
|
}): AsyncDeciderSpecification<Command, Event>;
|
|
861
|
-
|
|
896
|
+
//#endregion
|
|
897
|
+
//#region src/workflows/workflow.d.ts
|
|
898
|
+
type Workflow<Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand, Name extends string = string> = {
|
|
899
|
+
name: Name;
|
|
900
|
+
decide: (command: Input, state: State) => WorkflowOutput<Output>;
|
|
901
|
+
evolve: (currentState: State, event: WorkflowEvent<Input | Output>) => State;
|
|
902
|
+
initialState: () => State;
|
|
903
|
+
};
|
|
862
904
|
type WorkflowEvent<Output extends AnyEvent | AnyCommand> = Extract<Output, {
|
|
863
|
-
|
|
905
|
+
kind?: 'Event';
|
|
864
906
|
}>;
|
|
865
907
|
type WorkflowCommand<Output extends AnyEvent | AnyCommand> = Extract<Output, {
|
|
866
|
-
|
|
908
|
+
kind?: 'Command';
|
|
867
909
|
}>;
|
|
868
910
|
type WorkflowMessageAction = 'InitiatedBy' | 'Received' | 'Sent' | 'Published' | 'Scheduled';
|
|
869
911
|
type WorkflowInputMessageMetadata = Readonly<{
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
912
|
+
originalMessageId: string | undefined;
|
|
913
|
+
input: true;
|
|
914
|
+
action?: Extract<WorkflowMessageAction, 'InitiatedBy' | 'Received'>;
|
|
873
915
|
}>;
|
|
874
916
|
type WorkflowOutputMessageMetadata = Readonly<{
|
|
875
|
-
|
|
917
|
+
action?: Extract<WorkflowMessageAction, 'Sent' | 'Published' | 'Scheduled'>;
|
|
876
918
|
}>;
|
|
877
919
|
type WorkflowOutput<Output extends AnyEvent | AnyCommand | EmmettError> = Output | Output[];
|
|
878
|
-
type Workflow<Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand, Name extends string = string> = {
|
|
879
|
-
name: Name;
|
|
880
|
-
decide: (command: Input, state: State) => WorkflowOutput<Output>;
|
|
881
|
-
evolve: (currentState: State, event: WorkflowEvent<Input | Output>) => State;
|
|
882
|
-
initialState: () => State;
|
|
883
|
-
};
|
|
884
920
|
declare const Workflow: <Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand>(workflow: Workflow<Input, State, Output>) => Workflow<Input, State, Output>;
|
|
885
|
-
|
|
921
|
+
//#endregion
|
|
922
|
+
//#region src/testing/workflowSpecification.d.ts
|
|
886
923
|
type WorkflowSpecification<Input extends AnyEvent | AnyCommand, Output extends AnyEvent | AnyCommand> = (givenEvents: WorkflowEvent<Input | Output> | WorkflowEvent<Input | Output>[]) => {
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
924
|
+
when: (input: Input) => {
|
|
925
|
+
then: (expectedOutput: Output | Output[]) => void;
|
|
926
|
+
thenNothingHappened: () => void;
|
|
927
|
+
thenThrows: <ErrorType extends Error = Error>(...args: Parameters<ThenThrows<ErrorType>>) => void;
|
|
928
|
+
};
|
|
892
929
|
};
|
|
893
930
|
declare const WorkflowSpecification: {
|
|
894
|
-
|
|
931
|
+
for: typeof workflowSpecificationFor;
|
|
895
932
|
};
|
|
896
933
|
declare function workflowSpecificationFor<Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand>(workflow: Workflow<Input, State, Output>): WorkflowSpecification<Input, Output>;
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
EventType[]
|
|
901
|
-
];
|
|
934
|
+
//#endregion
|
|
935
|
+
//#region src/testing/wrapEventStore.d.ts
|
|
936
|
+
type TestEventStream<EventType extends Event = Event> = [string, EventType[]];
|
|
902
937
|
type EventStoreWrapper<Store extends EventStore> = Store & {
|
|
903
|
-
|
|
904
|
-
|
|
938
|
+
appendedEvents: Map<string, TestEventStream>;
|
|
939
|
+
setup<EventType extends Event>(streamName: string, events: EventType[]): Promise<AppendToStreamResult>;
|
|
905
940
|
};
|
|
906
941
|
declare const WrapEventStore: <Store extends EventStore>(eventStore: Store) => EventStoreWrapper<Store>;
|
|
907
|
-
|
|
942
|
+
//#endregion
|
|
943
|
+
//#region src/eventStore/projections/inMemory/inMemoryProjectionSpec.d.ts
|
|
908
944
|
type DocumentWithId = Document & {
|
|
909
|
-
|
|
945
|
+
_id?: string | number;
|
|
910
946
|
};
|
|
911
947
|
type InMemoryProjectionSpecEvent<EventType extends Event, EventMetaDataType extends InMemoryReadEventMetadata = InMemoryReadEventMetadata> = EventType & {
|
|
912
|
-
|
|
948
|
+
metadata?: Partial<EventMetaDataType>;
|
|
913
949
|
};
|
|
914
950
|
type InMemoryProjectionSpecWhenOptions = {
|
|
915
|
-
|
|
951
|
+
numberOfTimes: number;
|
|
952
|
+
};
|
|
953
|
+
type InMemoryProjectionSpec<EventType extends Event> = (givenEvents: InMemoryProjectionSpecEvent<EventType>[]) => {
|
|
954
|
+
when: (events: InMemoryProjectionSpecEvent<EventType>[], options?: InMemoryProjectionSpecWhenOptions) => {
|
|
955
|
+
then: (assert: InMemoryProjectionAssert, message?: string) => Promise<void>;
|
|
956
|
+
thenThrows: <ErrorType extends Error = Error>(...args: Parameters<ThenThrows<ErrorType>>) => Promise<void>;
|
|
957
|
+
};
|
|
916
958
|
};
|
|
917
959
|
type InMemoryProjectionAssert = (options: {
|
|
918
|
-
|
|
960
|
+
database: InMemoryDatabase;
|
|
919
961
|
}) => Promise<void | boolean>;
|
|
920
962
|
type InMemoryProjectionSpecOptions<EventType extends Event> = {
|
|
921
|
-
|
|
922
|
-
};
|
|
923
|
-
type InMemoryProjectionSpec<EventType extends Event> = (givenEvents: InMemoryProjectionSpecEvent<EventType>[]) => {
|
|
924
|
-
when: (events: InMemoryProjectionSpecEvent<EventType>[], options?: InMemoryProjectionSpecWhenOptions) => {
|
|
925
|
-
then: (assert: InMemoryProjectionAssert, message?: string) => Promise<void>;
|
|
926
|
-
thenThrows: <ErrorType extends Error = Error>(...args: Parameters<ThenThrows<ErrorType>>) => Promise<void>;
|
|
927
|
-
};
|
|
963
|
+
projection: InMemoryProjectionDefinition<EventType>;
|
|
928
964
|
};
|
|
929
965
|
declare const InMemoryProjectionSpec: {
|
|
930
|
-
|
|
966
|
+
for: <EventType extends Event>(options: InMemoryProjectionSpecOptions<EventType>) => InMemoryProjectionSpec<EventType>;
|
|
931
967
|
};
|
|
932
968
|
declare const eventInStream: <EventType extends Event = Event, EventMetaDataType extends InMemoryReadEventMetadata = InMemoryReadEventMetadata>(streamName: string, event: InMemoryProjectionSpecEvent<EventType, EventMetaDataType>) => InMemoryProjectionSpecEvent<EventType, EventMetaDataType>;
|
|
933
969
|
declare const eventsInStream: <EventType extends Event = Event, EventMetaDataType extends InMemoryReadEventMetadata = InMemoryReadEventMetadata>(streamName: string, events: InMemoryProjectionSpecEvent<EventType, EventMetaDataType>[]) => InMemoryProjectionSpecEvent<EventType, EventMetaDataType>[];
|
|
934
970
|
declare const newEventsInStream: <EventType extends Event = Event, EventMetaDataType extends InMemoryReadEventMetadata = RecordedMessageMetadataWithGlobalPosition>(streamName: string, events: InMemoryProjectionSpecEvent<EventType, EventMetaDataType>[]) => InMemoryProjectionSpecEvent<EventType, EventMetaDataType>[];
|
|
935
971
|
declare function documentExists<T extends DocumentWithId>(expected: Partial<T>, options: {
|
|
936
|
-
|
|
937
|
-
|
|
972
|
+
inCollection: string;
|
|
973
|
+
withId: string | number;
|
|
938
974
|
}): InMemoryProjectionAssert;
|
|
939
975
|
declare const expectInMemoryDocuments: {
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
};
|
|
976
|
+
fromCollection: <T extends DocumentWithId>(collectionName: string) => {
|
|
977
|
+
withId: (id: string | number) => {
|
|
978
|
+
toBeEqual: (expected: Partial<T>) => InMemoryProjectionAssert;
|
|
944
979
|
};
|
|
980
|
+
};
|
|
945
981
|
};
|
|
946
|
-
|
|
982
|
+
//#endregion
|
|
983
|
+
//#region src/eventStore/versioning/downcasting.d.ts
|
|
947
984
|
type MessageDowncast<MessageType extends AnyMessage, MessagePayloadType extends AnyMessage = MessageType, RecordedMessageMetadataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = ((message: RecordedMessage<MessageType, RecordedMessageMetadataType>) => RecordedMessage<MessagePayloadType, RecordedMessageMetadataType>) | ((message: MessageType) => MessagePayloadType);
|
|
948
985
|
declare const downcastRecordedMessage: <MessageType extends AnyMessage, MessagePayloadType extends AnyMessage = MessageType, RecordedMessageMetadataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata>(recordedMessage: RecordedMessage<MessageType, RecordedMessageMetadataType> | MessageType, options?: {
|
|
949
|
-
|
|
986
|
+
downcast?: MessageDowncast<MessageType, MessagePayloadType, RecordedMessageMetadataType>;
|
|
950
987
|
}) => RecordedMessage<MessagePayloadType, RecordedMessageMetadataType>;
|
|
951
988
|
declare const downcastRecordedMessages: <MessageType extends AnyMessage, MessagePayloadType extends AnyMessage = MessageType, RecordedMessageMetadataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata>(recordedMessages: RecordedMessage<MessageType, RecordedMessageMetadataType>[] | MessageType[], options?: {
|
|
952
|
-
|
|
989
|
+
downcast?: MessageDowncast<MessageType, MessagePayloadType, RecordedMessageMetadataType>;
|
|
953
990
|
}) => RecordedMessage<MessagePayloadType, RecordedMessageMetadataType>[];
|
|
954
|
-
|
|
991
|
+
//#endregion
|
|
992
|
+
//#region src/eventStore/versioning/upcasting.d.ts
|
|
955
993
|
type MessageUpcast<MessageType extends AnyMessage, MessagePayloadType extends AnyMessage = MessageType, RecordedMessageMetadataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata> = ((message: MessagePayloadType) => MessageType) | ((message: RecordedMessage<MessagePayloadType, RecordedMessageMetadataType>) => RecordedMessage<MessageType, RecordedMessageMetadataType>);
|
|
956
994
|
declare const upcastRecordedMessage: <MessageType extends AnyMessage, MessagePayloadType extends AnyMessage = MessageType, RecordedMessageMetadataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata>(recordedMessage: RecordedMessage<MessagePayloadType, RecordedMessageMetadataType> | MessagePayloadType, options?: {
|
|
957
|
-
|
|
995
|
+
upcast?: MessageUpcast<MessageType, MessagePayloadType, RecordedMessageMetadataType>;
|
|
958
996
|
}) => RecordedMessage<MessageType, RecordedMessageMetadataType>;
|
|
959
997
|
declare const upcastRecordedMessages: <MessageType extends AnyMessage, MessagePayloadType extends AnyMessage = MessageType, RecordedMessageMetadataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata>(recordedMessages: RecordedMessage<MessagePayloadType, RecordedMessageMetadataType>[] | MessagePayloadType[], options?: {
|
|
960
|
-
|
|
998
|
+
upcast?: MessageUpcast<MessageType, MessagePayloadType, RecordedMessageMetadataType>;
|
|
961
999
|
}) => RecordedMessage<MessageType, RecordedMessageMetadataType>[];
|
|
962
|
-
|
|
1000
|
+
//#endregion
|
|
1001
|
+
//#region src/utils/async/mapAsync.d.ts
|
|
1002
|
+
declare function reduceAsync<T, R>(items: T[], fn: (accumulator: R, item: T, index: number) => Promise<R>, initial: R): Promise<R>;
|
|
1003
|
+
//#endregion
|
|
1004
|
+
//#region src/utils/closeable.d.ts
|
|
963
1005
|
type Closeable = {
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
};
|
|
971
|
-
|
|
1006
|
+
/**
|
|
1007
|
+
* Gracefully cleans up managed resources
|
|
1008
|
+
*
|
|
1009
|
+
* @memberof Closeable
|
|
1010
|
+
*/
|
|
1011
|
+
close: () => Promise<void>;
|
|
1012
|
+
};
|
|
1013
|
+
//#endregion
|
|
1014
|
+
//#region src/utils/collections/merge.d.ts
|
|
972
1015
|
declare const merge: <T>(array: T[], item: T, where: (current: T) => boolean, onExisting: (current: T) => T, onNotFound?: () => T | undefined) => T[];
|
|
973
|
-
|
|
1016
|
+
//#endregion
|
|
1017
|
+
//#region src/utils/collections/index.d.ts
|
|
974
1018
|
declare const arrayUtils: {
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
1019
|
+
merge: <T>(array: T[], item: T, where: (current: T) => boolean, onExisting: (current: T) => T, onNotFound?: () => T | undefined) => T[];
|
|
1020
|
+
hasDuplicates: <ArrayItem, Mapped>(array: ArrayItem[], predicate: (value: ArrayItem, index: number, array: ArrayItem[]) => Mapped) => boolean;
|
|
1021
|
+
getDuplicates: <ArrayItem, Mapped>(array: ArrayItem[], predicate: (value: ArrayItem, index: number, array: ArrayItem[]) => Mapped) => ArrayItem[];
|
|
978
1022
|
};
|
|
979
|
-
|
|
1023
|
+
//#endregion
|
|
1024
|
+
//#region src/utils/deepEquals.d.ts
|
|
980
1025
|
declare const deepEquals: <T>(left: T, right: T) => boolean;
|
|
981
1026
|
type Equatable<T> = {
|
|
982
|
-
|
|
1027
|
+
equals: (right: T) => boolean;
|
|
983
1028
|
} & T;
|
|
984
1029
|
declare const isEquatable: <T>(left: T) => left is Equatable<T>;
|
|
985
|
-
|
|
1030
|
+
//#endregion
|
|
1031
|
+
//#region src/utils/iterators.d.ts
|
|
986
1032
|
declare const sum: (iterator: Iterator<number, number, number> | Iterator<number>) => number;
|
|
987
|
-
|
|
1033
|
+
//#endregion
|
|
1034
|
+
//#region src/utils/locking/index.d.ts
|
|
988
1035
|
type LockOptions = {
|
|
989
|
-
|
|
1036
|
+
lockId: number;
|
|
990
1037
|
};
|
|
991
1038
|
type AcquireLockOptions = {
|
|
992
|
-
|
|
1039
|
+
lockId: string;
|
|
993
1040
|
};
|
|
994
1041
|
type ReleaseLockOptions = {
|
|
995
|
-
|
|
1042
|
+
lockId: string;
|
|
996
1043
|
};
|
|
997
1044
|
type Lock = {
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1045
|
+
acquire(options: AcquireLockOptions): Promise<void>;
|
|
1046
|
+
tryAcquire(options: AcquireLockOptions): Promise<boolean>;
|
|
1047
|
+
release(options: ReleaseLockOptions): Promise<boolean>;
|
|
1048
|
+
withAcquire: <Result = unknown>(handle: () => Promise<Result>, options: AcquireLockOptions) => Promise<Result>;
|
|
1002
1049
|
};
|
|
1003
1050
|
declare const InProcessLock: () => Lock;
|
|
1004
|
-
|
|
1051
|
+
//#endregion
|
|
1052
|
+
//#region src/utils/numbers/bigint.d.ts
|
|
1005
1053
|
declare const toNormalizedString: (value: bigint) => string;
|
|
1006
1054
|
declare const bigInt: {
|
|
1007
|
-
|
|
1055
|
+
toNormalizedString: (value: bigint) => string;
|
|
1008
1056
|
};
|
|
1009
|
-
|
|
1057
|
+
//#endregion
|
|
1058
|
+
//#region src/utils/promises.d.ts
|
|
1010
1059
|
declare const delay: (ms: number) => Promise<void>;
|
|
1011
1060
|
type AsyncAwaiter<T = void> = {
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1061
|
+
wait: Promise<T>;
|
|
1062
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
1063
|
+
reject: (reason?: any) => void;
|
|
1064
|
+
reset: () => void;
|
|
1016
1065
|
};
|
|
1017
1066
|
declare const asyncAwaiter: <T = void>() => AsyncAwaiter<T>;
|
|
1018
|
-
|
|
1067
|
+
//#endregion
|
|
1068
|
+
//#region src/utils/retry.d.ts
|
|
1019
1069
|
type AsyncRetryOptions<T = unknown> = retry.Options & {
|
|
1020
|
-
|
|
1021
|
-
|
|
1070
|
+
shouldRetryResult?: (result: T) => boolean;
|
|
1071
|
+
shouldRetryError?: (error?: unknown) => boolean;
|
|
1022
1072
|
};
|
|
1023
1073
|
declare const NoRetries: AsyncRetryOptions;
|
|
1024
1074
|
declare const asyncRetry: <T>(fn: () => Promise<T>, opts?: AsyncRetryOptions<T>) => Promise<T>;
|
|
1025
|
-
|
|
1075
|
+
//#endregion
|
|
1076
|
+
//#region src/utils/shutdown/gracefulShutdown.d.ts
|
|
1026
1077
|
type ShutdownHandler = () => void | Promise<void>;
|
|
1027
1078
|
/**
|
|
1028
1079
|
* Registers handlers for OS signals to enable graceful shutdown.
|
|
@@ -1033,136 +1084,145 @@ type ShutdownHandler = () => void | Promise<void>;
|
|
|
1033
1084
|
* @returns Cleanup function to unregister the handlers
|
|
1034
1085
|
*/
|
|
1035
1086
|
declare const onShutdown: (handler: ShutdownHandler) => (() => void);
|
|
1036
|
-
|
|
1087
|
+
//#endregion
|
|
1088
|
+
//#region src/utils/strings/hashText.d.ts
|
|
1037
1089
|
declare const hashText: (text: string) => Promise<bigint>;
|
|
1038
|
-
|
|
1090
|
+
//#endregion
|
|
1091
|
+
//#region src/commandHandling/handleCommand.d.ts
|
|
1039
1092
|
declare const CommandHandlerStreamVersionConflictRetryOptions: AsyncRetryOptions;
|
|
1040
1093
|
type CommandHandlerRetryOptions = AsyncRetryOptions | {
|
|
1041
|
-
|
|
1094
|
+
onVersionConflict: true | number | AsyncRetryOptions;
|
|
1042
1095
|
};
|
|
1043
1096
|
type CommandHandlerResult<State, StreamEvent extends Event, Store extends EventStore> = AppendStreamResultOfEventStore<Store> & {
|
|
1044
|
-
|
|
1045
|
-
|
|
1097
|
+
newState: State;
|
|
1098
|
+
newEvents: StreamEvent[];
|
|
1046
1099
|
};
|
|
1047
1100
|
type CommandHandlerOptions<State, StreamEvent extends Event, StoredEvent extends Event = StreamEvent> = {
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
};
|
|
1101
|
+
evolve: (state: State, event: StreamEvent) => State;
|
|
1102
|
+
initialState: () => State;
|
|
1103
|
+
mapToStreamId?: (id: string) => string;
|
|
1104
|
+
retry?: CommandHandlerRetryOptions;
|
|
1105
|
+
schema?: {
|
|
1106
|
+
versioning?: {
|
|
1107
|
+
upcast?: (event: StoredEvent) => StreamEvent;
|
|
1108
|
+
downcast?: (event: StreamEvent) => StoredEvent;
|
|
1057
1109
|
};
|
|
1110
|
+
};
|
|
1058
1111
|
} & JSONSerializationOptions;
|
|
1059
1112
|
type HandleOptions<Store extends EventStore> = Parameters<Store['appendToStream']>[2] & ({
|
|
1060
|
-
|
|
1113
|
+
expectedStreamVersion?: ExpectedStreamVersion;
|
|
1061
1114
|
} | {
|
|
1062
|
-
|
|
1115
|
+
retry?: CommandHandlerRetryOptions;
|
|
1063
1116
|
});
|
|
1064
1117
|
type CommandHandlerFunction<State, StreamEvent extends Event> = (state: State) => StreamEvent | StreamEvent[] | Promise<StreamEvent | StreamEvent[]>;
|
|
1065
1118
|
declare const CommandHandler: <State, StreamEvent extends Event, EventPayloadType extends Event = StreamEvent>(options: CommandHandlerOptions<State, StreamEvent, EventPayloadType>) => <Store extends EventStore>(store: Store, id: string, handle: CommandHandlerFunction<State, StreamEvent> | CommandHandlerFunction<State, StreamEvent>[], handleOptions?: HandleOptions<Store>) => Promise<CommandHandlerResult<State, StreamEvent, Store>>;
|
|
1066
|
-
|
|
1119
|
+
//#endregion
|
|
1120
|
+
//#region src/commandHandling/handleCommandWithDecider.d.ts
|
|
1067
1121
|
type DeciderCommandHandlerOptions<State, CommandType extends Command, StreamEvent extends Event> = CommandHandlerOptions<State, StreamEvent> & Decider<State, CommandType, StreamEvent>;
|
|
1068
1122
|
declare const DeciderCommandHandler: <State, CommandType extends Command, StreamEvent extends Event>(options: DeciderCommandHandlerOptions<State, CommandType, StreamEvent>) => <Store extends EventStore>(eventStore: Store, id: string, commands: CommandType | CommandType[], handleOptions?: HandleOptions<Store>) => Promise<CommandHandlerResult<State, StreamEvent, Store>>;
|
|
1069
|
-
|
|
1123
|
+
//#endregion
|
|
1124
|
+
//#region src/consumers/consumers.d.ts
|
|
1070
1125
|
type MessageConsumerOptions<ConsumerMessageType extends Message = any> = {
|
|
1071
|
-
|
|
1072
|
-
|
|
1126
|
+
consumerId?: string;
|
|
1127
|
+
processors?: Array<MessageProcessor<ConsumerMessageType, any, any>>;
|
|
1073
1128
|
};
|
|
1074
1129
|
type MessageConsumer<ConsumerMessageType extends Message = any> = Readonly<{
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1130
|
+
consumerId: string;
|
|
1131
|
+
isRunning: boolean;
|
|
1132
|
+
whenStarted: () => Promise<void>;
|
|
1133
|
+
processors: ReadonlyArray<MessageProcessor<ConsumerMessageType, any, any>>;
|
|
1134
|
+
start: () => Promise<void>;
|
|
1135
|
+
stop: () => Promise<void>;
|
|
1136
|
+
close: () => Promise<void>;
|
|
1081
1137
|
}>;
|
|
1082
|
-
|
|
1138
|
+
//#endregion
|
|
1139
|
+
//#region src/taskProcessing/executionGuards.d.ts
|
|
1083
1140
|
type ExclusiveAccessGuard = {
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1141
|
+
execute: <Result>(operation: () => Promise<Result>) => Promise<Result>;
|
|
1142
|
+
waitForIdle: () => Promise<void>;
|
|
1143
|
+
stop: (options?: {
|
|
1144
|
+
force?: boolean;
|
|
1145
|
+
}) => Promise<void>;
|
|
1089
1146
|
};
|
|
1090
1147
|
declare const guardExclusiveAccess: (options?: {
|
|
1091
|
-
|
|
1148
|
+
maxQueueSize?: number;
|
|
1092
1149
|
}) => ExclusiveAccessGuard;
|
|
1093
1150
|
type BoundedAccessGuard<Resource> = {
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1151
|
+
acquire: () => Promise<Resource>;
|
|
1152
|
+
release: (resource: Resource) => void;
|
|
1153
|
+
execute: <Result>(operation: (resource: Resource) => Promise<Result>) => Promise<Result>;
|
|
1154
|
+
waitForIdle: () => Promise<void>;
|
|
1155
|
+
stop: (options?: {
|
|
1156
|
+
force?: boolean;
|
|
1157
|
+
}) => Promise<void>;
|
|
1101
1158
|
};
|
|
1102
1159
|
declare const guardBoundedAccess: <Resource>(getResource: () => Resource | Promise<Resource>, options: {
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1160
|
+
maxResources: number;
|
|
1161
|
+
maxQueueSize?: number;
|
|
1162
|
+
reuseResources?: boolean;
|
|
1163
|
+
closeResource?: (resource: Resource) => void | Promise<void>;
|
|
1107
1164
|
}) => BoundedAccessGuard<Resource>;
|
|
1108
1165
|
type InitializedOnceGuard<T> = {
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1166
|
+
ensureInitialized: () => Promise<T>;
|
|
1167
|
+
reset: () => void;
|
|
1168
|
+
stop: (options?: {
|
|
1169
|
+
force?: boolean;
|
|
1170
|
+
}) => Promise<void>;
|
|
1114
1171
|
};
|
|
1115
1172
|
declare const guardInitializedOnce: <T>(initialize: () => Promise<T>, options?: {
|
|
1116
|
-
|
|
1117
|
-
|
|
1173
|
+
maxQueueSize?: number;
|
|
1174
|
+
maxRetries?: number;
|
|
1118
1175
|
}) => InitializedOnceGuard<T>;
|
|
1119
|
-
|
|
1176
|
+
//#endregion
|
|
1177
|
+
//#region src/taskProcessing/taskProcessor.d.ts
|
|
1120
1178
|
type TaskQueue = TaskQueueItem[];
|
|
1121
1179
|
type TaskQueueItem = {
|
|
1122
|
-
|
|
1123
|
-
|
|
1180
|
+
task: () => Promise<void>;
|
|
1181
|
+
options?: EnqueueTaskOptions | undefined;
|
|
1124
1182
|
};
|
|
1125
1183
|
type TaskProcessorOptions = {
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1184
|
+
maxActiveTasks: number;
|
|
1185
|
+
maxQueueSize: number;
|
|
1186
|
+
maxTaskIdleTime?: number;
|
|
1129
1187
|
};
|
|
1130
1188
|
type Task<T> = (context: TaskContext) => Promise<T>;
|
|
1131
1189
|
type TaskContext = {
|
|
1132
|
-
|
|
1190
|
+
ack: () => void;
|
|
1133
1191
|
};
|
|
1134
1192
|
type EnqueueTaskOptions = {
|
|
1135
|
-
|
|
1193
|
+
taskGroupId?: string;
|
|
1136
1194
|
};
|
|
1137
1195
|
declare class TaskProcessor {
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1196
|
+
private queue;
|
|
1197
|
+
private isProcessing;
|
|
1198
|
+
private activeTasks;
|
|
1199
|
+
private activeGroups;
|
|
1200
|
+
private options;
|
|
1201
|
+
private stopped;
|
|
1202
|
+
constructor(options: TaskProcessorOptions);
|
|
1203
|
+
enqueue<T>(task: Task<T>, options?: EnqueueTaskOptions): Promise<T>;
|
|
1204
|
+
waitForEndOfProcessing(): Promise<void>;
|
|
1205
|
+
stop(options?: {
|
|
1206
|
+
force?: boolean;
|
|
1207
|
+
}): Promise<void>;
|
|
1208
|
+
private schedule;
|
|
1209
|
+
private ensureProcessing;
|
|
1210
|
+
private processQueue;
|
|
1211
|
+
private executeItem;
|
|
1212
|
+
private takeFirstAvailableItem;
|
|
1213
|
+
private hasItemsToProcess;
|
|
1156
1214
|
}
|
|
1157
|
-
|
|
1215
|
+
//#endregion
|
|
1216
|
+
//#region src/validation/dates.d.ts
|
|
1158
1217
|
declare const formatDateToUtcYYYYMMDD: (date: Date) => string;
|
|
1159
1218
|
declare const isValidYYYYMMDD: (dateString: string) => boolean;
|
|
1160
1219
|
declare const parseDateFromUtcYYYYMMDD: (dateString: string) => Date;
|
|
1161
|
-
|
|
1220
|
+
//#endregion
|
|
1221
|
+
//#region src/validation/index.d.ts
|
|
1162
1222
|
declare const enum ValidationErrors {
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1223
|
+
NOT_A_NONEMPTY_STRING = "NOT_A_NONEMPTY_STRING",
|
|
1224
|
+
NOT_A_POSITIVE_NUMBER = "NOT_A_POSITIVE_NUMBER",
|
|
1225
|
+
NOT_AN_UNSIGNED_BIGINT = "NOT_AN_UNSIGNED_BIGINT"
|
|
1166
1226
|
}
|
|
1167
1227
|
declare const isNumber: (val: unknown) => val is number;
|
|
1168
1228
|
declare const isBigint: (val: any) => val is bigint;
|
|
@@ -1170,74 +1230,80 @@ declare const isString: (val: unknown) => val is string;
|
|
|
1170
1230
|
declare const assertNotEmptyString: (value: unknown) => string;
|
|
1171
1231
|
declare const assertPositiveNumber: (value: unknown) => number;
|
|
1172
1232
|
declare const assertUnsignedBigInt: (value: string) => bigint;
|
|
1173
|
-
|
|
1233
|
+
//#endregion
|
|
1234
|
+
//#region src/workflows/workflowProcessor.d.ts
|
|
1174
1235
|
type WorkflowOptions<Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, StoredMessage extends AnyEvent | AnyCommand = Output> = {
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
};
|
|
1236
|
+
workflow: Workflow<Input, State, Output>;
|
|
1237
|
+
getWorkflowId: (input: Input | RecordedMessage<Input, MessageMetadataType>) => string | null;
|
|
1238
|
+
mapWorkflowId?: (workflowId: string) => string;
|
|
1239
|
+
separateInputInboxFromProcessing?: boolean;
|
|
1240
|
+
inputs: {
|
|
1241
|
+
commands: CanHandle<WorkflowCommand<Input>>;
|
|
1242
|
+
events: CanHandle<WorkflowEvent<Input>>;
|
|
1243
|
+
};
|
|
1244
|
+
outputs: {
|
|
1245
|
+
commands: MessageTypeOf<WorkflowCommand<Output>>[];
|
|
1246
|
+
events: MessageTypeOf<WorkflowEvent<Output>>[];
|
|
1247
|
+
};
|
|
1248
|
+
schema?: {
|
|
1249
|
+
versioning?: {
|
|
1250
|
+
upcast?: (event: StoredMessage) => Input;
|
|
1251
|
+
downcast?: (event: Output) => StoredMessage;
|
|
1192
1252
|
};
|
|
1253
|
+
};
|
|
1193
1254
|
};
|
|
1194
1255
|
type WorkflowProcessorContext = {
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1256
|
+
connection: {
|
|
1257
|
+
messageStore: EventStore;
|
|
1258
|
+
};
|
|
1198
1259
|
};
|
|
1199
1260
|
type WorkflowOutputHandlerResult<Input extends AnyEvent | AnyCommand> = Promise<Input | Input[] | EmmettError | [] | void> | Input | Input[] | EmmettError | [] | void;
|
|
1200
1261
|
type SingleWorkflowOutputHandler<Input extends AnyEvent | AnyCommand, Output extends AnyEvent | AnyCommand, MessageMetaDataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends WorkflowProcessorContext = WorkflowProcessorContext> = (message: Output | RecordedMessage<Output, MessageMetaDataType>, context: HandlerContext) => WorkflowOutputHandlerResult<Input>;
|
|
1201
1262
|
type BatchWorkflowOutputHandler<Input extends AnyEvent | AnyCommand, Output extends AnyEvent | AnyCommand, MessageMetaDataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends WorkflowProcessorContext = WorkflowProcessorContext> = (messages: RecordedMessage<Output, MessageMetaDataType>[], context: HandlerContext) => WorkflowOutputHandlerResult<Input>;
|
|
1202
1263
|
type WorkflowOutputHandlerOptions<Input extends AnyEvent | AnyCommand, Output extends AnyEvent | AnyCommand, MessageMetaDataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends WorkflowProcessorContext = WorkflowProcessorContext> = {
|
|
1203
|
-
|
|
1204
|
-
|
|
1264
|
+
eachMessage: SingleWorkflowOutputHandler<Input, Output, MessageMetaDataType, HandlerContext>;
|
|
1265
|
+
eachBatch?: never;
|
|
1205
1266
|
} | {
|
|
1206
|
-
|
|
1207
|
-
|
|
1267
|
+
eachMessage?: never;
|
|
1268
|
+
eachBatch: BatchWorkflowOutputHandler<Input, Output, MessageMetaDataType, HandlerContext>;
|
|
1208
1269
|
};
|
|
1209
1270
|
type WorkflowOutputHandlerDefinition<Input extends AnyEvent | AnyCommand, Output extends AnyEvent | AnyCommand, HandledOutput extends Output = Output, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends WorkflowProcessorContext = WorkflowProcessorContext> = {
|
|
1210
|
-
|
|
1271
|
+
canHandle: CanHandle<HandledOutput>;
|
|
1211
1272
|
} & WorkflowOutputHandlerOptions<Input, HandledOutput, MessageMetadataType, HandlerContext>;
|
|
1212
1273
|
declare const workflowOutputHandler: <Input extends AnyEvent | AnyCommand, Output extends AnyEvent | AnyCommand, HandledOutput extends Output = Output, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends WorkflowProcessorContext = WorkflowProcessorContext>(handler: WorkflowOutputHandlerDefinition<Input, Output, HandledOutput, MessageMetadataType, HandlerContext>) => WorkflowOutputHandlerDefinition<Input, Output, HandledOutput, MessageMetadataType, HandlerContext>;
|
|
1213
1274
|
type WorkflowProcessorOptions<Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, HandlerContext extends WorkflowProcessorContext = WorkflowProcessorContext, StoredMessage extends AnyEvent | AnyCommand = Output, HandledOutput extends Output = Output> = Omit<BaseMessageProcessorOptions<Input | Output, MessageMetadataType, HandlerContext>, 'type' | 'canHandle' | 'processorId'> & {
|
|
1214
|
-
|
|
1275
|
+
processorId?: string;
|
|
1215
1276
|
} & WorkflowOptions<Input, State, Output, MessageMetadataType, StoredMessage> & {
|
|
1216
|
-
|
|
1217
|
-
|
|
1277
|
+
retry?: WorkflowHandlerRetryOptions;
|
|
1278
|
+
outputHandler?: WorkflowOutputHandlerDefinition<Input, Output, HandledOutput, MessageMetadataType, HandlerContext>;
|
|
1218
1279
|
};
|
|
1219
1280
|
declare const getWorkflowId: (options: {
|
|
1220
|
-
|
|
1281
|
+
workflowName: string;
|
|
1221
1282
|
}) => string;
|
|
1222
1283
|
declare const workflowProcessor: <Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand, MetaDataType extends AnyRecordedMessageMetadata = AnyRecordedMessageMetadata, HandlerContext extends WorkflowProcessorContext = WorkflowProcessorContext, StoredMessage extends AnyEvent | AnyCommand = Output, HandledOutput extends Output = Output>(options: WorkflowProcessorOptions<Input, State, Output, MetaDataType, HandlerContext, StoredMessage, HandledOutput>) => MessageProcessor<Input, MetaDataType, HandlerContext>;
|
|
1223
|
-
|
|
1284
|
+
//#endregion
|
|
1285
|
+
//#region src/workflows/handleWorkflow.d.ts
|
|
1224
1286
|
declare const WorkflowHandlerStreamVersionConflictRetryOptions: AsyncRetryOptions;
|
|
1225
1287
|
type WorkflowHandlerRetryOptions = AsyncRetryOptions | {
|
|
1226
|
-
|
|
1288
|
+
onVersionConflict: true | number | AsyncRetryOptions;
|
|
1227
1289
|
};
|
|
1228
1290
|
type WorkflowHandlerResult<Output extends AnyEvent | AnyCommand, Store extends EventStore> = AppendStreamResultOfEventStore<Store> & {
|
|
1229
|
-
|
|
1291
|
+
newMessages: Output[];
|
|
1230
1292
|
};
|
|
1231
1293
|
type WorkflowHandleOptions<Store extends EventStore> = Parameters<Store['appendToStream']>[2] & {
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
};
|
|
1235
|
-
declare const workflowStreamName: ({
|
|
1236
|
-
|
|
1237
|
-
|
|
1294
|
+
expectedStreamVersion?: ExpectedStreamVersion;
|
|
1295
|
+
retry?: WorkflowHandlerRetryOptions;
|
|
1296
|
+
};
|
|
1297
|
+
declare const workflowStreamName: ({
|
|
1298
|
+
workflowName,
|
|
1299
|
+
workflowId
|
|
1300
|
+
}: {
|
|
1301
|
+
workflowName: string;
|
|
1302
|
+
workflowId: string;
|
|
1238
1303
|
}) => string;
|
|
1239
1304
|
declare const WorkflowHandler: <Input extends AnyEvent | AnyCommand, State, Output extends AnyEvent | AnyCommand, MessageMetadataType extends AnyReadEventMetadata = AnyReadEventMetadata, StoredMessage extends AnyEvent | AnyCommand = Output>(options: WorkflowOptions<Input, State, Output, MessageMetadataType, StoredMessage> & {
|
|
1240
|
-
|
|
1305
|
+
retry?: WorkflowHandlerRetryOptions;
|
|
1241
1306
|
}) => <Store extends EventStore>(store: Store, message: Input | RecordedMessage<Input, MessageMetadataType>, handleOptions?: WorkflowHandleOptions<Store>) => Promise<WorkflowHandlerResult<Output, Store>>;
|
|
1242
|
-
|
|
1243
|
-
export {
|
|
1307
|
+
//#endregion
|
|
1308
|
+
export { AcquireLockOptions, AfterEventStoreCommitHandler, AggregateStreamOptions, AggregateStreamResult, AggregateStreamResultOfEventStore, AggregateStreamResultWithGlobalPosition, AnyCommand, AnyEvent, AnyMessage, AnyReadEvent, AnyReadEventMetadata, AnyRecord, AnyRecordedMessage, AnyRecordedMessageMetadata, AppendStreamResultOfEventStore, AppendToStreamOptions, AppendToStreamResult, AppendToStreamResultWithGlobalPosition, ArgumentMatcher, AssertionError, AsyncAwaiter, AsyncDeciderSpecification, AsyncRetryOptions, BaseMessageProcessorOptions, BatchMessageHandler, BatchMessageHandlerResult, BatchMessageHandlerWithContext, BatchMessageHandlerWithoutContext, BatchRawMessageHandlerWithContext, BatchRawMessageHandlerWithoutContext, BatchRecordedMessageHandlerWithContext, BatchRecordedMessageHandlerWithoutContext, BatchWorkflowOutputHandler, BeforeEventStoreCommitHandler, BoundedAccessGuard, Brand, CanHandle, Checkpointer, Closeable, CombineMetadata, CombinedMessageMetadata, CombinedReadEventMetadata, Command, CommandBus, CommandDataOf, CommandHandler, CommandHandlerOptions, CommandHandlerResult, CommandHandlerRetryOptions, CommandHandlerStreamVersionConflictRetryOptions, CommandMetaDataOf, CommandProcessor, CommandSender, CommandTypeOf, CommonReadEventMetadata, CommonRecordedMessageMetadata, ConcurrencyError, ConcurrencyInMemoryDatabaseError, CreateCommandType, CreateEventType, CurrentMessageProcessorPosition, DATABASE_REQUIRED_ERROR_MESSAGE, DatabaseHandleOptionErrors, DatabaseHandleOptions, DatabaseHandleResult, Decider, DeciderCommandHandler, DeciderCommandHandlerOptions, DeciderSpecification, DeepReadonly, DefaultCommandMetadata, DefaultEventStoreOptions, DefaultRecord, DeleteManyOptions, DeleteManyResult, DeleteOneOptions, DeleteResult, Document, DocumentHandler, EmmettCliCommand, EmmettCliPlugin, EmmettCliPluginRegistration, EmmettError, EmmettPlugin, EmmettPluginConfig, EmmettPluginRegistration, EmmettPluginType, EmmettPluginsConfig, EnhancedOmit, EnqueueTaskOptions, Equatable, ErrorConstructor, Event, EventBus, EventDataOf, EventMetaDataOf, EventStore, EventStoreAppendSchemaOptions, EventStoreReadEventMetadata, EventStoreReadSchemaOptions, EventStoreSchemaOptions, EventStoreSession, EventStoreSessionFactory, EventStoreWrapper, EventSubscription, EventTypeOf, EventsPublisher, ExclusiveAccessGuard, ExpectedDocumentVersion, ExpectedDocumentVersionGeneral, ExpectedDocumentVersionValue, ExpectedStreamVersion, ExpectedStreamVersionGeneral, ExpectedStreamVersionWithValue, ExpectedVersionConflictError, Flavour, FullId, GetCheckpoint, GlobalPosition, GlobalStreamCaughtUp, GlobalStreamCaughtUpType, GlobalSubscriptionEvent, HandleOptions, HandlerOptions, IllegalStateError, InMemoryCheckpointer, InMemoryDatabase, InMemoryDocumentEvolve, InMemoryDocumentsCollection, InMemoryEventStore, InMemoryEventStoreDefaultStreamVersion, InMemoryEventStoreOptions, InMemoryMultiStreamProjectionOptions, InMemoryProcessor, InMemoryProcessorConnectionOptions, InMemoryProcessorEachBatchHandler, InMemoryProcessorEachMessageHandler, InMemoryProcessorHandlerContext, InMemoryProcessorOptions, InMemoryProjectionAssert, InMemoryProjectionDefinition, InMemoryProjectionHandlerContext, InMemoryProjectionHandlerOptions, InMemoryProjectionOptions, InMemoryProjectionSpec, InMemoryProjectionSpecEvent, InMemoryProjectionSpecOptions, InMemoryProjectionSpecWhenOptions, InMemoryProjectorOptions, InMemoryReactorOptions, InMemoryReadEvent, InMemoryReadEventMetadata, InMemorySingleStreamProjectionOptions, InMemoryWithNotNullDocumentEvolve, InMemoryWithNullableDocumentEvolve, InProcessLock, InitializedOnceGuard, InsertManyOptions, InsertManyResult, InsertOneOptions, InsertOneResult, JSONCodec, type JSONCodecOptions, type JSONDeserializeOptions, JSONReplacer, JSONReplacers, JSONReviver, JSONReviverContext, JSONRevivers, type JSONSerializationOptions, type JSONSerializeOptions, JSONSerializer, type JSONSerializerOptions, Lock, LockOptions, Message, MessageBus, MessageConsumer, MessageConsumerOptions, MessageDataOf, MessageDowncast, MessageHandler, MessageKindOf, MessageMetaDataOf, MessageProcessingScope, MessageProcessor, MessageProcessorStartFrom, MessageProcessorType, MessageScheduler, MessageSubscription, MessageTypeOf, MessageUpcast, MockedFunction, Mutable, NO_CONCURRENCY_CHECK, NoRetries, NonNullable$1 as NonNullable, NotFoundError, OnReactorCloseHook, OnReactorInitHook, OnReactorStartHook, OperationResult, OptionalId, OptionalUnlessRequiredId, OptionalUnlessRequiredIdAndVersion, OptionalUnlessRequiredVersion, OptionalVersion, ProcessorCheckpoint, ProcessorHooks, ProjectionDefinition, ProjectionHandler, ProjectionHandlingType, ProjectionInitOptions, ProjectionRegistration, ProjectorOptions, ReactorOptions, ReadEvent, ReadEventMetadata, ReadEventMetadataWithGlobalPosition, ReadEventMetadataWithoutGlobalPosition, ReadProcessorCheckpoint, ReadProcessorCheckpointResult, ReadStreamOptions, ReadStreamResult, RecordedMessage, RecordedMessageMetadata, RecordedMessageMetadataWithGlobalPosition, RecordedMessageMetadataWithoutGlobalPosition, ReleaseLockOptions, ReplaceOneOptions, STREAM_DOES_NOT_EXIST, STREAM_EXISTS, ScheduleOptions, ScheduledMessage, ScheduledMessageProcessor, SerializationCodec, Serializer, ShutdownHandler, SingleMessageHandler, SingleMessageHandlerResult, SingleMessageHandlerWithContext, SingleMessageHandlerWithoutContext, SingleRawMessageHandlerWithContext, SingleRawMessageHandlerWithoutContext, SingleRecordedMessageHandlerWithContext, SingleRecordedMessageHandlerWithoutContext, SingleWorkflowOutputHandler, StoreProcessorCheckpoint, StoreProcessorCheckpointResult, StreamExistsResult, StreamPosition, Task, TaskContext, TaskProcessor, TaskProcessorOptions, TaskQueue, TaskQueueItem, TestEventStream, ThenThrows, TruncateProjection, UpdateManyOptions, UpdateManyResult, UpdateOneOptions, UpdateResult, ValidationError, ValidationErrors, WithGlobalPosition, WithId, WithIdAndVersion, WithVersion, WithoutId, WithoutVersion, Workflow, WorkflowCommand, WorkflowEvent, WorkflowHandleOptions, WorkflowHandler, WorkflowHandlerResult, WorkflowHandlerRetryOptions, WorkflowHandlerStreamVersionConflictRetryOptions, WorkflowInputMessageMetadata, WorkflowMessageAction, WorkflowOptions, WorkflowOutput, WorkflowOutputHandlerDefinition, WorkflowOutputHandlerOptions, WorkflowOutputHandlerResult, WorkflowOutputMessageMetadata, WorkflowProcessorContext, WorkflowProcessorOptions, WorkflowSpecification, WrapEventStore, argMatches, argValue, arrayUtils, assertDeepEqual, assertDefined, assertDoesNotThrow, assertEqual, assertExpectedVersionMatchesCurrent, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotDeepEqual, assertNotEmptyString, assertNotEqual, assertOk, assertPositiveNumber, assertRejects, assertThat, assertThatArray, assertThrows, assertThrowsAsync, assertTrue, assertUnsignedBigInt, asyncAwaiter, asyncProjections, asyncRetry, bigInt, bigIntProcessorCheckpoint, canCreateEventStoreSession, caughtUpEventFrom, command, composeJSONReplacers, composeJSONRevivers, deepEquals, defaultProcessingMessageProcessingScope, defaultProcessorPartition, defaultProcessorVersion, defaultTag, delay, documentExists, downcastRecordedMessage, downcastRecordedMessages, emmettPrefix, event, eventInStream, eventsInStream, expectInMemoryDocuments, filterProjections, formatDateToUtcYYYYMMDD, forwardToMessageBus, getCheckpoint, getInMemoryDatabase, getInMemoryEventStore, getInMemoryMessageBus, getProcessorInstanceId, getProjectorId, getWorkflowId, globalStreamCaughtUp, globalTag, guardBoundedAccess, guardExclusiveAccess, guardInitializedOnce, handleInMemoryProjections, hashText, inMemoryCheckpointer, inMemoryMultiStreamProjection, inMemoryProjection, inMemoryProjector, inMemoryReactor, inMemorySingleStreamProjection, inlineProjections, isBigint, isEquatable, isErrorConstructor, isExpectedVersionConflictError, isGlobalStreamCaughtUp, isNotInternalEvent, isNumber, isPluginConfig, isString, isSubscriptionEvent, isSubset, isValidYYYYMMDD, jsonSerializer, matchesExpectedVersion, merge, message, newEventsInStream, nulloSessionFactory, onShutdown, parseBigIntProcessorCheckpoint, parseDateFromUtcYYYYMMDD, projection, projections, projector, reactor, reduceAsync, sum, toNormalizedString, tryPublishMessagesAfterCommit, unknownTag, upcastRecordedMessage, upcastRecordedMessages, verifyThat, wasMessageHandled, workflowOutputHandler, workflowProcessor, workflowStreamName };
|
|
1309
|
+
//# sourceMappingURL=index.d.ts.map
|