@bett3r-dev/pv3-types 1.0.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 (122) hide show
  1. package/build/authentication.d.ts +261 -0
  2. package/build/authentication.d.ts.map +1 -0
  3. package/build/authentication.js +108 -0
  4. package/build/authentication.js.map +1 -0
  5. package/build/cache.d.ts +101 -0
  6. package/build/cache.d.ts.map +1 -0
  7. package/build/cache.js +3 -0
  8. package/build/cache.js.map +1 -0
  9. package/build/clusterAdministration.d.ts +642 -0
  10. package/build/clusterAdministration.d.ts.map +1 -0
  11. package/build/clusterAdministration.js +177 -0
  12. package/build/clusterAdministration.js.map +1 -0
  13. package/build/configuration.d.ts +66 -0
  14. package/build/configuration.d.ts.map +1 -0
  15. package/build/configuration.js +3 -0
  16. package/build/configuration.js.map +1 -0
  17. package/build/database.d.ts +120 -0
  18. package/build/database.d.ts.map +1 -0
  19. package/build/database.js +41 -0
  20. package/build/database.js.map +1 -0
  21. package/build/endpoints.d.ts +183 -0
  22. package/build/endpoints.d.ts.map +1 -0
  23. package/build/endpoints.js +78 -0
  24. package/build/endpoints.js.map +1 -0
  25. package/build/evenstore.d.ts +26 -0
  26. package/build/evenstore.d.ts.map +1 -0
  27. package/build/evenstore.js +12 -0
  28. package/build/evenstore.js.map +1 -0
  29. package/build/eventsourcing/aggregateBuilder.d.ts +10 -0
  30. package/build/eventsourcing/aggregateBuilder.d.ts.map +1 -0
  31. package/build/eventsourcing/aggregateBuilder.js +3 -0
  32. package/build/eventsourcing/aggregateBuilder.js.map +1 -0
  33. package/build/eventsourcing/commandBuilder.d.ts +58 -0
  34. package/build/eventsourcing/commandBuilder.d.ts.map +1 -0
  35. package/build/eventsourcing/commandBuilder.js +6 -0
  36. package/build/eventsourcing/commandBuilder.js.map +1 -0
  37. package/build/eventsourcing/commandHandlers.d.ts +104 -0
  38. package/build/eventsourcing/commandHandlers.d.ts.map +1 -0
  39. package/build/eventsourcing/commandHandlers.js +28 -0
  40. package/build/eventsourcing/commandHandlers.js.map +1 -0
  41. package/build/eventsourcing/eventHandlers.d.ts +102 -0
  42. package/build/eventsourcing/eventHandlers.d.ts.map +1 -0
  43. package/build/eventsourcing/eventHandlers.js +33 -0
  44. package/build/eventsourcing/eventHandlers.js.map +1 -0
  45. package/build/eventsourcing/eventHandlersBuilder.d.ts +36 -0
  46. package/build/eventsourcing/eventHandlersBuilder.d.ts.map +1 -0
  47. package/build/eventsourcing/eventHandlersBuilder.js +13 -0
  48. package/build/eventsourcing/eventHandlersBuilder.js.map +1 -0
  49. package/build/eventsourcing/externalSystemBuilder.d.ts +14 -0
  50. package/build/eventsourcing/externalSystemBuilder.d.ts.map +1 -0
  51. package/build/eventsourcing/externalSystemBuilder.js +3 -0
  52. package/build/eventsourcing/externalSystemBuilder.js.map +1 -0
  53. package/build/eventsourcing/index.d.ts +386 -0
  54. package/build/eventsourcing/index.d.ts.map +1 -0
  55. package/build/eventsourcing/index.js +47 -0
  56. package/build/eventsourcing/index.js.map +1 -0
  57. package/build/eventsourcing/invariants.d.ts +19 -0
  58. package/build/eventsourcing/invariants.d.ts.map +1 -0
  59. package/build/eventsourcing/invariants.js +3 -0
  60. package/build/eventsourcing/invariants.js.map +1 -0
  61. package/build/eventsourcing/utils.d.ts +4 -0
  62. package/build/eventsourcing/utils.d.ts.map +1 -0
  63. package/build/eventsourcing/utils.js +3 -0
  64. package/build/eventsourcing/utils.js.map +1 -0
  65. package/build/index.d.ts +16 -0
  66. package/build/index.d.ts.map +1 -0
  67. package/build/index.js +32 -0
  68. package/build/index.js.map +1 -0
  69. package/build/infrastructure.d.ts +40 -0
  70. package/build/infrastructure.d.ts.map +1 -0
  71. package/build/infrastructure.js +11 -0
  72. package/build/infrastructure.js.map +1 -0
  73. package/build/logger.d.ts +32 -0
  74. package/build/logger.d.ts.map +1 -0
  75. package/build/logger.js +29 -0
  76. package/build/logger.js.map +1 -0
  77. package/build/outboxManager.d.ts +38 -0
  78. package/build/outboxManager.d.ts.map +1 -0
  79. package/build/outboxManager.js +21 -0
  80. package/build/outboxManager.js.map +1 -0
  81. package/build/ports.d.ts +39 -0
  82. package/build/ports.d.ts.map +1 -0
  83. package/build/ports.js +3 -0
  84. package/build/ports.js.map +1 -0
  85. package/build/routesAuth.d.ts +58 -0
  86. package/build/routesAuth.d.ts.map +1 -0
  87. package/build/routesAuth.js +37 -0
  88. package/build/routesAuth.js.map +1 -0
  89. package/build/typedEventEmitter.d.ts +23 -0
  90. package/build/typedEventEmitter.d.ts.map +1 -0
  91. package/build/typedEventEmitter.js +55 -0
  92. package/build/typedEventEmitter.js.map +1 -0
  93. package/build/validation.d.ts +64 -0
  94. package/build/validation.d.ts.map +1 -0
  95. package/build/validation.js +57 -0
  96. package/build/validation.js.map +1 -0
  97. package/package.json +15 -0
  98. package/src/authentication.ts +273 -0
  99. package/src/cache.ts +109 -0
  100. package/src/clusterAdministration.ts +216 -0
  101. package/src/configuration.ts +71 -0
  102. package/src/database.ts +157 -0
  103. package/src/endpoints.ts +198 -0
  104. package/src/evenstore.ts +27 -0
  105. package/src/eventsourcing/aggregateBuilder.ts +11 -0
  106. package/src/eventsourcing/commandBuilder.ts +64 -0
  107. package/src/eventsourcing/commandHandlers.ts +137 -0
  108. package/src/eventsourcing/eventHandlers.ts +118 -0
  109. package/src/eventsourcing/eventHandlersBuilder.ts +42 -0
  110. package/src/eventsourcing/externalSystemBuilder.ts +20 -0
  111. package/src/eventsourcing/index.ts +111 -0
  112. package/src/eventsourcing/invariants.ts +27 -0
  113. package/src/eventsourcing/utils.ts +4 -0
  114. package/src/index.ts +15 -0
  115. package/src/infrastructure.ts +41 -0
  116. package/src/logger.ts +45 -0
  117. package/src/outboxManager.ts +36 -0
  118. package/src/ports.ts +42 -0
  119. package/src/routesAuth.ts +58 -0
  120. package/src/typedEventEmitter.ts +73 -0
  121. package/src/validation.ts +89 -0
  122. package/tsconfig.json +15 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.EndpointSchema = exports.HttpConfigSchema = void 0;
