@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.
Files changed (130) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +124 -0
  3. package/dist/builders/command-handler.d.ts +48 -0
  4. package/dist/builders/command-handler.d.ts.map +1 -0
  5. package/dist/builders/command-handler.js +40 -0
  6. package/dist/builders/command-handler.js.map +1 -0
  7. package/dist/builders/command.d.ts +39 -0
  8. package/dist/builders/command.d.ts.map +1 -0
  9. package/dist/builders/command.js +44 -0
  10. package/dist/builders/command.js.map +1 -0
  11. package/dist/builders/decider.d.ts +188 -0
  12. package/dist/builders/decider.d.ts.map +1 -0
  13. package/dist/builders/decider.js +252 -0
  14. package/dist/builders/decider.js.map +1 -0
  15. package/dist/builders/event.d.ts +39 -0
  16. package/dist/builders/event.d.ts.map +1 -0
  17. package/dist/builders/event.js +42 -0
  18. package/dist/builders/event.js.map +1 -0
  19. package/dist/builders/index.d.ts +40 -0
  20. package/dist/builders/index.d.ts.map +1 -0
  21. package/dist/builders/index.js +40 -0
  22. package/dist/builders/index.js.map +1 -0
  23. package/dist/builders/process-manager.d.ts +94 -0
  24. package/dist/builders/process-manager.d.ts.map +1 -0
  25. package/dist/builders/process-manager.js +131 -0
  26. package/dist/builders/process-manager.js.map +1 -0
  27. package/dist/builders/projection.d.ts +92 -0
  28. package/dist/builders/projection.d.ts.map +1 -0
  29. package/dist/builders/projection.js +129 -0
  30. package/dist/builders/projection.js.map +1 -0
  31. package/dist/builders/stateful-process-manager.d.ts +181 -0
  32. package/dist/builders/stateful-process-manager.d.ts.map +1 -0
  33. package/dist/builders/stateful-process-manager.js +280 -0
  34. package/dist/builders/stateful-process-manager.js.map +1 -0
  35. package/dist/bus.d.ts +3 -0
  36. package/dist/bus.d.ts.map +1 -0
  37. package/dist/bus.js +2 -0
  38. package/dist/bus.js.map +1 -0
  39. package/dist/command-flow.d.ts +87 -0
  40. package/dist/command-flow.d.ts.map +1 -0
  41. package/dist/command-flow.js +233 -0
  42. package/dist/command-flow.js.map +1 -0
  43. package/dist/command.d.ts +38 -0
  44. package/dist/command.d.ts.map +1 -0
  45. package/dist/command.js +2 -0
  46. package/dist/command.js.map +1 -0
  47. package/dist/debug.d.ts +31 -0
  48. package/dist/debug.d.ts.map +1 -0
  49. package/dist/debug.js +31 -0
  50. package/dist/debug.js.map +1 -0
  51. package/dist/decide.d.ts +11 -0
  52. package/dist/decide.d.ts.map +1 -0
  53. package/dist/decide.js +2 -0
  54. package/dist/decide.js.map +1 -0
  55. package/dist/dot.d.ts +90 -0
  56. package/dist/dot.d.ts.map +1 -0
  57. package/dist/dot.js +91 -0
  58. package/dist/dot.js.map +1 -0
  59. package/dist/error.d.ts +2 -0
  60. package/dist/error.d.ts.map +1 -0
  61. package/dist/error.js +2 -0
  62. package/dist/error.js.map +1 -0
  63. package/dist/event-sourcing-features.d.ts +81 -0
  64. package/dist/event-sourcing-features.d.ts.map +1 -0
  65. package/dist/event-sourcing-features.js +139 -0
  66. package/dist/event-sourcing-features.js.map +1 -0
  67. package/dist/event.d.ts +25 -0
  68. package/dist/event.d.ts.map +1 -0
  69. package/dist/event.js +2 -0
  70. package/dist/event.js.map +1 -0
  71. package/dist/index.d.ts +7 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +6 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/package.json +5 -0
  76. package/dist/process-manager.d.ts +113 -0
  77. package/dist/process-manager.d.ts.map +1 -0
  78. package/dist/process-manager.js +155 -0
  79. package/dist/process-manager.js.map +1 -0
  80. package/dist/simple-process-manager.d.ts +37 -0
  81. package/dist/simple-process-manager.d.ts.map +1 -0
  82. package/dist/simple-process-manager.js +55 -0
  83. package/dist/simple-process-manager.js.map +1 -0
  84. package/dist/src/builders/command-handler.d.ts +48 -0
  85. package/dist/src/builders/command-handler.d.ts.map +1 -0
  86. package/dist/src/builders/command.d.ts +39 -0
  87. package/dist/src/builders/command.d.ts.map +1 -0
  88. package/dist/src/builders/decider.d.ts +188 -0
  89. package/dist/src/builders/decider.d.ts.map +1 -0
  90. package/dist/src/builders/event.d.ts +39 -0
  91. package/dist/src/builders/event.d.ts.map +1 -0
  92. package/dist/src/builders/index.d.ts +40 -0
  93. package/dist/src/builders/index.d.ts.map +1 -0
  94. package/dist/src/builders/process-manager.d.ts +94 -0
  95. package/dist/src/builders/process-manager.d.ts.map +1 -0
  96. package/dist/src/builders/projection.d.ts +92 -0
  97. package/dist/src/builders/projection.d.ts.map +1 -0
  98. package/dist/src/builders/stateful-process-manager.d.ts +181 -0
  99. package/dist/src/builders/stateful-process-manager.d.ts.map +1 -0
  100. package/dist/src/bus.d.ts +3 -0
  101. package/dist/src/bus.d.ts.map +1 -0
  102. package/dist/src/command-flow.d.ts +87 -0
  103. package/dist/src/command-flow.d.ts.map +1 -0
  104. package/dist/src/command.d.ts +16 -0
  105. package/dist/src/command.d.ts.map +1 -0
  106. package/dist/src/debug.d.ts +31 -0
  107. package/dist/src/debug.d.ts.map +1 -0
  108. package/dist/src/decide.d.ts +11 -0
  109. package/dist/src/decide.d.ts.map +1 -0
  110. package/dist/src/error.d.ts +2 -0
  111. package/dist/src/error.d.ts.map +1 -0
  112. package/dist/src/event.d.ts +25 -0
  113. package/dist/src/event.d.ts.map +1 -0
  114. package/dist/src/index.d.ts +5 -0
  115. package/dist/src/index.d.ts.map +1 -0
  116. package/dist/src/process-manager.d.ts +113 -0
  117. package/dist/src/process-manager.d.ts.map +1 -0
  118. package/dist/src/store.d.ts +44 -0
  119. package/dist/src/store.d.ts.map +1 -0
  120. package/dist/src/types.d.ts +10 -0
  121. package/dist/src/types.d.ts.map +1 -0
  122. package/dist/store.d.ts +44 -0
  123. package/dist/store.d.ts.map +1 -0
  124. package/dist/store.js +94 -0
  125. package/dist/store.js.map +1 -0
  126. package/dist/types.d.ts +10 -0
  127. package/dist/types.d.ts.map +1 -0
  128. package/dist/types.js +2 -0
  129. package/dist/types.js.map +1 -0
  130. 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,2 @@
1
+ export { EmmettError, IllegalStateError } from '@event-driven-io/emmett';
2
+ //# sourceMappingURL=error.d.ts.map
@@ -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,5 @@
1
+ export * from './command';
2
+ export * from './decide';
3
+ export * from './event';
4
+ export type { DefaultRecord } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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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"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}