@arki/event-sourcing 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +124 -0
- package/dist/builders/command-handler.d.ts +48 -0
- package/dist/builders/command-handler.d.ts.map +1 -0
- package/dist/builders/command-handler.js +40 -0
- package/dist/builders/command-handler.js.map +1 -0
- package/dist/builders/command.d.ts +39 -0
- package/dist/builders/command.d.ts.map +1 -0
- package/dist/builders/command.js +44 -0
- package/dist/builders/command.js.map +1 -0
- package/dist/builders/decider.d.ts +188 -0
- package/dist/builders/decider.d.ts.map +1 -0
- package/dist/builders/decider.js +252 -0
- package/dist/builders/decider.js.map +1 -0
- package/dist/builders/event.d.ts +39 -0
- package/dist/builders/event.d.ts.map +1 -0
- package/dist/builders/event.js +42 -0
- package/dist/builders/event.js.map +1 -0
- package/dist/builders/index.d.ts +40 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +40 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/builders/process-manager.d.ts +94 -0
- package/dist/builders/process-manager.d.ts.map +1 -0
- package/dist/builders/process-manager.js +131 -0
- package/dist/builders/process-manager.js.map +1 -0
- package/dist/builders/projection.d.ts +92 -0
- package/dist/builders/projection.d.ts.map +1 -0
- package/dist/builders/projection.js +129 -0
- package/dist/builders/projection.js.map +1 -0
- package/dist/builders/stateful-process-manager.d.ts +181 -0
- package/dist/builders/stateful-process-manager.d.ts.map +1 -0
- package/dist/builders/stateful-process-manager.js +280 -0
- package/dist/builders/stateful-process-manager.js.map +1 -0
- package/dist/bus.d.ts +3 -0
- package/dist/bus.d.ts.map +1 -0
- package/dist/bus.js +2 -0
- package/dist/bus.js.map +1 -0
- package/dist/command-flow.d.ts +87 -0
- package/dist/command-flow.d.ts.map +1 -0
- package/dist/command-flow.js +233 -0
- package/dist/command-flow.js.map +1 -0
- package/dist/command.d.ts +38 -0
- package/dist/command.d.ts.map +1 -0
- package/dist/command.js +2 -0
- package/dist/command.js.map +1 -0
- package/dist/debug.d.ts +31 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +31 -0
- package/dist/debug.js.map +1 -0
- package/dist/decide.d.ts +11 -0
- package/dist/decide.d.ts.map +1 -0
- package/dist/decide.js +2 -0
- package/dist/decide.js.map +1 -0
- package/dist/dot.d.ts +90 -0
- package/dist/dot.d.ts.map +1 -0
- package/dist/dot.js +91 -0
- package/dist/dot.js.map +1 -0
- package/dist/error.d.ts +2 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +2 -0
- package/dist/error.js.map +1 -0
- package/dist/event-sourcing-features.d.ts +81 -0
- package/dist/event-sourcing-features.d.ts.map +1 -0
- package/dist/event-sourcing-features.js +139 -0
- package/dist/event-sourcing-features.js.map +1 -0
- package/dist/event.d.ts +25 -0
- package/dist/event.d.ts.map +1 -0
- package/dist/event.js +2 -0
- package/dist/event.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +5 -0
- package/dist/process-manager.d.ts +113 -0
- package/dist/process-manager.d.ts.map +1 -0
- package/dist/process-manager.js +155 -0
- package/dist/process-manager.js.map +1 -0
- package/dist/simple-process-manager.d.ts +37 -0
- package/dist/simple-process-manager.d.ts.map +1 -0
- package/dist/simple-process-manager.js +55 -0
- package/dist/simple-process-manager.js.map +1 -0
- package/dist/src/builders/command-handler.d.ts +48 -0
- package/dist/src/builders/command-handler.d.ts.map +1 -0
- package/dist/src/builders/command.d.ts +39 -0
- package/dist/src/builders/command.d.ts.map +1 -0
- package/dist/src/builders/decider.d.ts +188 -0
- package/dist/src/builders/decider.d.ts.map +1 -0
- package/dist/src/builders/event.d.ts +39 -0
- package/dist/src/builders/event.d.ts.map +1 -0
- package/dist/src/builders/index.d.ts +40 -0
- package/dist/src/builders/index.d.ts.map +1 -0
- package/dist/src/builders/process-manager.d.ts +94 -0
- package/dist/src/builders/process-manager.d.ts.map +1 -0
- package/dist/src/builders/projection.d.ts +92 -0
- package/dist/src/builders/projection.d.ts.map +1 -0
- package/dist/src/builders/stateful-process-manager.d.ts +181 -0
- package/dist/src/builders/stateful-process-manager.d.ts.map +1 -0
- package/dist/src/bus.d.ts +3 -0
- package/dist/src/bus.d.ts.map +1 -0
- package/dist/src/command-flow.d.ts +87 -0
- package/dist/src/command-flow.d.ts.map +1 -0
- package/dist/src/command.d.ts +16 -0
- package/dist/src/command.d.ts.map +1 -0
- package/dist/src/debug.d.ts +31 -0
- package/dist/src/debug.d.ts.map +1 -0
- package/dist/src/decide.d.ts +11 -0
- package/dist/src/decide.d.ts.map +1 -0
- package/dist/src/error.d.ts +2 -0
- package/dist/src/error.d.ts.map +1 -0
- package/dist/src/event.d.ts +25 -0
- package/dist/src/event.d.ts.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/process-manager.d.ts +113 -0
- package/dist/src/process-manager.d.ts.map +1 -0
- package/dist/src/store.d.ts +44 -0
- package/dist/src/store.d.ts.map +1 -0
- package/dist/src/types.d.ts +10 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/store.d.ts +44 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +94 -0
- package/dist/store.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { Command, CommandHandlerResult, CommandHandlerRetryOptions, Decider, DefaultCommandMetadata, DefaultRecord, Event, EventStore, HandleOptions } from '@event-driven-io/emmett';
|
|
2
|
+
import type { z, ZodType, ZodTypeAny } from '@arki/contracts';
|
|
3
|
+
type BuildCommand<CommandType extends string, Data extends DefaultRecord, Metadata extends DefaultCommandMetadata | undefined> = Command<CommandType, Data, Metadata extends undefined ? undefined : Metadata>;
|
|
4
|
+
type HandlerMetadata<Metadata> = Metadata extends undefined ? undefined : Metadata;
|
|
5
|
+
type MetadataInput<Metadata> = Metadata extends undefined ? {
|
|
6
|
+
metadata?: undefined;
|
|
7
|
+
} : {
|
|
8
|
+
metadata: Metadata;
|
|
9
|
+
};
|
|
10
|
+
type StreamResolver<Context, CommandType> = (params: {
|
|
11
|
+
command: CommandType;
|
|
12
|
+
context: Context;
|
|
13
|
+
}) => string;
|
|
14
|
+
export type CommandFlowExecuteOptions<Context, Store extends EventStore, Input extends DefaultRecord, Metadata extends DefaultCommandMetadata | undefined> = {
|
|
15
|
+
context: Context;
|
|
16
|
+
eventStore: Store;
|
|
17
|
+
input: Input;
|
|
18
|
+
streamId?: string;
|
|
19
|
+
handleOptions?: HandleOptions<Store>;
|
|
20
|
+
} & MetadataInput<Metadata>;
|
|
21
|
+
export type CommandFlowHandlerArgs<Context, Store extends EventStore, CommandType, Input extends DefaultRecord, Metadata extends DefaultCommandMetadata | undefined, State, StreamEvent extends Event> = {
|
|
22
|
+
command: CommandType;
|
|
23
|
+
context: Context;
|
|
24
|
+
eventStore: Store;
|
|
25
|
+
input: Input;
|
|
26
|
+
metadata: HandlerMetadata<Metadata>;
|
|
27
|
+
streamId?: string;
|
|
28
|
+
handleOptions?: HandleOptions<Store>;
|
|
29
|
+
run: (streamId: string, options?: {
|
|
30
|
+
handleOptions?: HandleOptions<Store>;
|
|
31
|
+
}) => Promise<CommandHandlerResult<State, StreamEvent, Store>>;
|
|
32
|
+
};
|
|
33
|
+
export type CommandFlowHandler<Context, Store extends EventStore, CommandType, Input extends DefaultRecord, Metadata extends DefaultCommandMetadata | undefined, State, StreamEvent extends Event, ReturnType> = (args: CommandFlowHandlerArgs<Context, Store, CommandType, Input, Metadata, State, StreamEvent>) => Promise<ReturnType> | ReturnType;
|
|
34
|
+
type CommandFlowExecutor<Context, Store extends EventStore, Input extends DefaultRecord, Metadata extends DefaultCommandMetadata | undefined, ReturnType> = (options: CommandFlowExecuteOptions<Context, Store, Input, Metadata>) => Promise<ReturnType>;
|
|
35
|
+
export type CommandFlow<Context, Store extends EventStore, CommandType extends string, Input extends DefaultRecord, Metadata extends DefaultCommandMetadata | undefined, State, StreamEvent extends Event, ReturnType> = CommandFlowExecutor<Context, Store, Input, Metadata, ReturnType> & {
|
|
36
|
+
readonly commandType: CommandType;
|
|
37
|
+
readonly schemas: {
|
|
38
|
+
input: ZodTypeAny;
|
|
39
|
+
metadata?: ZodTypeAny;
|
|
40
|
+
event: ZodTypeAny;
|
|
41
|
+
state?: ZodTypeAny;
|
|
42
|
+
};
|
|
43
|
+
readonly decider: Decider<State, BuildCommand<CommandType, Input, Metadata>, StreamEvent>;
|
|
44
|
+
readonly createCommand: (input: Input, metadata?: HandlerMetadata<Metadata>) => BuildCommand<CommandType, Input, Metadata>;
|
|
45
|
+
readonly runCommand: (options: {
|
|
46
|
+
eventStore: Store;
|
|
47
|
+
command: BuildCommand<CommandType, Input, Metadata>;
|
|
48
|
+
streamId: string;
|
|
49
|
+
handleOptions?: HandleOptions<Store>;
|
|
50
|
+
}) => Promise<CommandHandlerResult<State, StreamEvent, Store>>;
|
|
51
|
+
readonly resolveStreamId?: StreamResolver<Context, BuildCommand<CommandType, Input, Metadata>>;
|
|
52
|
+
};
|
|
53
|
+
export declare class CommandFlowBuilder<Context, Store extends EventStore, CommandType extends string, Input extends DefaultRecord = DefaultRecord, Metadata extends DefaultCommandMetadata | undefined = undefined, State = unknown, StreamEvent extends Event = Event> {
|
|
54
|
+
private readonly commandType;
|
|
55
|
+
private inputSchema?;
|
|
56
|
+
private metadataSchema?;
|
|
57
|
+
private eventSchema?;
|
|
58
|
+
private stateSchema?;
|
|
59
|
+
private currentDecider?;
|
|
60
|
+
private streamResolver?;
|
|
61
|
+
private mapToStreamId?;
|
|
62
|
+
private retryOptions?;
|
|
63
|
+
constructor(commandType: CommandType);
|
|
64
|
+
input<Schema extends ZodType<DefaultRecord>>(schema: Schema): CommandFlowBuilder<Context, Store, CommandType, z.infer<Schema>, Metadata, State, StreamEvent>;
|
|
65
|
+
metadata<Schema extends ZodType<DefaultCommandMetadata>>(schema: Schema): CommandFlowBuilder<Context, Store, CommandType, Input, z.infer<Schema>, State, StreamEvent>;
|
|
66
|
+
events<Schema extends ZodType<Event>>(schema: Schema): CommandFlowBuilder<Context, Store, CommandType, Input, Metadata, State, z.infer<Schema>>;
|
|
67
|
+
state<Schema extends ZodType>(schema: Schema): CommandFlowBuilder<Context, Store, CommandType, Input, Metadata, z.infer<Schema>, StreamEvent>;
|
|
68
|
+
decider<NextState>(decider: Decider<NextState, BuildCommand<CommandType, Input, Metadata>, StreamEvent>): CommandFlowBuilder<Context, Store, CommandType, Input, Metadata, NextState, StreamEvent>;
|
|
69
|
+
stream(resolver: StreamResolver<Context, BuildCommand<CommandType, Input, Metadata>>): this;
|
|
70
|
+
mapStreamId(mapper: (id: string) => string): this;
|
|
71
|
+
retry(options: CommandHandlerRetryOptions): this;
|
|
72
|
+
handler<ReturnType = CommandHandlerResult<State, StreamEvent, Store>>(handler?: CommandFlowHandler<Context, Store, BuildCommand<CommandType, Input, Metadata>, Input, Metadata, State, StreamEvent, ReturnType>): CommandFlow<Context, Store, CommandType, Input, Metadata, State, StreamEvent, ReturnType>;
|
|
73
|
+
private ensureInputSchema;
|
|
74
|
+
private ensureEventSchema;
|
|
75
|
+
private ensureDecider;
|
|
76
|
+
}
|
|
77
|
+
type Toolkit<Context, Store extends EventStore> = {
|
|
78
|
+
command<CommandType extends string>(commandType: CommandType): CommandFlowBuilder<Context, Store, CommandType, DefaultRecord, undefined, unknown, Event>;
|
|
79
|
+
};
|
|
80
|
+
export declare const es: {
|
|
81
|
+
$context<Context, Store extends EventStore = EventStore<import("@event-driven-io/emmett").AnyRecordedMessageMetadata>>(): Toolkit<Context, Store>;
|
|
82
|
+
};
|
|
83
|
+
export declare const eventSourcing: {
|
|
84
|
+
$context<Context, Store extends EventStore = EventStore<import("@event-driven-io/emmett").AnyRecordedMessageMetadata>>(): Toolkit<Context, Store>;
|
|
85
|
+
};
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=command-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-flow.d.ts","sourceRoot":"","sources":["../../src/command-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Command, DeciderCommandHandler, Event } from '@event-driven-io/emmett';
|
|
2
|
+
export { DeciderCommandHandler } from '@event-driven-io/emmett';
|
|
3
|
+
export type { Command, CommandBus, CommandHandlerOptions, CommandHandlerResult, CommandHandlerRetryOptions, CommandTypeOf, DefaultCommandMetadata, } from '@event-driven-io/emmett';
|
|
4
|
+
/**
|
|
5
|
+
* Generic type for a command handler function
|
|
6
|
+
*/
|
|
7
|
+
export type CommandHandlerType<C extends Command, State, StreamEvent extends Event> = ReturnType<typeof DeciderCommandHandler<State, C, StreamEvent>>;
|
|
8
|
+
/**
|
|
9
|
+
* Command handler configuration
|
|
10
|
+
*/
|
|
11
|
+
export type CommandHandlerConfig<C extends Command = Command, State = unknown, StreamEvent extends Event = Event> = {
|
|
12
|
+
commandType: string;
|
|
13
|
+
handler: CommandHandlerType<C, State, StreamEvent>;
|
|
14
|
+
getStreamName: (command: C) => string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,OAAO,EACP,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,aAAa,EACb,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,WAAW,SAAS,KAAK,IAAI,UAAU,CAC9F,OAAO,qBAAqB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,CACpD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,WAAW,SAAS,KAAK,GAAG,KAAK,IAAI;IAClH,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACnD,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC;CACvC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { debug } from '@arki/logger/debug';
|
|
2
|
+
/**
|
|
3
|
+
* Debug logger for event store operations
|
|
4
|
+
* Enable with: DEBUG=es:store
|
|
5
|
+
*/
|
|
6
|
+
export declare const debugStore: debug.Debugger;
|
|
7
|
+
/**
|
|
8
|
+
* Debug logger for command flow operations
|
|
9
|
+
* Enable with: DEBUG=es:command
|
|
10
|
+
*/
|
|
11
|
+
export declare const debugCommand: debug.Debugger;
|
|
12
|
+
/**
|
|
13
|
+
* Debug logger for projection operations
|
|
14
|
+
* Enable with: DEBUG=es:projection
|
|
15
|
+
*/
|
|
16
|
+
export declare const debugProjection: debug.Debugger;
|
|
17
|
+
/**
|
|
18
|
+
* Debug logger for process manager/saga operations
|
|
19
|
+
* Enable with: DEBUG=es:process
|
|
20
|
+
*/
|
|
21
|
+
export declare const debugProcess: debug.Debugger;
|
|
22
|
+
/**
|
|
23
|
+
* Debug logger for builder operations
|
|
24
|
+
* Enable with: DEBUG=es:builder
|
|
25
|
+
*/
|
|
26
|
+
export declare const debugBuilder: debug.Debugger;
|
|
27
|
+
/**
|
|
28
|
+
* Enable all event sourcing debug logs
|
|
29
|
+
* Enable with: DEBUG=es:*
|
|
30
|
+
*/
|
|
31
|
+
//# sourceMappingURL=debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,UAAU,gBAAoB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,YAAY,gBAAsB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,eAAe,gBAAyB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,YAAY,gBAAsB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,YAAY,gBAAsB,CAAC;AAEhD;;;GAGG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-export of Emmett's `Decider` type, which represents the behaviour contract
|
|
3
|
+
* of an event-sourced aggregate: `initialState`, `evolve`, and `decide`.
|
|
4
|
+
*
|
|
5
|
+
* Within this package we often refer to the same concept as an **aggregate**
|
|
6
|
+
* to emphasise that it owns state and command handling. Stick to `Decider` when
|
|
7
|
+
* interacting with upstream Emmett utilities, but feel free to adopt the
|
|
8
|
+
* aggregate terminology in your own domain code for clarity.
|
|
9
|
+
*/
|
|
10
|
+
export { type Decider } from '@event-driven-io/emmett';
|
|
11
|
+
//# sourceMappingURL=decide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../../src/decide.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DefaultRecord } from './types';
|
|
2
|
+
export type { EventsPublisher, EventStore, ReadEvent, ReadEventMetadataWithGlobalPosition, } from '@event-driven-io/emmett';
|
|
3
|
+
export type Event<EventType extends string = string, EventData extends DefaultRecord = DefaultRecord, EventMetaData extends DefaultRecord | undefined = undefined> = Readonly<{
|
|
4
|
+
type: EventType;
|
|
5
|
+
data: EventData;
|
|
6
|
+
metadata?: EventMetaData;
|
|
7
|
+
kind?: 'Event';
|
|
8
|
+
}>;
|
|
9
|
+
export type AnyEvent = Event<any, any, any>;
|
|
10
|
+
export type EventTypeOf<T extends Event> = T['type'];
|
|
11
|
+
export type EventDataOf<T extends Event> = T['data'];
|
|
12
|
+
export type EventMetaDataOf<T extends Event> = T extends {
|
|
13
|
+
metadata: infer M;
|
|
14
|
+
} ? M : undefined;
|
|
15
|
+
export type CreateEventType<EventType extends string, EventData extends DefaultRecord, EventMetaData extends DefaultRecord | undefined = undefined> = Readonly<EventMetaData extends undefined ? {
|
|
16
|
+
type: EventType;
|
|
17
|
+
data: EventData;
|
|
18
|
+
} : {
|
|
19
|
+
type: EventType;
|
|
20
|
+
data: EventData;
|
|
21
|
+
metadata: EventMetaData;
|
|
22
|
+
}> & {
|
|
23
|
+
readonly kind?: 'Event';
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,YAAY,EACV,eAAe,EACf,UAAU,EACV,SAAS,EACT,mCAAmC,GACpC,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,KAAK,CACf,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,aAAa,SAAS,aAAa,GAAG,SAAS,GAAG,SAAS,IACzD,QAAQ,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;IACvD,QAAQ,EAAE,MAAM,CAAC,CAAC;CACnB,GACG,CAAC,GACD,SAAS,CAAC;AACd,MAAM,MAAM,eAAe,CACzB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,aAAa,EAC/B,aAAa,SAAS,aAAa,GAAG,SAAS,GAAG,SAAS,IACzD,QAAQ,CACV,aAAa,SAAS,SAAS,GAC3B;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;CACjB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;CACzB,CACN,GAAG;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { AnyEvent, DefaultRecord, Event, EventTypeOf, GlobalPositionTypeOfRecordedMessageMetadata, MessageBus, MessageProcessorStartFrom, ReadEventMetadataWithGlobalPosition } from '@event-driven-io/emmett';
|
|
2
|
+
/**
|
|
3
|
+
* Process Manager (Saga) handler context
|
|
4
|
+
* This context is passed to the process manager handler function
|
|
5
|
+
*/
|
|
6
|
+
export type ProcessManagerContext = DefaultRecord & {
|
|
7
|
+
/** Message bus for sending commands in response to events */
|
|
8
|
+
messageBus: MessageBus;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Process Manager handler function
|
|
12
|
+
*/
|
|
13
|
+
export type ProcessManagerHandler<EventType extends Event = AnyEvent, Context extends ProcessManagerContext = ProcessManagerContext> = (events: EventType[], context: Context) => Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Process Manager configuration options
|
|
16
|
+
*/
|
|
17
|
+
export type ProcessManagerOptions<EventType extends Event = AnyEvent, Context extends ProcessManagerContext = ProcessManagerContext, CheckpointType = GlobalPositionTypeOfRecordedMessageMetadata<ReadEventMetadataWithGlobalPosition>> = {
|
|
18
|
+
/** Unique identifier for the process manager */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Event types the process manager will handle */
|
|
21
|
+
eventTypes: EventTypeOf<EventType>[];
|
|
22
|
+
/** Handler function that processes events */
|
|
23
|
+
handler: ProcessManagerHandler<EventType, Context>;
|
|
24
|
+
/**
|
|
25
|
+
* Optional hooks for process manager lifecycle
|
|
26
|
+
*/
|
|
27
|
+
hooks?: {
|
|
28
|
+
/** Called when the process manager starts */
|
|
29
|
+
onStart?: (context: Context) => Promise<void>;
|
|
30
|
+
/** Called when the process manager closes */
|
|
31
|
+
onClose?: () => Promise<void>;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Optional configuration for resuming from specific checkpoint
|
|
35
|
+
* Useful for long-running process managers
|
|
36
|
+
*/
|
|
37
|
+
startFrom?: MessageProcessorStartFrom<CheckpointType>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Creates a process manager (saga) that subscribes to events and orchestrates responses
|
|
41
|
+
* This is built on top of Emmett's reactor functionality
|
|
42
|
+
*/
|
|
43
|
+
export declare function createProcessManager<EventType extends Event = AnyEvent, Context extends ProcessManagerContext = ProcessManagerContext, CheckpointType = GlobalPositionTypeOfRecordedMessageMetadata<ReadEventMetadataWithGlobalPosition>>(options: ProcessManagerOptions<EventType, Context, CheckpointType>): import("@event-driven-io/emmett").MessageProcessor<EventType, ReadEventMetadataWithGlobalPosition, Context, CheckpointType>;
|
|
44
|
+
/**
|
|
45
|
+
* State that can be maintained by a stateful process manager
|
|
46
|
+
*/
|
|
47
|
+
export type ProcessManagerState = DefaultRecord;
|
|
48
|
+
/**
|
|
49
|
+
* Handler function for a stateful process manager
|
|
50
|
+
*/
|
|
51
|
+
export type StatefulProcessManagerHandler<EventType extends Event = AnyEvent, StateType extends ProcessManagerState = ProcessManagerState, Context extends ProcessManagerContext = ProcessManagerContext> = (events: EventType[], state: StateType, context: Context) => Promise<StateType>;
|
|
52
|
+
/**
|
|
53
|
+
* Options for creating a stateful process manager
|
|
54
|
+
*/
|
|
55
|
+
export type StatefulProcessManagerOptions<EventType extends Event = AnyEvent, StateType extends ProcessManagerState = ProcessManagerState, Context extends ProcessManagerContext = ProcessManagerContext, CheckpointType = GlobalPositionTypeOfRecordedMessageMetadata<ReadEventMetadataWithGlobalPosition>> = Omit<ProcessManagerOptions<EventType, Context, CheckpointType>, 'handler'> & {
|
|
56
|
+
/** Initial state for the process manager */
|
|
57
|
+
initialState: StateType;
|
|
58
|
+
/** Handler function that processes events and updates state */
|
|
59
|
+
handler: StatefulProcessManagerHandler<EventType, StateType, Context>;
|
|
60
|
+
/**
|
|
61
|
+
* Store function that persists process manager state
|
|
62
|
+
* Called after each successful event processing
|
|
63
|
+
*/
|
|
64
|
+
storeState?: (state: StateType, processorId: string) => Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Load function that retrieves process manager state
|
|
67
|
+
* Called during initialization
|
|
68
|
+
*/
|
|
69
|
+
loadState?: (processorId: string) => Promise<StateType | null>;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Creates a stateful process manager that maintains its own state
|
|
73
|
+
* This is useful for tracking saga state across event processing
|
|
74
|
+
*/
|
|
75
|
+
export declare function createStatefulProcessManager<EventType extends Event = AnyEvent, StateType extends ProcessManagerState = ProcessManagerState, Context extends ProcessManagerContext = ProcessManagerContext, CheckpointType = GlobalPositionTypeOfRecordedMessageMetadata<ReadEventMetadataWithGlobalPosition>>(options: StatefulProcessManagerOptions<EventType, StateType, Context, CheckpointType>): import("@event-driven-io/emmett").MessageProcessor<EventType, ReadEventMetadataWithGlobalPosition, Context, CheckpointType>;
|
|
76
|
+
/**
|
|
77
|
+
* Function to generate a unique idempotency key for an event
|
|
78
|
+
* Used to ensure that a process manager only processes an event once
|
|
79
|
+
*
|
|
80
|
+
* @param event The event to generate an idempotency key for
|
|
81
|
+
* @param processManagerId Optional identifier for the process manager
|
|
82
|
+
* @returns A string that can be used as an idempotency key
|
|
83
|
+
*/
|
|
84
|
+
export declare function generateIdempotencyKey(event: Event<any, any, ReadEventMetadataWithGlobalPosition>, processManagerId?: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* Interface for a function to check if an event has already been processed
|
|
87
|
+
*/
|
|
88
|
+
export type IdempotencyCheck = (key: string) => Promise<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* Interface for a function to mark an event as processed
|
|
91
|
+
*/
|
|
92
|
+
export type MarkProcessed = (key: string) => Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Options for idempotent event processing
|
|
95
|
+
*/
|
|
96
|
+
export type IdempotentProcessingOptions = {
|
|
97
|
+
/** Function to check if an event has already been processed */
|
|
98
|
+
checkProcessed: IdempotencyCheck;
|
|
99
|
+
/** Function to mark an event as processed */
|
|
100
|
+
markProcessed: MarkProcessed;
|
|
101
|
+
/** Optional process manager ID to include in the idempotency key */
|
|
102
|
+
processManagerId?: string;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Higher-order function that wraps a process manager handler to provide idempotent processing
|
|
106
|
+
* This ensures that each event is only processed once, even if it's received multiple times
|
|
107
|
+
*
|
|
108
|
+
* @param handler The original process manager handler
|
|
109
|
+
* @param options Options for idempotent processing
|
|
110
|
+
* @returns A wrapped handler that implements idempotent processing
|
|
111
|
+
*/
|
|
112
|
+
export declare function withIdempotentProcessing<EventType extends Event<any, any, ReadEventMetadataWithGlobalPosition> = Event<any, any, ReadEventMetadataWithGlobalPosition>, Context extends ProcessManagerContext = ProcessManagerContext>(handler: ProcessManagerHandler<EventType, Context>, options: IdempotentProcessingOptions): ProcessManagerHandler<EventType, Context>;
|
|
113
|
+
//# sourceMappingURL=process-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../../src/process-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from '@arki/contracts';
|
|
2
|
+
import type { CanHandle, Event, ReadEvent } from '@event-driven-io/emmett';
|
|
3
|
+
import type { PostgresEventStore, PostgresEventStoreOptions, PostgreSQLProjectionHandlerContext, PostgresReadEventMetadata } from '@event-driven-io/emmett-postgresql';
|
|
4
|
+
import type { TablesRelationalConfig } from 'drizzle-orm';
|
|
5
|
+
import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
|
|
6
|
+
export type PostgresReadEvent<EventType extends Event> = ReadEvent<EventType, PostgresReadEventMetadata>;
|
|
7
|
+
export { defaultPostgreSQLOptions, PostgreSQLEventStoreDefaultStreamVersion, getPostgreSQLEventStore, postgreSQLProjection, } from '@event-driven-io/emmett-postgresql';
|
|
8
|
+
export declare const postgresEventStoreConfigSchema: z.ZodObject<{
|
|
9
|
+
connectionString: z.ZodString;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type PostgresEventStoreConfig = z.infer<typeof postgresEventStoreConfigSchema>;
|
|
12
|
+
export declare const postgresEventStoreOptionsSchema: z.ZodObject<{
|
|
13
|
+
projections: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
14
|
+
schema: z.ZodOptional<z.ZodObject<{
|
|
15
|
+
autoMigration: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$loose>>;
|
|
17
|
+
connectionOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
18
|
+
hooks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
19
|
+
}, z.core.$loose>;
|
|
20
|
+
export type PostgresEventStoreOptionsInput = z.infer<typeof postgresEventStoreOptionsSchema>;
|
|
21
|
+
export type EventStoreWithCleanup = {
|
|
22
|
+
eventStore: PostgresEventStore;
|
|
23
|
+
close: () => Promise<void>;
|
|
24
|
+
};
|
|
25
|
+
export declare const getEventStore: (connectionString: string, options?: PostgresEventStoreOptions) => EventStoreWithCleanup;
|
|
26
|
+
export declare const normalizePostgresEventStoreOptions: (options?: unknown) => PostgresEventStoreOptions;
|
|
27
|
+
export declare const createPostgresEventStore: (config: unknown, options?: unknown) => PostgresEventStore;
|
|
28
|
+
export type DrizzleProjectionHandlerContext<TSchema extends TablesRelationalConfig> = PostgreSQLProjectionHandlerContext & {
|
|
29
|
+
db: NodePgDatabase<TSchema>;
|
|
30
|
+
};
|
|
31
|
+
export { projections, type CanHandle } from '@event-driven-io/emmett';
|
|
32
|
+
export declare const drizzleProjection: <EventType extends Event, TSchema extends TablesRelationalConfig>(db: NodePgDatabase<TSchema>, { handle, canHandle, }: {
|
|
33
|
+
handle: (events: PostgresReadEvent<EventType>[], context: DrizzleProjectionHandlerContext<TSchema>) => Promise<void>;
|
|
34
|
+
canHandle: CanHandle<EventType>;
|
|
35
|
+
}) => import("@event-driven-io/emmett-postgresql").PostgreSQLProjectionDefinition<EventType>;
|
|
36
|
+
export type DrizzleProjectionHandlerContextWithRepo<TRepos> = PostgreSQLProjectionHandlerContext & {
|
|
37
|
+
repos: TRepos;
|
|
38
|
+
};
|
|
39
|
+
export declare const drizzleWithRepoProjection: <EventType extends Event, TRepos>(repos: TRepos, { handle, canHandle, }: {
|
|
40
|
+
handle: (events: PostgresReadEvent<EventType>[], context: DrizzleProjectionHandlerContextWithRepo<TRepos>) => Promise<void>;
|
|
41
|
+
canHandle: CanHandle<EventType>;
|
|
42
|
+
}) => import("@event-driven-io/emmett-postgresql").PostgreSQLProjectionDefinition<EventType>;
|
|
43
|
+
export { type PostgresEventStore, type PostgresEventStoreConnectionOptions, type PostgreSQLProjectionHandlerContext, type PostgresReadEventMetadata } from '@event-driven-io/emmett-postgresql';
|
|
44
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EACV,kBAAkB,EAClB,yBAAyB,EACzB,kCAAkC,EAClC,yBAAyB,EAC1B,MAAM,oCAAoC,CAAC;AAM5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;AAEzG,OAAO,EACL,wBAAwB,EACxB,wCAAwC,EACxC,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,8BAA8B;;iBAEzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,+BAA+B;;;;;;;iBAY5B,CAAC;AAEjB,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAa7F,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,kBAAkB,MAAM,EACxB,UAAS,yBAAoD,KAC5D,qBAuBF,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAAI,UAAU,OAAO,KAAG,yBAGpE,CAAC;AAEJ,eAAO,MAAM,wBAAwB,GACnC,QAAQ,OAAO,EACf,UAAU,OAAO,KAChB,kBAWF,CAAC;AAEF,MAAM,MAAM,+BAA+B,CAAC,OAAO,SAAS,sBAAsB,IAChF,kCAAkC,GAAG;IACnC,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAC7B,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEtE,eAAO,MAAM,iBAAiB,GAAI,SAAS,SAAS,KAAK,EAAE,OAAO,SAAS,sBAAsB,EAC/F,IAAI,cAAc,CAAC,OAAO,CAAC,EAC3B,wBAGG;IACD,MAAM,EAAE,CACN,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,EACtC,OAAO,EAAE,+BAA+B,CAAC,OAAO,CAAC,KAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACjC,2FAcF,CAAC;AAEF,MAAM,MAAM,uCAAuC,CAAC,MAAM,IAAI,kCAAkC,GAAG;IACjG,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,SAAS,SAAS,KAAK,EAAE,MAAM,EACvE,OAAO,MAAM,EACb,wBAGG;IACD,MAAM,EAAE,CACN,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,EACtC,OAAO,EAAE,uCAAuC,CAAC,MAAM,CAAC,KACrD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACjC,2FAcF,CAAC;AAwLF,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mCAAmC,EACxC,KAAK,kCAAkC,EACvC,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type Brand<K, T> = K & {
|
|
2
|
+
readonly __brand: T;
|
|
3
|
+
};
|
|
4
|
+
export type Flavour<K, T> = K & {
|
|
5
|
+
readonly __brand?: T;
|
|
6
|
+
};
|
|
7
|
+
export type DefaultRecord = Record<string, unknown>;
|
|
8
|
+
export type AnyRecord = Record<string, any>;
|
|
9
|
+
export type NonNullable$1<T> = T extends null | undefined ? never : T;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC"}
|
package/dist/store.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from '@arki/contracts';
|
|
2
|
+
import type { CanHandle, Event, ReadEvent } from '@event-driven-io/emmett';
|
|
3
|
+
import type { PostgresEventStore, PostgresEventStoreOptions, PostgreSQLProjectionHandlerContext, PostgresReadEventMetadata } from '@event-driven-io/emmett-postgresql';
|
|
4
|
+
import type { TablesRelationalConfig } from 'drizzle-orm';
|
|
5
|
+
import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
|
|
6
|
+
export type PostgresReadEvent<EventType extends Event> = ReadEvent<EventType, PostgresReadEventMetadata>;
|
|
7
|
+
export { defaultPostgreSQLOptions, PostgreSQLEventStoreDefaultStreamVersion, getPostgreSQLEventStore, postgreSQLProjection, } from '@event-driven-io/emmett-postgresql';
|
|
8
|
+
export declare const postgresEventStoreConfigSchema: z.ZodObject<{
|
|
9
|
+
connectionString: z.ZodString;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type PostgresEventStoreConfig = z.infer<typeof postgresEventStoreConfigSchema>;
|
|
12
|
+
export declare const postgresEventStoreOptionsSchema: z.ZodObject<{
|
|
13
|
+
projections: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
14
|
+
schema: z.ZodOptional<z.ZodObject<{
|
|
15
|
+
autoMigration: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$loose>>;
|
|
17
|
+
connectionOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
18
|
+
hooks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
19
|
+
}, z.core.$loose>;
|
|
20
|
+
export type PostgresEventStoreOptionsInput = z.infer<typeof postgresEventStoreOptionsSchema>;
|
|
21
|
+
export type EventStoreWithCleanup = {
|
|
22
|
+
eventStore: PostgresEventStore;
|
|
23
|
+
close: () => Promise<void>;
|
|
24
|
+
};
|
|
25
|
+
export declare const getEventStore: (connectionString: string, options?: PostgresEventStoreOptions) => EventStoreWithCleanup;
|
|
26
|
+
export declare const normalizePostgresEventStoreOptions: (options?: unknown) => PostgresEventStoreOptions;
|
|
27
|
+
export declare const createPostgresEventStore: (config: unknown, options?: unknown) => PostgresEventStore;
|
|
28
|
+
export type DrizzleProjectionHandlerContext<TSchema extends TablesRelationalConfig> = PostgreSQLProjectionHandlerContext & {
|
|
29
|
+
db: NodePgDatabase<TSchema>;
|
|
30
|
+
};
|
|
31
|
+
export { projections, type CanHandle } from '@event-driven-io/emmett';
|
|
32
|
+
export declare const drizzleProjection: <EventType extends Event, TSchema extends TablesRelationalConfig>(db: NodePgDatabase<TSchema>, { handle, canHandle, }: {
|
|
33
|
+
handle: (events: PostgresReadEvent<EventType>[], context: DrizzleProjectionHandlerContext<TSchema>) => Promise<void>;
|
|
34
|
+
canHandle: CanHandle<EventType>;
|
|
35
|
+
}) => import("@event-driven-io/emmett-postgresql").PostgreSQLProjectionDefinition<EventType>;
|
|
36
|
+
export type DrizzleProjectionHandlerContextWithRepo<TRepos> = PostgreSQLProjectionHandlerContext & {
|
|
37
|
+
repos: TRepos;
|
|
38
|
+
};
|
|
39
|
+
export declare const drizzleWithRepoProjection: <EventType extends Event, TRepos>(repos: TRepos, { handle, canHandle, }: {
|
|
40
|
+
handle: (events: PostgresReadEvent<EventType>[], context: DrizzleProjectionHandlerContextWithRepo<TRepos>) => Promise<void>;
|
|
41
|
+
canHandle: CanHandle<EventType>;
|
|
42
|
+
}) => import("@event-driven-io/emmett-postgresql").PostgreSQLProjectionDefinition<EventType>;
|
|
43
|
+
export { type PostgresEventStore, type PostgresEventStoreConnectionOptions, type PostgreSQLProjectionHandlerContext, type PostgresReadEventMetadata } from '@event-driven-io/emmett-postgresql';
|
|
44
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EACV,kBAAkB,EAClB,yBAAyB,EACzB,kCAAkC,EAClC,yBAAyB,EAC1B,MAAM,oCAAoC,CAAC;AAM5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;AAEzG,OAAO,EACL,wBAAwB,EACxB,wCAAwC,EACxC,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,8BAA8B;;iBAEzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,+BAA+B;;;;;;;iBAY5B,CAAC;AAEjB,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAa7F,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,kBAAkB,MAAM,EACxB,UAAS,yBAAoD,KAC5D,qBAuBF,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAAI,UAAU,OAAO,KAAG,yBAGpE,CAAC;AAEJ,eAAO,MAAM,wBAAwB,GACnC,QAAQ,OAAO,EACf,UAAU,OAAO,KAChB,kBAWF,CAAC;AAEF,MAAM,MAAM,+BAA+B,CAAC,OAAO,SAAS,sBAAsB,IAChF,kCAAkC,GAAG;IACnC,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAC7B,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEtE,eAAO,MAAM,iBAAiB,GAAI,SAAS,SAAS,KAAK,EAAE,OAAO,SAAS,sBAAsB,EAC/F,IAAI,cAAc,CAAC,OAAO,CAAC,EAC3B,wBAGG;IACD,MAAM,EAAE,CACN,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,EACtC,OAAO,EAAE,+BAA+B,CAAC,OAAO,CAAC,KAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACjC,2FAcF,CAAC;AAEF,MAAM,MAAM,uCAAuC,CAAC,MAAM,IAAI,kCAAkC,GAAG;IACjG,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,SAAS,SAAS,KAAK,EAAE,MAAM,EACvE,OAAO,MAAM,EACb,wBAGG;IACD,MAAM,EAAE,CACN,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,EACtC,OAAO,EAAE,uCAAuC,CAAC,MAAM,CAAC,KACrD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACjC,2FAcF,CAAC;AAwLF,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mCAAmC,EACxC,KAAK,kCAAkC,EACvC,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC"}
|
package/dist/store.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { z } from '@arki/contracts';
|
|
2
|
+
import { defaultPostgreSQLOptions, getPostgreSQLEventStore, postgreSQLProjection, } from '@event-driven-io/emmett-postgresql';
|
|
3
|
+
import { debugProjection, debugStore } from './debug.js';
|
|
4
|
+
export { defaultPostgreSQLOptions, PostgreSQLEventStoreDefaultStreamVersion, getPostgreSQLEventStore, postgreSQLProjection, } from '@event-driven-io/emmett-postgresql';
|
|
5
|
+
export const postgresEventStoreConfigSchema = z.object({
|
|
6
|
+
connectionString: z.string().min(1, 'PostgreSQL connection string is required'),
|
|
7
|
+
});
|
|
8
|
+
export const postgresEventStoreOptionsSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
projections: z.array(z.unknown()).optional(),
|
|
11
|
+
schema: z
|
|
12
|
+
.object({
|
|
13
|
+
autoMigration: z.string().min(1).optional(),
|
|
14
|
+
})
|
|
15
|
+
.passthrough()
|
|
16
|
+
.optional(),
|
|
17
|
+
connectionOptions: z.record(z.string(), z.unknown()).optional(),
|
|
18
|
+
hooks: z.record(z.string(), z.unknown()).optional(),
|
|
19
|
+
})
|
|
20
|
+
.passthrough();
|
|
21
|
+
const mergeEventStoreOptions = (options) => {
|
|
22
|
+
if (!options)
|
|
23
|
+
return { ...defaultPostgreSQLOptions };
|
|
24
|
+
return {
|
|
25
|
+
...defaultPostgreSQLOptions,
|
|
26
|
+
...options,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export const getEventStore = (connectionString, options = defaultPostgreSQLOptions) => {
|
|
30
|
+
debugStore('Creating event store with connection string and options');
|
|
31
|
+
const eventStore = getPostgreSQLEventStore(connectionString, options);
|
|
32
|
+
debugStore('Event store created successfully');
|
|
33
|
+
return {
|
|
34
|
+
eventStore,
|
|
35
|
+
close: async () => {
|
|
36
|
+
debugStore('Closing event store connection pool');
|
|
37
|
+
try {
|
|
38
|
+
// The emmett-postgresql event store has a close method that closes the underlying Pool
|
|
39
|
+
if (eventStore && typeof eventStore.close === 'function') {
|
|
40
|
+
await eventStore.close();
|
|
41
|
+
debugStore('Event store connection pool closed successfully');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
debugStore('Event store does not have a close method, skipping');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
debugStore('Error closing event store: %O', error);
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export const normalizePostgresEventStoreOptions = (options) => mergeEventStoreOptions(options === undefined ? undefined : postgresEventStoreOptionsSchema.parse(options));
|
|
55
|
+
export const createPostgresEventStore = (config, options) => {
|
|
56
|
+
debugStore('Creating Postgres event store from config');
|
|
57
|
+
const { connectionString } = postgresEventStoreConfigSchema.parse(config);
|
|
58
|
+
debugStore('Config validated successfully');
|
|
59
|
+
const parsedOptions = normalizePostgresEventStoreOptions(options);
|
|
60
|
+
debugStore('Options normalized: projections=%d', parsedOptions.projections?.length ?? 0);
|
|
61
|
+
const eventStore = getPostgreSQLEventStore(connectionString, parsedOptions);
|
|
62
|
+
debugStore('Postgres event store created successfully');
|
|
63
|
+
return eventStore;
|
|
64
|
+
};
|
|
65
|
+
export { projections } from '@event-driven-io/emmett';
|
|
66
|
+
export const drizzleProjection = (db, { handle, canHandle, }) => {
|
|
67
|
+
debugProjection('Creating Drizzle projection with canHandle filter');
|
|
68
|
+
return postgreSQLProjection({
|
|
69
|
+
canHandle,
|
|
70
|
+
handle: async (events, context) => {
|
|
71
|
+
debugProjection('Processing %d events in Drizzle projection', events.length);
|
|
72
|
+
await handle(events, {
|
|
73
|
+
...context,
|
|
74
|
+
db,
|
|
75
|
+
});
|
|
76
|
+
debugProjection('Drizzle projection processed events successfully');
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
export const drizzleWithRepoProjection = (repos, { handle, canHandle, }) => {
|
|
81
|
+
debugProjection('Creating Drizzle projection with repository injection');
|
|
82
|
+
return postgreSQLProjection({
|
|
83
|
+
canHandle,
|
|
84
|
+
handle: async (events, context) => {
|
|
85
|
+
debugProjection('Processing %d events in Drizzle repo projection', events.length);
|
|
86
|
+
await handle(events, {
|
|
87
|
+
...context,
|
|
88
|
+
repos,
|
|
89
|
+
});
|
|
90
|
+
debugProjection('Drizzle repo projection processed events successfully');
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type Brand<K, T> = K & {
|
|
2
|
+
readonly __brand: T;
|
|
3
|
+
};
|
|
4
|
+
export type Flavour<K, T> = K & {
|
|
5
|
+
readonly __brand?: T;
|
|
6
|
+
};
|
|
7
|
+
export type DefaultRecord = Record<string, unknown>;
|
|
8
|
+
export type AnyRecord = Record<string, any>;
|
|
9
|
+
export type NonNullable$1<T> = T extends null | undefined ? never : T;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|