27
+ const jsonschema_definer_1 = __importStar(require("@bett3r-dev/jsonschema-definer"));
28
+ const http_1 = require("http");
29
+ const CorsOptions = jsonschema_definer_1.default.shape({
30
+ origin: jsonschema_definer_1.default.string().optional(),
31
+ methods: jsonschema_definer_1.default.string().enum(...http_1.METHODS).optional(),
32
+ allowedHeaders: jsonschema_definer_1.default.anyOf(jsonschema_definer_1.default.string(), jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.string())).optional(),
33
+ exposedHeaders: jsonschema_definer_1.default.anyOf(jsonschema_definer_1.default.string(), jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.string())).optional(),
34
+ credentials: jsonschema_definer_1.default.boolean().optional(),
35
+ maxAge: jsonschema_definer_1.default.number().optional(),
36
+ preflightContinue: jsonschema_definer_1.default.boolean().optional(),
37
+ optionsSuccessStatus: jsonschema_definer_1.default.number().optional(),
38
+ });
39
+ const CompressionOptions = jsonschema_definer_1.default.shape({
40
+ chunkSize: jsonschema_definer_1.default.number().optional(),
41
+ level: jsonschema_definer_1.default.number().optional(),
42
+ memLevel: jsonschema_definer_1.default.number().optional(),
43
+ strategy: jsonschema_definer_1.default.number().optional(),
44
+ threshold: jsonschema_definer_1.default.number().optional(),
45
+ windowBits: jsonschema_definer_1.default.number().optional(),
46
+ });
47
+ exports.HttpConfigSchema = jsonschema_definer_1.default.shape({
48
+ port: jsonschema_definer_1.default.number().optional(),
49
+ cookie: jsonschema_definer_1.default.shape({
50
+ enabled: jsonschema_definer_1.default.boolean()
51
+ }).additionalProperties(true).optional(),
52
+ listeningEnabled: jsonschema_definer_1.default.boolean().optional(),
53
+ cors: (0, jsonschema_definer_1.mergeSchemas)(CorsOptions, jsonschema_definer_1.default.shape({
54
+ enabled: jsonschema_definer_1.default.boolean()
55
+ })).additionalProperties(true).optional(),
56
+ compression: (0, jsonschema_definer_1.mergeSchemas)(CompressionOptions, jsonschema_definer_1.default.shape({
57
+ enabled: jsonschema_definer_1.default.boolean()
58
+ })).additionalProperties(true).optional(),
59
+ metrics: jsonschema_definer_1.default.shape({
60
+ enabled: jsonschema_definer_1.default.boolean().optional(),
61
+ httpRequestDurations: jsonschema_definer_1.default.shape({
62
+ enabled: jsonschema_definer_1.default.boolean().optional(),
63
+ buckets: jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.number()).optional()
64
+ }).optional()
65
+ }).optional()
66
+ }).optional();
67
+ exports.EndpointSchema = jsonschema_definer_1.default.shape({
68
+ route: jsonschema_definer_1.default.string().pattern(/^\/.*/),
69
+ action: jsonschema_definer_1.default.any(),
70
+ module: jsonschema_definer_1.default.string().optional(),
71
+ name: jsonschema_definer_1.default.string().optional(),
72
+ description: jsonschema_definer_1.default.string().optional(),
73
+ schemas: jsonschema_definer_1.default.any().optional(),
74
+ tags: jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.string()).optional(),
75
+ multipartProperties: jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.string()).optional(),
76
+ method: jsonschema_definer_1.default.string().enum('DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT', 'OPTIONS').optional(),
77
+ });
78
+ //# sourceMappingURL=endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { DatabaseTransaction } from './database';
2
+ import { CommittedEvent, EventToCommit, ReadMultipleStreamOptions, ReadStreamOptions } from './eventsourcing';
3
+ import { AdapterBase, PortEmitter } from './ports';
4
+ export declare const EventStoreConfigSchema: import("@bett3r-dev/jsonschema-definer").ObjectSchema<{
5
+ collection?: string | undefined;
6
+ enabled?: boolean | undefined;
7
+ }, false>;
8
+ export type EventStoreConfig = typeof EventStoreConfigSchema.type;
9
+ export type EventStoreType = {
10
+ appendToStream: <Type>(stream: string, events: EventToCommit | EventToCommit[], expectedVersion?: number, transaction?: DatabaseTransaction) => Promise<CommittedEvent<Type>[]>;
11
+ appendToMultipleStreams?: <Type>(streams: Record<string, {
12
+ events: EventToCommit | EventToCommit[];
13
+ expectedVersion?: number;
14
+ }>, transaction?: DatabaseTransaction) => Promise<CommittedEvent<Type>[]>;
15
+ readStream: <Model = any>(readOptions: ReadStreamOptions, callback: (event: CommittedEvent, stop: () => void) => Partial<Model> | Promise<Partial<Model>>) => Promise<Model>;
16
+ readMultipleStream?: <Model = any>(readOptions: ReadMultipleStreamOptions, callback: (event: CommittedEvent, stop: () => void) => Record<string, Partial<Model>> | Promise<Record<string, Partial<Model>>>) => Promise<Record<string, Model>>;
17
+ subscribe: (onData: (event: CommittedEvent) => void, onError?: (e: Error) => void) => Promise<{
18
+ close: () => void;
19
+ }>;
20
+ flush: () => Promise<void>;
21
+ };
22
+ export type EventStoreAdapter = AdapterBase & EventStoreType;
23
+ export type EventStorePort = PortEmitter & EventStoreType & {
24
+ _adapter: EventStoreAdapter;
25
+ };
26
+ //# sourceMappingURL=evenstore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evenstore.d.ts","sourceRoot":"","sources":["../src/evenstore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAM,sBAAsB;;;SAGtB,CAAC;AACd,MAAM,MAAM,gBAAgB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,CAAC,IAAI,EAAG,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAC,aAAa,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,mBAAmB,KAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/K,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAG,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,aAAa,GAAC,aAAa,EAAE,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KAAE,CAAC,EAAE,WAAW,CAAC,EAAE,mBAAmB,KAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxM,UAAU,EAAE,CAAC,KAAK,GAAC,GAAG,EAAG,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,IAAI,KAAM,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAM,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9K,kBAAkB,CAAC,EAAE,CAAC,KAAK,GAAC,GAAG,EAAG,WAAW,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,IAAI,KAAM,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAC,KAAK,CAAC,CAAC,CAAA;IAC5O,SAAS,EAAE,CAAE,MAAM,EAAE,CAAE,KAAK,EAAE,cAAc,KAAM,IAAI,EAAE,OAAO,CAAC,EAAE,CAAE,CAAC,EAAE,KAAK,KAAM,IAAI,KAAM,OAAO,CAAC;QAClG,KAAK,EAAE,MAAM,IAAI,CAAA;KAClB,CAAC,CAAA;IACF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,cAAc,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG;IAC1D,QAAQ,EAAE,iBAAiB,CAAA;CAC5B,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EventStoreConfigSchema = void 0;
7
+ const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
8
+ exports.EventStoreConfigSchema = jsonschema_definer_1.default.shape({
9
+ enabled: jsonschema_definer_1.default.boolean().optional(),
10
+ collection: jsonschema_definer_1.default.string().optional()
11
+ }).optional();
12
+ //# sourceMappingURL=evenstore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evenstore.js","sourceRoot":"","sources":["../src/evenstore.ts"],"names":[],"mappings":";;;;;;AAAA,wFAA+C;AAKlC,QAAA,sBAAsB,GAAG,4BAAC,CAAC,KAAK,CAAC;IAC5C,OAAO,EAAE,4BAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Command, EventFactory, EventReducers } from '.';
2
+ import { DatabasePort } from '..';
3
+ import { ExternalSystemBuilderType } from './externalSystemBuilder';
4
+ export type AggregateBuilderType<Model, EVENTS extends Record<string, EventFactory>> = Omit<ExternalSystemBuilderType<Model, EVENTS>, 'withCommandTemplate'> & {
5
+ withCommandTemplate: (command: Command) => AggregateBuilderType<Model, EVENTS>;
6
+ notEventsourced: (database: DatabasePort, collection: string) => AggregateBuilderType<Model, EVENTS>;
7
+ initialValue: (init: () => (Partial<Model> | null | undefined)) => Pick<AggregateBuilderType<Model, EVENTS>, 'withEventReducers' | 'withCommands'>;
8
+ withEventReducers: (eventReducers: EventReducers<EVENTS, Model>) => Pick<AggregateBuilderType<Model, EVENTS>, 'withCommands'>;
9
+ };
10
+ //# sourceMappingURL=aggregateBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregateBuilder.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/aggregateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGpE,MAAM,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,qBAAqB,CAAC,GAAG;IAC7J,mBAAmB,EAAE,CAAE,OAAO,EAAE,OAAO,KAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAChF,eAAe,EAAE,CAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACtG,YAAY,EAAE,CAAE,IAAI,EAAE,MAAM,CAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,SAAS,CAAE,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,cAAc,CAAC,CAAA;IACrJ,iBAAiB,EAAE,CAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,CAAA;CAChI,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=aggregateBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregateBuilder.js","sourceRoot":"","sources":["../../src/eventsourcing/aggregateBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import { BaseSchema } from '@bett3r-dev/jsonschema-definer';
2
+ import { Command, CommandCommitFunction, CommandErrorHandlerFunction, CommandFormatFunction, CommandHandlerFunction, CommandLoadFunction, EventFactory, InvariantType } from '.';
3
+ export type CommandBuilderFromSchemaType<Model, EVENTS extends Record<string, EventFactory>, EVENT extends keyof EVENTS, CommandPayload> = {
4
+ /**
5
+ * Loads the streams from the aggregate. If the Command Handler is an Aggregate the fuction will be ignored.
6
+ * Default Implementation:
7
+ * ```ts
8
+ * loadAggregateState(state.commandHandler, (state.streams || []), options)
9
+ * .then(u.ensureArray)
10
+ * .then((aggregateState) => ({...state, aggregateState} as CommandHandlerState));
11
+ * ```
12
+ */
13
+ withLoadFunction: (loadFunction: CommandLoadFunction<Model, CommandPayload>) => CommandBuilderFromSchemaType<Model, EVENTS, EVENT, CommandPayload>;
14
+ /**
15
+ * Commits the new event/events to the store
16
+ * DefaultImplementation:
17
+ * ```ts
18
+ * const defaultCommit = (state: CommandHandlerState) =>
19
+ * commitCommands(state);
20
+ * ```
21
+ */
22
+ withCommitFunction: (commitFunction: CommandCommitFunction<Model, CommandPayload>) => CommandBuilderFromSchemaType<Model, EVENTS, EVENT, CommandPayload>;
23
+ withResultFormatFunction: (resultFormatFunction: CommandFormatFunction<Model, CommandPayload>) => CommandBuilderFromSchemaType<Model, EVENTS, EVENT, CommandPayload>;
24
+ withInvariant: (invariant: InvariantType<Model, CommandPayload> | ((state: Model, data: CommandPayload) => Promise<void>)) => CommandBuilderFromSchemaType<Model, EVENTS, EVENT, CommandPayload>;
25
+ produces: <EVENT extends keyof EVENTS>(events: EVENT[]) => {
26
+ withHandler: <USER, StateModel = Model>(handler: CommandHandlerFunction<StateModel, CommandPayload, EVENTS, EVENT, USER>) => {
27
+ build: () => Command<EVENTS, EVENT, Model, CommandPayload>;
28
+ withErrorHandler: (errorHandler: CommandErrorHandlerFunction<CommandPayload>) => {
29
+ build: () => Command<EVENTS, EVENT, Model, CommandPayload>;
30
+ };
31
+ };
32
+ withErrorHandler: (errorHandler: CommandErrorHandlerFunction<CommandPayload>) => {
33
+ build: () => Command<EVENTS, EVENT, Model, CommandPayload>;
34
+ };
35
+ build: () => Command<EVENTS, EVENT, Model, CommandPayload>;
36
+ };
37
+ };
38
+ export type CommandBuilderInstance<Model, EVENTS extends Record<string, EventFactory>, EVENT extends keyof EVENTS, CommandPayload> = {
39
+ withDescription: (description: string) => CommandBuilderInstance<Model, EVENTS, EVENT, CommandPayload>;
40
+ /** Specify where to find the id of the aggregate when the command has no Id in the Params of the request
41
+ *
42
+ * suppose a structure of
43
+ * ```ts
44
+ * {
45
+ * ISC: 'QWERASDFZXCV',
46
+ * marketing: { promoId: '1q2w3e'}
47
+ * products: [{id: 1}, {id:2}]
48
+ * }
49
+ * ```
50
+ * Some examples are: `ISC`, `warehouse.id`.
51
+ * In the case of an array use a Dollar sign `$`.
52
+ * `products.$.id`
53
+ */
54
+ withDataPropertyId: (dataPath: string) => CommandBuilderInstance<Model, EVENTS, EVENT, CommandPayload>;
55
+ withSchema: <CommandPayload>(schema: BaseSchema<CommandPayload>) => CommandBuilderFromSchemaType<Model, EVENTS, EVENT, CommandPayload>;
56
+ };
57
+ export type CommandBuilderType<Model = any, EVENTS extends Record<string, EventFactory> = any, EVENT extends keyof EVENTS = any, CommandPayload = any> = (init?: Omit<Command<EVENTS, EVENT, CommandPayload, Model>, 'handler' | 'events' | 'schema'>) => CommandBuilderInstance<Model, EVENTS, EVENT, CommandPayload>;
58
+ //# sourceMappingURL=commandBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandBuilder.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/commandBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ //*******************************************
3
+ // Command Builder
4
+ //*******************************************
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=commandBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandBuilder.js","sourceRoot":"","sources":["../../src/eventsourcing/commandBuilder.ts"],"names":[],"mappings":";AAAA,6CAA6C;AAC7C,kBAAkB;AAClB,6CAA6C"}
@@ -0,0 +1,104 @@
1
+ import { BaseSchema } from '@bett3r-dev/jsonschema-definer';
2
+ import { Builder, CommittedEvent, EventFactory, EventMetadata, GetMessageType, ReadStreamOptions } from '.';
3
+ import { AppErrorInstance, AppErrorType } from '../validation';
4
+ import { DatabasePort } from '../database';
5
+ import { EndpointActionParams, EndpointActionParamsContext } from '../endpoints';
6
+ export type CommandHandlerState<Events = Record<string, EventFactory>, Payload = any, Model = any, USER = any> = {
7
+ commandHandler: Aggregate | System;
8
+ command: Command;
9
+ stream: string;
10
+ data: Payload;
11
+ query: {
12
+ id?: string;
13
+ };
14
+ params: Record<string, any>;
15
+ context: Partial<EndpointActionParamsContext<USER>>;
16
+ events: Events[keyof Events][];
17
+ state: Model;
18
+ committedEvents?: Array<CommittedEvent>;
19
+ metadata?: EventMetadata;
20
+ expectedVersion?: number;
21
+ };
22
+ export type CommandExecutionResponse<Model = unknown> = {
23
+ state?: Model;
24
+ events: CommittedEvent[];
25
+ };
26
+ export type ExecuteCommandFunction = <SYSTEM extends System, COMMAND extends keyof SYSTEM['commands']>(commandHandler: SYSTEM, commandName: COMMAND) => (params: Partial<EndpointActionParams>) => Promise<unknown>;
27
+ export type CommandLoadFunction<Model = any, Payload = any> = (state: CommandHandlerState<Model, Payload>, options?: ReadStreamOptions, initialState?: Model) => Promise<CommandHandlerState<Model, Payload>>;
28
+ export type CommandCommitFunction<Model = any, Payload = any> = (state: CommandHandlerState<Model, Payload>) => Promise<CommandHandlerState<Model, Payload>>;
29
+ export type CommandFormatFunction<Model = any, Payload = any> = (handlerState: CommandHandlerState<Model, Payload>) => Promise<CommandExecutionResponse<Model>>;
30
+ export type CommandHandlerFunction<Model = any, CommandPayload = unknown, Events extends Record<string, EventFactory<EVENT>> = any, EVENT extends keyof Events = any, USER = any> = (state: Model extends undefined ? null : Model, data: CommandPayload, aggregateState: CommandHandlerState<Events, CommandPayload, any, USER>) => Promise<EventFactory<EVENT, GetMessageType<Events[EVENT]>>[]> | EventFactory<EVENT, GetMessageType<Events[EVENT]>>[];
31
+ export type CommandErrorHandlerFunction<CommandPayload = unknown> = (error: AppErrorInstance, data: CommandPayload) => Promise<any>;
32
+ export type Command<EVENTS extends Record<string, EventFactory<EVENT>> = any, EVENT extends keyof EVENTS = any, SystemModel = any, CommandPayload = any> = {
33
+ schema: BaseSchema<CommandPayload>;
34
+ handler: CommandHandlerFunction<SystemModel, CommandPayload, EVENTS, EVENT>;
35
+ onErrorHandler?: CommandErrorHandlerFunction<CommandPayload>;
36
+ dataPropertyId?: string;
37
+ name?: string;
38
+ actors?: string[];
39
+ description?: string;
40
+ multipartProperties?: string[];
41
+ events?: EVENT[];
42
+ invariants?: InvariantType[];
43
+ load?: CommandLoadFunction;
44
+ commit?: CommandCommitFunction;
45
+ format?: CommandFormatFunction;
46
+ };
47
+ export type InvariantType<Model = any, Payload = any> = {
48
+ events?: string[];
49
+ rejects: AppErrorType[];
50
+ beforeLoad?: (state: CommandHandlerState<any, Payload, Model>) => Promise<CommandHandlerState<any, Payload, Model>>;
51
+ check: (commandHandlerState: CommandHandlerState<any, Payload, Model>) => Promise<CommandHandlerState<any, Payload, Model> | void> | void | CommandHandlerState<any, Payload, Model>;
52
+ };
53
+ export declare const SystemGetQuerySchema: import("@bett3r-dev/jsonschema-definer").ObjectSchema<{
54
+ limit?: number | undefined;
55
+ after?: string | undefined;
56
+ from?: number | undefined;
57
+ before?: string | undefined;
58
+ names?: string[] | undefined;
59
+ backward?: boolean | undefined;
60
+ stream: string;
61
+ }, true>;
62
+ export type SystemGetQueryType = typeof SystemGetQuerySchema.type;
63
+ export declare const SystemEndpointParamsSchema: import("@bett3r-dev/jsonschema-definer").ObjectSchema<{
64
+ id: string;
65
+ }, true>;
66
+ export declare const CommandEndpointQuerySchema: import("@bett3r-dev/jsonschema-definer").ObjectSchema<{
67
+ causationId?: string | undefined;
68
+ correlationId?: string | undefined;
69
+ expectedVersion?: string | undefined;
70
+ }, true>;
71
+ export type OnValidationErrorFunctionType = Function;
72
+ export type System<Commands extends Record<string, Command | Builder<Command>> = any, EVENTS extends Record<string, EventFactory> = any> = {
73
+ name: string;
74
+ events: EVENTS;
75
+ isStreamable?: boolean;
76
+ isAggregate?: boolean;
77
+ isEventsourced?: boolean;
78
+ commands: Commands;
79
+ templateCommand: Command;
80
+ };
81
+ export type AggregateReducedState<Model = any> = {
82
+ state: Model;
83
+ lastEvent?: Partial<Pick<CommittedEvent, 'id' | 'version'>>;
84
+ };
85
+ export type EventReducers<EVENTS extends Record<string, EventFactory> = any, Model = any> = {
86
+ [Name in keyof EVENTS]: (state: Model, data: GetMessageType<EVENTS[Name]>, metadata: EventMetadata) => Partial<Model>;
87
+ };
88
+ export type Aggregate<Commands extends Record<string, Command | Builder<Command>> = any, EVENTS extends Record<string, EventFactory> = any, Model = any> = System<Commands, EVENTS> & {
89
+ schema: BaseSchema<Model>;
90
+ outboxDatabase?: DatabasePort;
91
+ outboxCollection?: string;
92
+ initialValue: () => Partial<Model> | null | undefined;
93
+ eventReducers: EventReducers<EVENTS, Model>;
94
+ };
95
+ export type EventSourcingCommandHandlers = {
96
+ loadStream: (stream: string, options?: ReadStreamOptions) => Promise<CommittedEvent[] | undefined>;
97
+ loadAggregateState: (system: System, stream?: string, options?: ReadStreamOptions) => Promise<Record<string, any> | null>;
98
+ executeCommand: ExecuteCommandFunction;
99
+ registerCommandHandlerGetEndpoints: (aggregateOrSystem: Aggregate | System, name?: string) => string[];
100
+ registerCommandHandlerPostEndpoints: (aggregateOrSystem: (Aggregate | System) & {
101
+ events: Record<string, EventFactory>;
102
+ }, name?: string) => Record<string, string>;
103
+ };
104
+ //# sourceMappingURL=commandHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandHandlers.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/commandHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CommandEndpointQuerySchema = exports.SystemEndpointParamsSchema = exports.SystemGetQuerySchema = void 0;
7
+ const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
8
+ //*******************************************
9
+ // Systems
10
+ //*******************************************
11
+ exports.SystemGetQuerySchema = jsonschema_definer_1.default.shape({
12
+ stream: jsonschema_definer_1.default.string(),
13
+ names: jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.string()).optional(),
14
+ from: jsonschema_definer_1.default.number().optional(),
15
+ limit: jsonschema_definer_1.default.number().optional(),
16
+ backward: jsonschema_definer_1.default.boolean().optional(),
17
+ after: jsonschema_definer_1.default.string().format('date-time').optional(),
18
+ before: jsonschema_definer_1.default.string().format('date-time').optional(),
19
+ });
20
+ exports.SystemEndpointParamsSchema = jsonschema_definer_1.default.shape({
21
+ id: jsonschema_definer_1.default.string().description('id for the aggregate')
22
+ });
23
+ exports.CommandEndpointQuerySchema = jsonschema_definer_1.default.shape({
24
+ expectedVersion: jsonschema_definer_1.default.string().optional(),
25
+ causationId: jsonschema_definer_1.default.string().optional(),
26
+ correlationId: jsonschema_definer_1.default.string().optional(),
27
+ });
28
+ //# sourceMappingURL=commandHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandHandlers.js","sourceRoot":"","sources":["../../src/eventsourcing/commandHandlers.ts"],"names":[],"mappings":";;;;;;AAAA,wFAA+D;AA0D/D,6CAA6C;AAC7C,UAAU;AACV,6CAA6C;AAEhC,QAAA,oBAAoB,GAAG,4BAAC,CAAC,KAAK,CAAC;IAC1C,MAAM,EAAE,4BAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,4BAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,IAAI,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,4BAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAE,WAAW,CAAE,CAAC,QAAQ,EAAE;IAClD,MAAM,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAE,WAAW,CAAE,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,4BAAC,CAAC,KAAK,CAAC;IAChD,EAAE,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAE,sBAAsB,CAAE;CACrD,CAAC,CAAC;AACU,QAAA,0BAA0B,GAAG,4BAAC,CAAC,KAAK,CAAC;IAChD,eAAe,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { ObjectSchema } from '@bett3r-dev/jsonschema-definer';
2
+ import { AppErrorInstance } from '../validation';
3
+ import { Collection, CollectionQueryParams, DatabaseChange, DatabasePort, Document } from '../database';
4
+ import { EndpointActionParams, RequestObject, ResponseObject } from '../endpoints';
5
+ import { CommittedEvent, EventFactory, GetMessageType } from '../eventsourcing';
6
+ import { LoggerType } from '../logger';
7
+ import { System } from './commandHandlers';
8
+ import { TypedEventEmitter } from '../typedEventEmitter';
9
+ export declare const ReadModelDefaultParamsSchema: ObjectSchema<{
10
+ id?: string | undefined;
11
+ }, true>;
12
+ export declare const ReadModelDefaultQuerySchema: ObjectSchema<{
13
+ limit?: string | undefined;
14
+ after?: string | undefined;
15
+ sort?: string | string[] | undefined;
16
+ filter?: string | string[] | undefined;
17
+ select?: string[] | undefined;
18
+ access_token?: string | undefined;
19
+ apikey?: string | undefined;
20
+ }, true>;
21
+ export type ReadModelDefaultQuery = typeof ReadModelDefaultQuerySchema.type;
22
+ export type ReadModelDefaultParams = typeof ReadModelDefaultParamsSchema.type;
23
+ export declare const defaultParamsSchemas: {
24
+ params: ObjectSchema<{
25
+ id?: string | undefined;
26
+ }, true>;
27
+ };
28
+ export declare const defaultQuerySchemas: {
29
+ query: ObjectSchema<{
30
+ limit?: string | undefined;
31
+ after?: string | undefined;
32
+ sort?: string | string[] | undefined;
33
+ filter?: string | string[] | undefined;
34
+ select?: string[] | undefined;
35
+ access_token?: string | undefined;
36
+ apikey?: string | undefined;
37
+ }, true>;
38
+ };
39
+ export type EventHandler<EVENTS extends Record<string, EventFactory> = any> = {
40
+ name: string;
41
+ events: EVENTS;
42
+ concurrency?: number;
43
+ errorHandlers?: {
44
+ [Name in keyof EVENTS]?: HandlerExecutionErrorType<CommittedEvent<GetMessageType<EVENTS[Name]>>>;
45
+ };
46
+ };
47
+ export type PolicyResponse = {
48
+ name: string;
49
+ id?: string;
50
+ data?: any;
51
+ };
52
+ export type HandlerExecutionErrorType<EVENT extends CommittedEvent = CommittedEvent> = (error: AppErrorInstance, event: EVENT) => Promise<unknown>;
53
+ export type Policy<CommandHandler extends System = any, Events extends Record<string, EventFactory> = any> = EventHandler<Events> & {
54
+ commandHandler?: CommandHandler;
55
+ eventHandlers: {
56
+ [Name in keyof Events]: (event: CommittedEvent<GetMessageType<Events[Name]>>) => Promise<PolicyResponse | void>;
57
+ };
58
+ };
59
+ export type QueryParamsTranslator<Model extends Document, Params, Query> = (schema: ObjectSchema<Model>, params: Pick<EndpointActionParams<any, Query, Params>, 'params' | 'query'>) => CollectionQueryParams<Model>;
60
+ export type QueryHandler<MODEL extends Document = any, PARAMS = any, QUERY = any> = (repository: Collection<MODEL>, params: CollectionQueryParams<MODEL> & {
61
+ params: EndpointActionParams<any, QUERY, PARAMS>;
62
+ }) => Promise<MODEL | MODEL[]>;
63
+ export type QueryTransformer<MODEL extends Document = any, PARAMS = any, QUERY = any> = (projectionParams: CollectionQueryParams<MODEL>, params: EndpointActionParams<any, QUERY, PARAMS>) => Promise<CollectionQueryParams<MODEL>> | CollectionQueryParams<MODEL>;
64
+ export type ReadModelSubscriptionCloseEmitterEvents = {
65
+ close: string;
66
+ };
67
+ export type ReadmodelSubscriptionManagerType<Model extends Document = any> = {
68
+ type: string;
69
+ startSubscription: (projectionParams: CollectionQueryParams<Model>, req: RequestObject, res: ResponseObject) => string | void;
70
+ notifySubscriptions: (logger: LoggerType, collection: string) => <T extends Document>(change: DatabaseChange<T>, subscriptionId?: string) => void;
71
+ readModelSubscriptionCloseEmitter: TypedEventEmitter<ReadModelSubscriptionCloseEmitterEvents>;
72
+ send: (logger: LoggerType, id: string, change: DatabaseChange, collection: string, res: ResponseObject, data: string) => void;
73
+ };
74
+ export type Query<MODEL extends Document = any, PARAMS extends Record<string, any> = any, QUERY extends Record<string, any> = any> = {
75
+ route?: string;
76
+ protocol?: 'http';
77
+ description?: string;
78
+ schemas?: {
79
+ query?: ObjectSchema<QUERY>;
80
+ params?: ObjectSchema<PARAMS>;
81
+ };
82
+ translator?: QueryParamsTranslator<MODEL, PARAMS, QUERY>;
83
+ subscriptions?: ReadmodelSubscriptionManagerType[];
84
+ transformers?: QueryTransformer<MODEL, PARAMS, QUERY>[];
85
+ queryHandler?: QueryHandler<MODEL, PARAMS, QUERY>;
86
+ };
87
+ export type EventProjectors<EVENTS extends Record<string, EventFactory> = any> = {
88
+ [Name in keyof EVENTS]: (event: CommittedEvent<GetMessageType<EVENTS[Name]>>) => Promise<any>;
89
+ };
90
+ export type ReadModel<Model extends Document = any, EVENTS extends Record<string, EventFactory> = any> = EventHandler<EVENTS> & {
91
+ isReadModel: true;
92
+ schema: ObjectSchema<Model>;
93
+ queries: Query<Model>[];
94
+ eventProjectors?: EventProjectors<EVENTS>;
95
+ database?: DatabasePort;
96
+ collection?: string;
97
+ };
98
+ export type ReadmodelChange<Model extends Document> = {
99
+ type: 'insert' | 'update' | 'delete';
100
+ data: Model;
101
+ };
102
+ //# sourceMappingURL=eventHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventHandlers.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/eventHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.defaultQuerySchemas = exports.defaultParamsSchemas = exports.ReadModelDefaultQuerySchema = exports.ReadModelDefaultParamsSchema = void 0;
7
+ const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
8
+ const SortStringSchema = jsonschema_definer_1.default.string().pattern(/^(\w+),?(asc|desc)?$/);
9
+ const FilterStringSchema = jsonschema_definer_1.default
10
+ .string()
11
+ .pattern(/^([\w\d._]+),(eq|neq|lt|gt|lte|gte|in|nin|contains|notContains|some|every|exists|notExists),(.+?)$/);
12
+ exports.ReadModelDefaultParamsSchema = jsonschema_definer_1.default.shape({
13
+ id: jsonschema_definer_1.default.string().optional()
14
+ });
15
+ exports.ReadModelDefaultQuerySchema = jsonschema_definer_1.default.shape({
16
+ access_token: jsonschema_definer_1.default.string().optional(),
17
+ apikey: jsonschema_definer_1.default.string().optional(),
18
+ limit: jsonschema_definer_1.default.string().optional(),
19
+ after: jsonschema_definer_1.default.string().optional(),
20
+ sort: jsonschema_definer_1.default.oneOf(SortStringSchema, jsonschema_definer_1.default.array().items(SortStringSchema)).optional(),
21
+ select: jsonschema_definer_1.default.array().items(jsonschema_definer_1.default.string()).optional(),
22
+ //TODO: scape , for when the value has commas.
23
+ filter: jsonschema_definer_1.default
24
+ .oneOf(FilterStringSchema, jsonschema_definer_1.default.array().items(FilterStringSchema))
25
+ .optional()
26
+ });
27
+ exports.defaultParamsSchemas = {
28
+ params: exports.ReadModelDefaultParamsSchema
29
+ };
30
+ exports.defaultQuerySchemas = {
31
+ query: exports.ReadModelDefaultQuerySchema
32
+ };
33
+ //# sourceMappingURL=eventHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventHandlers.js","sourceRoot":"","sources":["../../src/eventsourcing/eventHandlers.ts"],"names":[],"mappings":";;;;;;AAAA,wFAAiE;AASjE,MAAM,gBAAgB,GAAG,4BAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAE,sBAAsB,CAAE,CAAC;AACtE,MAAM,kBAAkB,GAAG,4BAAC;KACzB,MAAM,EAAE;KACR,OAAO,CAAE,oGAAoG,CAAE,CAAC;AAEtG,QAAA,4BAA4B,GAAG,4BAAC,CAAC,KAAK,CAAC;IAClD,EAAE,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1B,CAAC,CAAC;AAEU,QAAA,2BAA2B,GAAG,4BAAC,CAAC,KAAK,CAAC;IACjD,YAAY,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,4BAAC,CAAC,KAAK,CAAE,gBAAgB,EAAE,4BAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAE,gBAAgB,CAAE,CAAC,CAAC,QAAQ,EAAE;IAChF,MAAM,EAAE,4BAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,8CAA8C;IAC9C,MAAM,EAAE,4BAAC;SACN,KAAK,CAAE,kBAAkB,EAAE,4BAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAE,kBAAkB,CAAE,CAAC;SACjE,QAAQ,EAAE;CACd,CAAC,CAAC;AAOU,QAAA,oBAAoB,GAAG;IAClC,MAAM,EAAE,oCAA4B;CACrC,CAAC;AAEW,QAAA,mBAAmB,GAAG;IACjC,KAAK,EAAE,mCAA2B;CACnC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /// <reference types="ramda/node_modules/ts-toolbelt" />
2
+ import { ObjectSchema } from '@bett3r-dev/jsonschema-definer';
3
+ import { A, O } from 'ts-toolbelt';
4
+ import { Builder, CommittedEvent, EventFactory, EventHandler, EventMetadata, EventProjectors, GetBuilderType, GetMessageType, Message, Policy, PolicyResponse, Query, ReadModel, System } from '.';
5
+ import { AppErrorInstance, DatabasePort, Document } from '..';
6
+ export type GetCommandType<SYSTEM extends System | EventHandler, Name extends A.Key> = SYSTEM extends System ? O.Path<SYSTEM, ['commands', Name]> extends (Builder<infer T extends Object>) ? O.Path<T, ['schema', 'type']> : O.Path<SYSTEM, ['commands', Name, 'schema', 'type']> : O.Path<SYSTEM, ['commandHandler', 'commands', Name]> extends (Builder<infer T extends Object>) ? O.Path<T, ['schema', 'type']> : O.Path<SYSTEM, ['commandHandler', 'commands', Name, 'schema', 'type']>;
7
+ export type CommandInstance<Payload = any> = Message<Payload> & {
8
+ name: string;
9
+ id?: string;
10
+ metadata?: EventMetadata;
11
+ };
12
+ export declare const createCommand: <Handler extends System | EventHandler>(handler: Handler) => <COMMAND extends keyof (Handler extends System ? Handler["commands"] : import("Object/Path")._Path<GetBuilderType<Handler>, ["commandHandler", "commands"], 1>)>(command: COMMAND, id?: string, data?: GetCommandType<Handler, COMMAND> | undefined, metadata?: EventMetadata) => CommandInstance;
13
+ export type EventHandlerBuilderType<EVENTS extends Record<string, EventFactory>, T extends Policy | ReadModel> = Builder<EventHandler<EVENTS>> & {
14
+ eventHandler: EventHandler<EVENTS>;
15
+ withErrorHandlers: (errorHandlers: {
16
+ [Name in keyof EVENTS]?: (error: AppErrorInstance, event: CommittedEvent<GetMessageType<EVENTS[Name]>>) => Promise<unknown>;
17
+ }) => {
18
+ build: () => T extends Policy ? Policy<T['commandHandler'], EVENTS> : T extends ReadModel ? ReadModel<T['schema'] extends ObjectSchema<infer MODEL extends Document> ? MODEL : Document, EVENTS> : any;
19
+ };
20
+ };
21
+ export type PolicyBuilderType<CommandHandler extends System, EVENTS extends Record<string, EventFactory>> = Builder<Policy<CommandHandler, EVENTS>> & EventHandlerBuilderType<EVENTS, Policy<CommandHandler, EVENTS>> & {
22
+ withEventHandlers: (handlers: (params: {
23
+ createCommand: ReturnType<typeof createCommand<CommandHandler>>;
24
+ }) => {
25
+ [Name in keyof EVENTS]: (event: CommittedEvent<GetMessageType<EVENTS[Name]>>) => Promise<PolicyResponse | void>;
26
+ }) => Pick<PolicyBuilderType<CommandHandler, EVENTS>, 'build' | 'withErrorHandlers'>;
27
+ };
28
+ export type ReadmodelBuilderType<Model extends Document, EVENTS extends Record<string, EventFactory>> = Builder<ReadModel<Model, EVENTS>> & EventHandlerBuilderType<EVENTS, ReadModel<Model, EVENTS>> & {
29
+ withDatabase: (database: DatabasePort, collection?: string) => ReadmodelBuilderType<Model, EVENTS>;
30
+ withProjector: (eventProjectors?: (params: {
31
+ database: DatabasePort;
32
+ collection: string;
33
+ }) => EventProjectors<EVENTS>) => ReadmodelBuilderType<Model, EVENTS>;
34
+ withQuery: <PARAMS extends Record<string, any>, QUERY extends Record<string, any>>(query?: Query<Model, PARAMS, QUERY>) => ReadmodelBuilderType<Model, EVENTS>;
35
+ };
36
+ //# sourceMappingURL=eventHandlersBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventHandlersBuilder.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/eventHandlersBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCommand = void 0;
4
+ const createCommand = (handler) => (command, id, data, metadata) => {
5
+ return {
6
+ name: command,
7
+ ...(id ? { id } : {}),
8
+ ...(data ? { data } : {}),
9
+ ...(metadata ? { metadata } : {})
10
+ };
11
+ };
12
+ exports.createCommand = createCommand;
13
+ //# sourceMappingURL=eventHandlersBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventHandlersBuilder.js","sourceRoot":"","sources":["../../src/eventsourcing/eventHandlersBuilder.ts"],"names":[],"mappings":";;;AAeO,MAAM,aAAa,GAAG,CAA0C,OAAgB,EAAE,EAAE,CAAC,CAA0I,OAAgB,EAAE,EAAW,EAAE,IAAuC,EAAE,QAAwB,EAAoB,EAAE;IAC1V,OAAO;QACL,IAAI,EAAE,OAAiB;QACvB,GAAG,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,GAAG,CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnC,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,aAAa,iBAOxB"}