Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

@castore/core

Package Overview
Dependencies
Maintainers
4
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@castore/core - npm Package Compare versions

Comparing version
1.0.1
to
1.0.2
+6
-0
dist/cjs/command/command.js

@@ -14,2 +14,4 @@ "use strict";

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var tuple = function tuple() {

@@ -34,2 +36,6 @@ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {

(0, _classCallCheck2["default"])(this, Command);
(0, _defineProperty2["default"])(this, "_types", void 0);
(0, _defineProperty2["default"])(this, "commandId", void 0);
(0, _defineProperty2["default"])(this, "requiredEventStores", void 0);
(0, _defineProperty2["default"])(this, "handler", void 0);
this.commandId = commandId;

@@ -36,0 +42,0 @@ this.requiredEventStores = requiredEventStores;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"command.js","names":["tuple","args","Command","commandId","requiredEventStores","handler"],"sources":["../../../src/command/command.ts"],"sourcesContent":["import { EventStore } from 'eventStore';\n\nexport const tuple = <A extends unknown[]>(...args: A): A => args;\n\n/**\n * @debt feature \"Command should be able to take metadata/context as 2nd inputs\"\n */\nexport class Command<\n $E extends EventStore[] = EventStore[],\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // Command is contravariant on its fns args: We have to type them as any\n // So that Command implementations still extends the Command type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = any,\n> {\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.handler = handler;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAEO,IAAMA,KAAK,GAAG,SAARA,KAAQ;EAAA,kCAAyBC,IAAzB;IAAyBA,IAAzB;EAAA;;EAAA,OAAwCA,IAAxC;AAAA,CAAd;AAEP;AACA;AACA;;;;IACaC,O,+CAYX;AASA,uBAQG;EAAA,IAPDC,SAOC,QAPDA,SAOC;EAAA,IANDC,mBAMC,QANDA,mBAMC;EAAA,IALDC,OAKC,QALDA,OAKC;EAAA;EACD,KAAKF,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKC,OAAL,GAAeA,OAAf;AACD,C"}
{"version":3,"file":"command.js","names":["tuple","args","Command","commandId","requiredEventStores","handler"],"sources":["../../../src/command/command.ts"],"sourcesContent":["import { EventStore } from 'eventStore';\n\nexport const tuple = <A extends unknown[]>(...args: A): A => args;\n\n/**\n * @debt feature \"Command should be able to take metadata/context as 2nd inputs\"\n */\nexport class Command<\n $E extends EventStore[] = EventStore[],\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // Command is contravariant on its fns args: We have to type them as any\n // So that Command implementations still extends the Command type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = any,\n> {\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.handler = handler;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAEO,IAAMA,KAAK,GAAG,SAARA,KAAQ;EAAA,kCAAyBC,IAAzB;IAAyBA,IAAzB;EAAA;;EAAA,OAAwCA,IAAxC;AAAA,CAAd;AAEP;AACA;AACA;;;;IACaC,O,+CAYX;AASA,uBAQG;EAAA,IAPDC,SAOC,QAPDA,SAOC;EAAA,IANDC,mBAMC,QANDA,mBAMC;EAAA,IALDC,OAKC,QALDA,OAKC;EAAA;EAAA;EAAA;EAAA;EAAA;EACD,KAAKF,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKC,OAAL,GAAeA,OAAf;AACD,C"}

@@ -18,2 +18,4 @@ "use strict";

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _eventAlreadyExists = require("../../errors/eventAlreadyExists");

@@ -50,2 +52,10 @@

(0, _classCallCheck2["default"])(this, JSONSchemaCommand);
(0, _defineProperty2["default"])(this, "_types", void 0);
(0, _defineProperty2["default"])(this, "commandId", void 0);
(0, _defineProperty2["default"])(this, "requiredEventStores", void 0);
(0, _defineProperty2["default"])(this, "inputSchema", void 0);
(0, _defineProperty2["default"])(this, "outputSchema", void 0);
(0, _defineProperty2["default"])(this, "eventAlreadyExistsRetries", void 0);
(0, _defineProperty2["default"])(this, "onEventAlreadyExists", void 0);
(0, _defineProperty2["default"])(this, "handler", void 0);
this.commandId = commandId;

@@ -52,0 +62,0 @@ this.requiredEventStores = requiredEventStores;

@@ -1,1 +0,1 @@

{"version":3,"file":"jsonSchema.js","names":["JSONSchemaCommand","commandId","requiredEventStores","inputSchema","outputSchema","eventAlreadyExistsRetries","onEventAlreadyExists","Promise","resolve","handler","undefined","input","eventStores","retriesLeft","attemptNumber","output","EventAlreadyExistsError","Error"],"sources":["../../../../src/command/implementations/jsonSchema.ts"],"sourcesContent":["import { FromSchema, JSONSchema } from 'json-schema-to-ts';\n\nimport { EventAlreadyExistsError } from '../../errors/eventAlreadyExists';\nimport { EventStore } from '../../eventStore';\nimport { Command } from '../command';\n\nexport type OnEventAlreadyExistsCallback = (\n error: EventAlreadyExistsError,\n context: { attemptNumber: number; retriesLeft: number },\n) => Promise<void>;\n\nexport class JSONSchemaCommand<\n $E extends EventStore[] = EventStore[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n IS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = IS extends JSONSchema ? FromSchema<IS> : any,\n OS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = OS extends JSONSchema ? FromSchema<OS> : any,\n> implements Command<$E, E, I, O>\n{\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries: number;\n onEventAlreadyExists: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n inputSchema,\n outputSchema,\n eventAlreadyExistsRetries = 2,\n onEventAlreadyExists = async () => new Promise(resolve => resolve()),\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries?: number;\n onEventAlreadyExists?: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.eventAlreadyExistsRetries = eventAlreadyExistsRetries;\n this.onEventAlreadyExists = onEventAlreadyExists;\n\n if (inputSchema !== undefined) {\n this.inputSchema = inputSchema;\n }\n\n if (outputSchema !== undefined) {\n this.outputSchema = outputSchema;\n }\n\n this.handler = async (input, eventStores) => {\n let retriesLeft = this.eventAlreadyExistsRetries;\n let attemptNumber = 1;\n\n while (retriesLeft >= 0) {\n try {\n const output = await handler(input, eventStores);\n\n return output;\n } catch (error) {\n if (!(error instanceof EventAlreadyExistsError)) {\n throw error;\n }\n\n await this.onEventAlreadyExists(error, {\n attemptNumber,\n retriesLeft,\n });\n\n if (retriesLeft === 0) {\n throw error;\n }\n\n retriesLeft -= 1;\n attemptNumber += 1;\n }\n }\n\n /**\n * @debt interface \"find a better thing to do in this case (which should not happen anyway)\"\n */\n throw new Error('Handler failed to execute');\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA;;IASaA,iB,+CAYX;AAaA,iCAgBG;EAAA;;EAAA,IAfDC,SAeC,QAfDA,SAeC;EAAA,IAdDC,mBAcC,QAdDA,mBAcC;EAAA,IAbDC,WAaC,QAbDA,WAaC;EAAA,IAZDC,YAYC,QAZDA,YAYC;EAAA,iCAXDC,yBAWC;EAAA,IAXDA,yBAWC,sCAX2B,CAW3B;EAAA,iCAVDC,oBAUC;EAAA,IAVDA,oBAUC,iIAVsB;IAAA;MAAA;QAAA;UAAA;YAAA,iCAAY,IAAIC,OAAJ,CAAY,UAAAC,OAAO;cAAA,OAAIA,OAAO,EAAX;YAAA,CAAnB,CAAZ;;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAUtB;EAAA,IATDC,OASC,QATDA,OASC;EAAA;EACD,KAAKR,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKG,yBAAL,GAAiCA,yBAAjC;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;;EAEA,IAAIH,WAAW,KAAKO,SAApB,EAA+B;IAC7B,KAAKP,WAAL,GAAmBA,WAAnB;EACD;;EAED,IAAIC,YAAY,KAAKM,SAArB,EAAgC;IAC9B,KAAKN,YAAL,GAAoBA,YAApB;EACD;;EAED,KAAKK,OAAL;IAAA,0FAAe,kBAAOE,KAAP,EAAcC,WAAd;MAAA;MAAA;QAAA;UAAA;YAAA;cACTC,WADS,GACK,KAAI,CAACR,yBADV;cAETS,aAFS,GAEO,CAFP;;YAAA;cAAA,MAIND,WAAW,IAAI,CAJT;gBAAA;gBAAA;cAAA;;cAAA;cAAA;cAAA,OAMYJ,OAAO,CAACE,KAAD,EAAQC,WAAR,CANnB;;YAAA;cAMHG,MANG;cAAA,kCAQFA,MARE;;YAAA;cAAA;cAAA;;cAAA,IAUH,wBAAiBC,2CAVd;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAAA;cAAA,OAcH,KAAI,CAACV,oBAAL,eAAiC;gBACrCQ,aAAa,EAAbA,aADqC;gBAErCD,WAAW,EAAXA;cAFqC,CAAjC,CAdG;;YAAA;cAAA,MAmBLA,WAAW,KAAK,CAnBX;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAuBTA,WAAW,IAAI,CAAf;cACAC,aAAa,IAAI,CAAjB;;YAxBS;cAAA;cAAA;;YAAA;cAAA,MA+BP,IAAIG,KAAJ,CAAU,2BAAV,CA/BO;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAf;;IAAA;MAAA;IAAA;EAAA;AAiCD,C"}
{"version":3,"file":"jsonSchema.js","names":["JSONSchemaCommand","commandId","requiredEventStores","inputSchema","outputSchema","eventAlreadyExistsRetries","onEventAlreadyExists","Promise","resolve","handler","undefined","input","eventStores","retriesLeft","attemptNumber","output","EventAlreadyExistsError","Error"],"sources":["../../../../src/command/implementations/jsonSchema.ts"],"sourcesContent":["import { FromSchema, JSONSchema } from 'json-schema-to-ts';\n\nimport { EventAlreadyExistsError } from '../../errors/eventAlreadyExists';\nimport { EventStore } from '../../eventStore';\nimport { Command } from '../command';\n\nexport type OnEventAlreadyExistsCallback = (\n error: EventAlreadyExistsError,\n context: { attemptNumber: number; retriesLeft: number },\n) => Promise<void>;\n\nexport class JSONSchemaCommand<\n $E extends EventStore[] = EventStore[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n IS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = IS extends JSONSchema ? FromSchema<IS> : any,\n OS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = OS extends JSONSchema ? FromSchema<OS> : any,\n> implements Command<$E, E, I, O>\n{\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries: number;\n onEventAlreadyExists: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n inputSchema,\n outputSchema,\n eventAlreadyExistsRetries = 2,\n onEventAlreadyExists = async () => new Promise(resolve => resolve()),\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries?: number;\n onEventAlreadyExists?: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.eventAlreadyExistsRetries = eventAlreadyExistsRetries;\n this.onEventAlreadyExists = onEventAlreadyExists;\n\n if (inputSchema !== undefined) {\n this.inputSchema = inputSchema;\n }\n\n if (outputSchema !== undefined) {\n this.outputSchema = outputSchema;\n }\n\n this.handler = async (input, eventStores) => {\n let retriesLeft = this.eventAlreadyExistsRetries;\n let attemptNumber = 1;\n\n while (retriesLeft >= 0) {\n try {\n const output = await handler(input, eventStores);\n\n return output;\n } catch (error) {\n if (!(error instanceof EventAlreadyExistsError)) {\n throw error;\n }\n\n await this.onEventAlreadyExists(error, {\n attemptNumber,\n retriesLeft,\n });\n\n if (retriesLeft === 0) {\n throw error;\n }\n\n retriesLeft -= 1;\n attemptNumber += 1;\n }\n }\n\n /**\n * @debt interface \"find a better thing to do in this case (which should not happen anyway)\"\n */\n throw new Error('Handler failed to execute');\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA;;IASaA,iB,+CAYX;AAaA,iCAgBG;EAAA;;EAAA,IAfDC,SAeC,QAfDA,SAeC;EAAA,IAdDC,mBAcC,QAdDA,mBAcC;EAAA,IAbDC,WAaC,QAbDA,WAaC;EAAA,IAZDC,YAYC,QAZDA,YAYC;EAAA,iCAXDC,yBAWC;EAAA,IAXDA,yBAWC,sCAX2B,CAW3B;EAAA,iCAVDC,oBAUC;EAAA,IAVDA,oBAUC,iIAVsB;IAAA;MAAA;QAAA;UAAA;YAAA,iCAAY,IAAIC,OAAJ,CAAY,UAAAC,OAAO;cAAA,OAAIA,OAAO,EAAX;YAAA,CAAnB,CAAZ;;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAUtB;EAAA,IATDC,OASC,QATDA,OASC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EACD,KAAKR,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKG,yBAAL,GAAiCA,yBAAjC;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;;EAEA,IAAIH,WAAW,KAAKO,SAApB,EAA+B;IAC7B,KAAKP,WAAL,GAAmBA,WAAnB;EACD;;EAED,IAAIC,YAAY,KAAKM,SAArB,EAAgC;IAC9B,KAAKN,YAAL,GAAoBA,YAApB;EACD;;EAED,KAAKK,OAAL;IAAA,0FAAe,kBAAOE,KAAP,EAAcC,WAAd;MAAA;MAAA;QAAA;UAAA;YAAA;cACTC,WADS,GACK,KAAI,CAACR,yBADV;cAETS,aAFS,GAEO,CAFP;;YAAA;cAAA,MAIND,WAAW,IAAI,CAJT;gBAAA;gBAAA;cAAA;;cAAA;cAAA;cAAA,OAMYJ,OAAO,CAACE,KAAD,EAAQC,WAAR,CANnB;;YAAA;cAMHG,MANG;cAAA,kCAQFA,MARE;;YAAA;cAAA;cAAA;;cAAA,IAUH,wBAAiBC,2CAVd;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAAA;cAAA,OAcH,KAAI,CAACV,oBAAL,eAAiC;gBACrCQ,aAAa,EAAbA,aADqC;gBAErCD,WAAW,EAAXA;cAFqC,CAAjC,CAdG;;YAAA;cAAA,MAmBLA,WAAW,KAAK,CAnBX;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAuBTA,WAAW,IAAI,CAAf;cACAC,aAAa,IAAI,CAAjB;;YAxBS;cAAA;cAAA;;YAAA;cAAA,MA+BP,IAAIG,KAAJ,CAAU,2BAAV,CA/BO;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAf;;IAAA;MAAA;IAAA;EAAA;AAiCD,C"}

@@ -14,2 +14,4 @@ "use strict";

var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));

@@ -23,2 +25,4 @@

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }

@@ -41,2 +45,5 @@

_this = _super.call(this, "Event already exists for ".concat(eventStoreId !== null && eventStoreId !== void 0 ? eventStoreId : '', " aggregate ").concat(aggregateId, " and version ").concat(version));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "eventStoreId", void 0);
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "aggregateId", void 0);
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "version", void 0);
_this.aggregateId = aggregateId;

@@ -43,0 +50,0 @@ _this.version = version;

@@ -1,1 +0,1 @@

{"version":3,"file":"eventAlreadyExists.js","names":["EventAlreadyExistsError","eventStoreId","aggregateId","version","Error"],"sources":["../../../src/errors/eventAlreadyExists.ts"],"sourcesContent":["export class EventAlreadyExistsError extends Error {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n\n constructor({\n eventStoreId,\n aggregateId,\n version,\n }: {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n }) {\n super(\n `Event already exists for ${\n eventStoreId ?? ''\n } aggregate ${aggregateId} and version ${version}`,\n );\n\n this.aggregateId = aggregateId;\n this.version = version;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,uB;;;;;EAKX,uCAQG;IAAA;;IAAA,IAPDC,YAOC,QAPDA,YAOC;IAAA,IANDC,WAMC,QANDA,WAMC;IAAA,IALDC,OAKC,QALDA,OAKC;IAAA;IACD,6DAEIF,YAFJ,aAEIA,YAFJ,cAEIA,YAFJ,GAEoB,EAFpB,wBAGgBC,WAHhB,0BAG2CC,OAH3C;IAMA,MAAKD,WAAL,GAAmBA,WAAnB;IACA,MAAKC,OAAL,GAAeA,OAAf;IARC;EASF;;;kDAtB0CC,K"}
{"version":3,"file":"eventAlreadyExists.js","names":["EventAlreadyExistsError","eventStoreId","aggregateId","version","Error"],"sources":["../../../src/errors/eventAlreadyExists.ts"],"sourcesContent":["export class EventAlreadyExistsError extends Error {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n\n constructor({\n eventStoreId,\n aggregateId,\n version,\n }: {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n }) {\n super(\n `Event already exists for ${\n eventStoreId ?? ''\n } aggregate ${aggregateId} and version ${version}`,\n );\n\n this.aggregateId = aggregateId;\n this.version = version;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,uB;;;;;EAKX,uCAQG;IAAA;;IAAA,IAPDC,YAOC,QAPDA,YAOC;IAAA,IANDC,WAMC,QANDA,WAMC;IAAA,IALDC,OAKC,QALDA,OAKC;IAAA;IACD,6DAEIF,YAFJ,aAEIA,YAFJ,cAEIA,YAFJ,GAEoB,EAFpB,wBAGgBC,WAHhB,0BAG2CC,OAH3C;IADC;IAAA;IAAA;IAOD,MAAKD,WAAL,GAAmBA,WAAnB;IACA,MAAKC,OAAL,GAAeA,OAAf;IARC;EASF;;;kDAtB0CC,K"}

@@ -14,2 +14,4 @@ "use strict";

var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));

@@ -23,2 +25,4 @@

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }

@@ -39,2 +43,3 @@

_this = _super.call(this, "Storage Adapter undefined for event store ".concat(eventStoreId, " "));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "eventStoreId", void 0);
_this.eventStoreId = eventStoreId;

@@ -41,0 +46,0 @@ return _this;

@@ -1,1 +0,1 @@

{"version":3,"file":"undefinedStorageAdapterError.js","names":["UndefinedStorageAdapterError","eventStoreId","Error"],"sources":["../../../src/errors/undefinedStorageAdapterError.ts"],"sourcesContent":["export class UndefinedStorageAdapterError extends Error {\n eventStoreId: string;\n\n constructor({ eventStoreId }: { eventStoreId: string }) {\n super(`Storage Adapter undefined for event store ${eventStoreId} `);\n\n this.eventStoreId = eventStoreId;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,4B;;;;;EAGX,4CAAwD;IAAA;;IAAA,IAA1CC,YAA0C,QAA1CA,YAA0C;IAAA;IACtD,8EAAmDA,YAAnD;IAEA,MAAKA,YAAL,GAAoBA,YAApB;IAHsD;EAIvD;;;kDAP+CC,K"}
{"version":3,"file":"undefinedStorageAdapterError.js","names":["UndefinedStorageAdapterError","eventStoreId","Error"],"sources":["../../../src/errors/undefinedStorageAdapterError.ts"],"sourcesContent":["export class UndefinedStorageAdapterError extends Error {\n eventStoreId: string;\n\n constructor({ eventStoreId }: { eventStoreId: string }) {\n super(`Storage Adapter undefined for event store ${eventStoreId} `);\n\n this.eventStoreId = eventStoreId;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,4B;;;;;EAGX,4CAAwD;IAAA;;IAAA,IAA1CC,YAA0C,QAA1CA,YAA0C;IAAA;IACtD,8EAAmDA,YAAnD;IADsD;IAGtD,MAAKA,YAAL,GAAoBA,YAApB;IAHsD;EAIvD;;;kDAP+CC,K"}

@@ -14,2 +14,4 @@ "use strict";

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var EventType = /*#__PURE__*/(0, _createClass2["default"])( // @ts-ignore _types only

@@ -19,2 +21,4 @@ function EventType(_ref) {

(0, _classCallCheck2["default"])(this, EventType);
(0, _defineProperty2["default"])(this, "_types", void 0);
(0, _defineProperty2["default"])(this, "type", void 0);
this.type = type;

@@ -21,0 +25,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"eventType.js","names":["EventType","type"],"sources":["../../../src/event/eventType.ts"],"sourcesContent":["import { EventDetail } from './eventDetail';\n\nexport class EventType<\n T extends string = string,\n D extends EventDetail = EventDetail,\n> {\n // @ts-ignore _types only\n _types: {\n detail: D;\n };\n type: T;\n\n constructor({ type }: { type: T }) {\n this.type = type;\n }\n}\n\nexport type EventTypeDetail<E extends EventType> = E['_types']['detail'];\n\nexport type EventTypesDetails<E extends EventType[]> = E[number] extends infer U\n ? U extends EventType\n ? EventTypeDetail<U>\n : never\n : never;\n"],"mappings":";;;;;;;;;;;;;IAEaA,S,+CAIX;AAMA,yBAAmC;EAAA,IAArBC,IAAqB,QAArBA,IAAqB;EAAA;EACjC,KAAKA,IAAL,GAAYA,IAAZ;AACD,C"}
{"version":3,"file":"eventType.js","names":["EventType","type"],"sources":["../../../src/event/eventType.ts"],"sourcesContent":["import { EventDetail } from './eventDetail';\n\nexport class EventType<\n T extends string = string,\n D extends EventDetail = EventDetail,\n> {\n // @ts-ignore _types only\n _types: {\n detail: D;\n };\n type: T;\n\n constructor({ type }: { type: T }) {\n this.type = type;\n }\n}\n\nexport type EventTypeDetail<E extends EventType> = E['_types']['detail'];\n\nexport type EventTypesDetails<E extends EventType[]> = E[number] extends infer U\n ? U extends EventType\n ? EventTypeDetail<U>\n : never\n : never;\n"],"mappings":";;;;;;;;;;;;;;;IAEaA,S,+CAIX;AAMA,yBAAmC;EAAA,IAArBC,IAAqB,QAArBA,IAAqB;EAAA;EAAA;EAAA;EACjC,KAAKA,IAAL,GAAYA,IAAZ;AACD,C"}

@@ -14,4 +14,2 @@ "use strict";

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));

@@ -21,2 +19,4 @@

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _undefinedStorageAdapterError = require("./errors/undefinedStorageAdapterError");

@@ -41,2 +41,15 @@

(0, _classCallCheck2["default"])(this, EventStore);
(0, _defineProperty2["default"])(this, "_types", void 0);
(0, _defineProperty2["default"])(this, "eventStoreId", void 0);
(0, _defineProperty2["default"])(this, "eventStoreEvents", void 0);
(0, _defineProperty2["default"])(this, "reduce", void 0);
(0, _defineProperty2["default"])(this, "simulateSideEffect", void 0);
(0, _defineProperty2["default"])(this, "getEvents", void 0);
(0, _defineProperty2["default"])(this, "pushEvent", void 0);
(0, _defineProperty2["default"])(this, "pushEventTransaction", void 0);
(0, _defineProperty2["default"])(this, "listAggregateIds", void 0);
(0, _defineProperty2["default"])(this, "buildAggregate", void 0);
(0, _defineProperty2["default"])(this, "getAggregate", void 0);
(0, _defineProperty2["default"])(this, "simulateAggregate", void 0);
(0, _defineProperty2["default"])(this, "storageAdapter", void 0);
this.eventStoreId = eventStoreId;

@@ -124,27 +137,33 @@ this.eventStoreEvents = eventStoreEvents;

this.listAggregateIds = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (_this.storageAdapter) {
_context3.next = 2;
break;
}
this.listAggregateIds = /*#__PURE__*/function () {
var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(options) {
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (_this.storageAdapter) {
_context3.next = 2;
break;
}
throw new _undefinedStorageAdapterError.UndefinedStorageAdapterError({
eventStoreId: _this.eventStoreId
});
throw new _undefinedStorageAdapterError.UndefinedStorageAdapterError({
eventStoreId: _this.eventStoreId
});
case 2:
return _context3.abrupt("return", _this.storageAdapter.listAggregateIds());
case 2:
return _context3.abrupt("return", _this.storageAdapter.listAggregateIds(options));
case 3:
case "end":
return _context3.stop();
case 3:
case "end":
return _context3.stop();
}
}
}
}, _callee3);
}));
}, _callee3);
}));
return function (_x4) {
return _ref4.apply(this, arguments);
};
}();
this.buildAggregate = function (eventDetails) {

@@ -184,3 +203,3 @@ return eventDetails.reduce(_this.reduce, undefined);

return function (_x4, _x5) {
return function (_x5, _x6) {
return _ref5.apply(this, arguments);

@@ -187,0 +206,0 @@ };

@@ -1,1 +0,1 @@

{"version":3,"file":"eventStore.js","names":["EventStore","eventStoreId","eventStoreEvents","reduce","simulateSideEffect","indexedEvents","event","version","storageAdapter","getEvents","aggregateId","queryOptions","UndefinedStorageAdapterError","pushEvent","eventDetail","pushEventTransaction","listAggregateIds","buildAggregate","eventDetails","undefined","getAggregate","options","events","aggregate","lastEvent","length","simulateAggregate","simulationDate","eventsWithSideEffects","Object","values","filter","timestamp","sortedEventsWithSideEffects","sort","timestampA","timestampB","map","index"],"sources":["../../src/eventStore.ts"],"sourcesContent":["import { Aggregate } from './aggregate';\nimport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nimport { EventDetail } from './event/eventDetail';\nimport { EventType, EventTypesDetails } from './event/eventType';\nimport { EventsQueryOptions, StorageAdapter } from './storageAdapter';\n\nexport type SimulationOptions = { simulationDate?: string };\n\nexport class EventStore<\n I extends string = string,\n E extends EventType[] = EventType[],\n $D extends EventDetail = EventTypesDetails<E>,\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // EventStore is contravariant on its fns args: We have to type them as any\n // So that EventStore implementations still extends the EventStore type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n D extends EventDetail = EventDetail extends $D ? any : $D,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n R extends (aggregate: any, event: D) => Aggregate = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n aggregate: any,\n event: D,\n ) => Aggregate,\n A extends Aggregate = ReturnType<R>,\n> {\n // @ts-ignore _types only\n _types: {\n details: $D;\n aggregate: A;\n };\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: D[] }>;\n pushEvent: (eventDetail: D) => Promise<void>;\n pushEventTransaction: (eventDetail: D) => unknown;\n listAggregateIds: () => Promise<{ aggregateIds: string[] }>;\n\n buildAggregate: (events: D[]) => A | undefined;\n getAggregate: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{\n aggregate: A | undefined;\n events: D[];\n lastEvent: D | undefined;\n }>;\n simulateAggregate: (\n events: D[],\n options?: SimulationOptions,\n ) => A | undefined;\n storageAdapter?: StorageAdapter;\n\n constructor({\n eventStoreId,\n eventStoreEvents,\n reduce,\n simulateSideEffect = (indexedEvents, event) => ({\n ...indexedEvents,\n [event.version]: event,\n }),\n storageAdapter,\n }: {\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect?: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n storageAdapter?: StorageAdapter;\n }) {\n this.eventStoreId = eventStoreId;\n this.eventStoreEvents = eventStoreEvents;\n this.reduce = reduce;\n this.simulateSideEffect = simulateSideEffect;\n this.storageAdapter = storageAdapter;\n\n this.getEvents = async (aggregateId, queryOptions) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n /**\n * @debt feature \"For the moment we just cast, we could implement validation + type guards at EventType level\"\n */\n return this.storageAdapter.getEvents(\n aggregateId,\n queryOptions,\n ) as Promise<{ events: D[] }>;\n };\n\n this.pushEvent = async (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.pushEvent(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.pushEventTransaction = (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n this.storageAdapter.pushEventTransaction(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.listAggregateIds = async () => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.listAggregateIds();\n };\n\n this.buildAggregate = (eventDetails: D[]) =>\n eventDetails.reduce(this.reduce, undefined as unknown as A) as\n | A\n | undefined;\n\n this.getAggregate = async (aggregateId, options) => {\n const { events } = await this.getEvents(aggregateId, options);\n const aggregate = this.buildAggregate(events);\n const lastEvent = events[events.length - 1];\n\n return { aggregate, events, lastEvent };\n };\n\n this.simulateAggregate = (\n events,\n { simulationDate } = {},\n ): A | undefined => {\n let eventsWithSideEffects = Object.values(\n events.reduce(this.simulateSideEffect, {} as Record<string, D>),\n );\n\n if (simulationDate !== undefined) {\n eventsWithSideEffects = eventsWithSideEffects.filter(\n ({ timestamp }) => timestamp <= simulationDate,\n );\n }\n\n const sortedEventsWithSideEffects = eventsWithSideEffects\n .sort(({ timestamp: timestampA }, { timestamp: timestampB }) =>\n timestampA < timestampB ? -1 : 1,\n )\n .map((event, index) => ({ ...event, version: index + 1 })) as D[];\n\n return this.buildAggregate(sortedEventsWithSideEffects);\n };\n }\n}\n\nexport type EventStoreEventsDetails<E extends EventStore> =\n E['_types']['details'];\n\nexport type EventStoreAggregate<E extends EventStore> =\n E['_types']['aggregate'];\n"],"mappings":"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"}
{"version":3,"file":"eventStore.js","names":["EventStore","eventStoreId","eventStoreEvents","reduce","simulateSideEffect","indexedEvents","event","version","storageAdapter","getEvents","aggregateId","queryOptions","UndefinedStorageAdapterError","pushEvent","eventDetail","pushEventTransaction","listAggregateIds","options","buildAggregate","eventDetails","undefined","getAggregate","events","aggregate","lastEvent","length","simulateAggregate","simulationDate","eventsWithSideEffects","Object","values","filter","timestamp","sortedEventsWithSideEffects","sort","timestampA","timestampB","map","index"],"sources":["../../src/eventStore.ts"],"sourcesContent":["import { Aggregate } from './aggregate';\nimport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nimport { EventDetail } from './event/eventDetail';\nimport { EventType, EventTypesDetails } from './event/eventType';\nimport {\n EventsQueryOptions,\n ListAggregateIdsOptions,\n ListAggregateIdsOutput,\n StorageAdapter,\n} from './storageAdapter';\n\nexport type SimulationOptions = { simulationDate?: string };\n\nexport class EventStore<\n I extends string = string,\n E extends EventType[] = EventType[],\n $D extends EventDetail = EventTypesDetails<E>,\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // EventStore is contravariant on its fns args: We have to type them as any\n // So that EventStore implementations still extends the EventStore type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n D extends EventDetail = EventDetail extends $D ? any : $D,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n R extends (aggregate: any, event: D) => Aggregate = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n aggregate: any,\n event: D,\n ) => Aggregate,\n A extends Aggregate = ReturnType<R>,\n> {\n // @ts-ignore _types only\n _types: {\n details: $D;\n aggregate: A;\n };\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: $D[] }>;\n pushEvent: (eventDetail: D) => Promise<void>;\n pushEventTransaction: (eventDetail: D) => unknown;\n listAggregateIds: (\n listAggregateOptions?: ListAggregateIdsOptions,\n ) => Promise<ListAggregateIdsOutput>;\n\n buildAggregate: (events: D[]) => A | undefined;\n getAggregate: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{\n aggregate: A | undefined;\n events: $D[];\n lastEvent: $D | undefined;\n }>;\n simulateAggregate: (\n events: D[],\n options?: SimulationOptions,\n ) => A | undefined;\n storageAdapter?: StorageAdapter;\n\n constructor({\n eventStoreId,\n eventStoreEvents,\n reduce,\n simulateSideEffect = (indexedEvents, event) => ({\n ...indexedEvents,\n [event.version]: event,\n }),\n storageAdapter,\n }: {\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect?: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n storageAdapter?: StorageAdapter;\n }) {\n this.eventStoreId = eventStoreId;\n this.eventStoreEvents = eventStoreEvents;\n this.reduce = reduce;\n this.simulateSideEffect = simulateSideEffect;\n this.storageAdapter = storageAdapter;\n\n this.getEvents = async (aggregateId, queryOptions) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n /**\n * @debt feature \"For the moment we just cast, we could implement validation + type guards at EventType level\"\n */\n return this.storageAdapter.getEvents(\n aggregateId,\n queryOptions,\n ) as Promise<{ events: $D[] }>;\n };\n\n this.pushEvent = async (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.pushEvent(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.pushEventTransaction = (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n this.storageAdapter.pushEventTransaction(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.listAggregateIds = async (options?: ListAggregateIdsOptions) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.listAggregateIds(options);\n };\n\n this.buildAggregate = (eventDetails: D[]) =>\n eventDetails.reduce(this.reduce, undefined as unknown as A) as\n | A\n | undefined;\n\n this.getAggregate = async (aggregateId, options) => {\n const { events } = await this.getEvents(aggregateId, options);\n const aggregate = this.buildAggregate(events as unknown as D[]);\n const lastEvent = events[events.length - 1];\n\n return { aggregate, events, lastEvent };\n };\n\n this.simulateAggregate = (\n events,\n { simulationDate } = {},\n ): A | undefined => {\n let eventsWithSideEffects = Object.values(\n events.reduce(this.simulateSideEffect, {} as Record<string, D>),\n );\n\n if (simulationDate !== undefined) {\n eventsWithSideEffects = eventsWithSideEffects.filter(\n ({ timestamp }) => timestamp <= simulationDate,\n );\n }\n\n const sortedEventsWithSideEffects = eventsWithSideEffects\n .sort(({ timestamp: timestampA }, { timestamp: timestampB }) =>\n timestampA < timestampB ? -1 : 1,\n )\n .map((event, index) => ({ ...event, version: index + 1 })) as D[];\n\n return this.buildAggregate(sortedEventsWithSideEffects);\n };\n }\n}\n\nexport type EventStoreEventsDetails<E extends EventStore> =\n E['_types']['details'];\n\nexport type EventStoreAggregate<E extends EventStore> =\n E['_types']['aggregate'];\n"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export type { Aggregate } from './aggregate';\nexport { EventType } from './event/eventType';\nexport type { EventTypeDetail, EventTypesDetails } from './event/eventType';\nexport type { EventDetail } from './event/eventDetail';\nexport { EventAlreadyExistsError } from './errors/eventAlreadyExists';\nexport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nexport { StorageAdapter } from './storageAdapter';\nexport type {\n EventsQueryOptions,\n PushEventContext,\n PushEventTransactionContext,\n} from './storageAdapter';\nexport { EventStore } from './eventStore';\nexport type {\n SimulationOptions,\n EventStoreEventsDetails,\n EventStoreAggregate,\n} from './eventStore';\nexport { Command, tuple } from './command/command';\nexport { JSONSchemaCommand } from './command/implementations/jsonSchema';\nexport type { OnEventAlreadyExistsCallback } from './command/implementations/jsonSchema';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAGA;;AACA;;AACA;;AAMA;;AAMA;;AACA"}
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export type { Aggregate } from './aggregate';\nexport { EventType } from './event/eventType';\nexport type { EventTypeDetail, EventTypesDetails } from './event/eventType';\nexport type { EventDetail } from './event/eventDetail';\nexport { EventAlreadyExistsError } from './errors/eventAlreadyExists';\nexport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nexport { StorageAdapter } from './storageAdapter';\nexport type {\n EventsQueryOptions,\n PushEventContext,\n PushEventTransactionContext,\n ListAggregateIdsOptions,\n ListAggregateIdsOutput,\n} from './storageAdapter';\nexport { EventStore } from './eventStore';\nexport type {\n SimulationOptions,\n EventStoreEventsDetails,\n EventStoreAggregate,\n} from './eventStore';\nexport { Command, tuple } from './command/command';\nexport { JSONSchemaCommand } from './command/implementations/jsonSchema';\nexport type { OnEventAlreadyExistsCallback } from './command/implementations/jsonSchema';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAGA;;AACA;;AACA;;AAQA;;AAMA;;AACA"}

@@ -14,2 +14,4 @@ "use strict";

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var StorageAdapter = /*#__PURE__*/(0, _createClass2["default"])(function StorageAdapter(_ref) {

@@ -21,2 +23,6 @@ var getEvents = _ref.getEvents,

(0, _classCallCheck2["default"])(this, StorageAdapter);
(0, _defineProperty2["default"])(this, "getEvents", void 0);
(0, _defineProperty2["default"])(this, "pushEvent", void 0);
(0, _defineProperty2["default"])(this, "pushEventTransaction", void 0);
(0, _defineProperty2["default"])(this, "listAggregateIds", void 0);
this.getEvents = getEvents;

@@ -23,0 +29,0 @@ this.pushEvent = pushEvent;

@@ -1,1 +0,1 @@

{"version":3,"file":"storageAdapter.js","names":["StorageAdapter","getEvents","pushEvent","pushEventTransaction","listAggregateIds"],"sources":["../../src/storageAdapter.ts"],"sourcesContent":["import { EventDetail } from 'event/eventDetail';\n\nexport type EventsQueryOptions = { maxVersion?: number };\nexport type PushEventContext = { eventStoreId?: string };\nexport type PushEventTransactionContext = { eventStoreId?: string };\n\nexport class StorageAdapter {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: () => Promise<{ aggregateIds: string[] }>;\n\n constructor({\n getEvents,\n pushEvent,\n pushEventTransaction,\n listAggregateIds,\n }: {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: () => Promise<{ aggregateIds: string[] }>;\n }) {\n this.getEvents = getEvents;\n this.pushEvent = pushEvent;\n this.pushEventTransaction = pushEventTransaction;\n this.listAggregateIds = listAggregateIds;\n }\n}\n"],"mappings":";;;;;;;;;;;;;IAMaA,c,8CAeX,8BAmBG;EAAA,IAlBDC,SAkBC,QAlBDA,SAkBC;EAAA,IAjBDC,SAiBC,QAjBDA,SAiBC;EAAA,IAhBDC,oBAgBC,QAhBDA,oBAgBC;EAAA,IAfDC,gBAeC,QAfDA,gBAeC;EAAA;EACD,KAAKH,SAAL,GAAiBA,SAAjB;EACA,KAAKC,SAAL,GAAiBA,SAAjB;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;EACA,KAAKC,gBAAL,GAAwBA,gBAAxB;AACD,C"}
{"version":3,"file":"storageAdapter.js","names":["StorageAdapter","getEvents","pushEvent","pushEventTransaction","listAggregateIds"],"sources":["../../src/storageAdapter.ts"],"sourcesContent":["import { EventDetail } from 'event/eventDetail';\n\nexport type EventsQueryOptions = { maxVersion?: number };\nexport type PushEventContext = { eventStoreId?: string };\nexport type PushEventTransactionContext = { eventStoreId?: string };\n\nexport type ListAggregateIdsOptions = {\n limit?: number;\n pageToken?: string;\n};\n\nexport type ListAggregateIdsOutput = {\n aggregateIds: string[];\n nextPageToken?: string;\n};\n\nexport class StorageAdapter {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: (\n options?: ListAggregateIdsOptions,\n ) => Promise<ListAggregateIdsOutput>;\n\n constructor({\n getEvents,\n pushEvent,\n pushEventTransaction,\n listAggregateIds,\n }: {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: (\n options?: ListAggregateIdsOptions,\n ) => Promise<ListAggregateIdsOutput>;\n }) {\n this.getEvents = getEvents;\n this.pushEvent = pushEvent;\n this.pushEventTransaction = pushEventTransaction;\n this.listAggregateIds = listAggregateIds;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;IAgBaA,c,8CAiBX,8BAqBG;EAAA,IApBDC,SAoBC,QApBDA,SAoBC;EAAA,IAnBDC,SAmBC,QAnBDA,SAmBC;EAAA,IAlBDC,oBAkBC,QAlBDA,oBAkBC;EAAA,IAjBDC,gBAiBC,QAjBDA,gBAiBC;EAAA;EAAA;EAAA;EAAA;EAAA;EACD,KAAKH,SAAL,GAAiBA,SAAjB;EACA,KAAKC,SAAL,GAAiBA,SAAjB;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;EACA,KAAKC,gBAAL,GAAwBA,gBAAxB;AACD,C"}
import _createClass from "@babel/runtime/helpers/createClass";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
export var tuple = function tuple() {

@@ -22,2 +23,10 @@ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {

_defineProperty(this, "_types", void 0);
_defineProperty(this, "commandId", void 0);
_defineProperty(this, "requiredEventStores", void 0);
_defineProperty(this, "handler", void 0);
this.commandId = commandId;

@@ -24,0 +33,0 @@ this.requiredEventStores = requiredEventStores;

@@ -1,1 +0,1 @@

{"version":3,"file":"command.js","names":["tuple","args","Command","commandId","requiredEventStores","handler"],"sources":["../../../src/command/command.ts"],"sourcesContent":["import { EventStore } from 'eventStore';\n\nexport const tuple = <A extends unknown[]>(...args: A): A => args;\n\n/**\n * @debt feature \"Command should be able to take metadata/context as 2nd inputs\"\n */\nexport class Command<\n $E extends EventStore[] = EventStore[],\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // Command is contravariant on its fns args: We have to type them as any\n // So that Command implementations still extends the Command type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = any,\n> {\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.handler = handler;\n }\n}\n"],"mappings":";;AAEA,OAAO,IAAMA,KAAK,GAAG,SAARA,KAAQ;EAAA,kCAAyBC,IAAzB;IAAyBA,IAAzB;EAAA;;EAAA,OAAwCA,IAAxC;AAAA,CAAd;AAEP;AACA;AACA;;AACA,WAAaC,OAAb,8BAYE;AASA,uBAQG;EAAA,IAPDC,SAOC,QAPDA,SAOC;EAAA,IANDC,mBAMC,QANDA,mBAMC;EAAA,IALDC,OAKC,QALDA,OAKC;;EAAA;;EACD,KAAKF,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKC,OAAL,GAAeA,OAAf;AACD,CAjCH"}
{"version":3,"file":"command.js","names":["tuple","args","Command","commandId","requiredEventStores","handler"],"sources":["../../../src/command/command.ts"],"sourcesContent":["import { EventStore } from 'eventStore';\n\nexport const tuple = <A extends unknown[]>(...args: A): A => args;\n\n/**\n * @debt feature \"Command should be able to take metadata/context as 2nd inputs\"\n */\nexport class Command<\n $E extends EventStore[] = EventStore[],\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // Command is contravariant on its fns args: We have to type them as any\n // So that Command implementations still extends the Command type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = any,\n> {\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.handler = handler;\n }\n}\n"],"mappings":";;;AAEA,OAAO,IAAMA,KAAK,GAAG,SAARA,KAAQ;EAAA,kCAAyBC,IAAzB;IAAyBA,IAAzB;EAAA;;EAAA,OAAwCA,IAAxC;AAAA,CAAd;AAEP;AACA;AACA;;AACA,WAAaC,OAAb,8BAYE;AASA,uBAQG;EAAA,IAPDC,SAOC,QAPDA,SAOC;EAAA,IANDC,mBAMC,QANDA,mBAMC;EAAA,IALDC,OAKC,QALDA,OAKC;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EACD,KAAKF,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKC,OAAL,GAAeA,OAAf;AACD,CAjCH"}
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _createClass from "@babel/runtime/helpers/createClass";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _regeneratorRuntime from "@babel/runtime/regenerator";

@@ -37,2 +38,18 @@ import { EventAlreadyExistsError } from "../../errors/eventAlreadyExists";

_defineProperty(this, "_types", void 0);
_defineProperty(this, "commandId", void 0);
_defineProperty(this, "requiredEventStores", void 0);
_defineProperty(this, "inputSchema", void 0);
_defineProperty(this, "outputSchema", void 0);
_defineProperty(this, "eventAlreadyExistsRetries", void 0);
_defineProperty(this, "onEventAlreadyExists", void 0);
_defineProperty(this, "handler", void 0);
this.commandId = commandId;

@@ -39,0 +56,0 @@ this.requiredEventStores = requiredEventStores;

@@ -1,1 +0,1 @@

{"version":3,"file":"jsonSchema.js","names":["EventAlreadyExistsError","JSONSchemaCommand","commandId","requiredEventStores","inputSchema","outputSchema","eventAlreadyExistsRetries","onEventAlreadyExists","Promise","resolve","handler","undefined","input","eventStores","retriesLeft","attemptNumber","output","Error"],"sources":["../../../../src/command/implementations/jsonSchema.ts"],"sourcesContent":["import { FromSchema, JSONSchema } from 'json-schema-to-ts';\n\nimport { EventAlreadyExistsError } from '../../errors/eventAlreadyExists';\nimport { EventStore } from '../../eventStore';\nimport { Command } from '../command';\n\nexport type OnEventAlreadyExistsCallback = (\n error: EventAlreadyExistsError,\n context: { attemptNumber: number; retriesLeft: number },\n) => Promise<void>;\n\nexport class JSONSchemaCommand<\n $E extends EventStore[] = EventStore[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n IS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = IS extends JSONSchema ? FromSchema<IS> : any,\n OS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = OS extends JSONSchema ? FromSchema<OS> : any,\n> implements Command<$E, E, I, O>\n{\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries: number;\n onEventAlreadyExists: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n inputSchema,\n outputSchema,\n eventAlreadyExistsRetries = 2,\n onEventAlreadyExists = async () => new Promise(resolve => resolve()),\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries?: number;\n onEventAlreadyExists?: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.eventAlreadyExistsRetries = eventAlreadyExistsRetries;\n this.onEventAlreadyExists = onEventAlreadyExists;\n\n if (inputSchema !== undefined) {\n this.inputSchema = inputSchema;\n }\n\n if (outputSchema !== undefined) {\n this.outputSchema = outputSchema;\n }\n\n this.handler = async (input, eventStores) => {\n let retriesLeft = this.eventAlreadyExistsRetries;\n let attemptNumber = 1;\n\n while (retriesLeft >= 0) {\n try {\n const output = await handler(input, eventStores);\n\n return output;\n } catch (error) {\n if (!(error instanceof EventAlreadyExistsError)) {\n throw error;\n }\n\n await this.onEventAlreadyExists(error, {\n attemptNumber,\n retriesLeft,\n });\n\n if (retriesLeft === 0) {\n throw error;\n }\n\n retriesLeft -= 1;\n attemptNumber += 1;\n }\n }\n\n /**\n * @debt interface \"find a better thing to do in this case (which should not happen anyway)\"\n */\n throw new Error('Handler failed to execute');\n };\n }\n}\n"],"mappings":";;;;AAEA,SAASA,uBAAT;AASA,WAAaC,iBAAb,8BAYE;AAaA,iCAgBG;EAAA;;EAAA,IAfDC,SAeC,QAfDA,SAeC;EAAA,IAdDC,mBAcC,QAdDA,mBAcC;EAAA,IAbDC,WAaC,QAbDA,WAaC;EAAA,IAZDC,YAYC,QAZDA,YAYC;EAAA,iCAXDC,yBAWC;EAAA,IAXDA,yBAWC,sCAX2B,CAW3B;EAAA,iCAVDC,oBAUC;EAAA,IAVDA,oBAUC,4GAVsB;IAAA;MAAA;QAAA;UAAA;YAAA,iCAAY,IAAIC,OAAJ,CAAY,UAAAC,OAAO;cAAA,OAAIA,OAAO,EAAX;YAAA,CAAnB,CAAZ;;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAUtB;EAAA,IATDC,OASC,QATDA,OASC;;EAAA;;EACD,KAAKR,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKG,yBAAL,GAAiCA,yBAAjC;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;;EAEA,IAAIH,WAAW,KAAKO,SAApB,EAA+B;IAC7B,KAAKP,WAAL,GAAmBA,WAAnB;EACD;;EAED,IAAIC,YAAY,KAAKM,SAArB,EAAgC;IAC9B,KAAKN,YAAL,GAAoBA,YAApB;EACD;;EAED,KAAKK,OAAL;IAAA,qEAAe,kBAAOE,KAAP,EAAcC,WAAd;MAAA;MAAA;QAAA;UAAA;YAAA;cACTC,WADS,GACK,KAAI,CAACR,yBADV;cAETS,aAFS,GAEO,CAFP;;YAAA;cAAA,MAIND,WAAW,IAAI,CAJT;gBAAA;gBAAA;cAAA;;cAAA;cAAA;cAAA,OAMYJ,OAAO,CAACE,KAAD,EAAQC,WAAR,CANnB;;YAAA;cAMHG,MANG;cAAA,kCAQFA,MARE;;YAAA;cAAA;cAAA;;cAAA,IAUH,wBAAiBhB,uBAVd;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAAA;cAAA,OAcH,KAAI,CAACO,oBAAL,eAAiC;gBACrCQ,aAAa,EAAbA,aADqC;gBAErCD,WAAW,EAAXA;cAFqC,CAAjC,CAdG;;YAAA;cAAA,MAmBLA,WAAW,KAAK,CAnBX;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAuBTA,WAAW,IAAI,CAAf;cACAC,aAAa,IAAI,CAAjB;;YAxBS;cAAA;cAAA;;YAAA;cAAA,MA+BP,IAAIE,KAAJ,CAAU,2BAAV,CA/BO;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAf;;IAAA;MAAA;IAAA;EAAA;AAiCD,CAxFH"}
{"version":3,"file":"jsonSchema.js","names":["EventAlreadyExistsError","JSONSchemaCommand","commandId","requiredEventStores","inputSchema","outputSchema","eventAlreadyExistsRetries","onEventAlreadyExists","Promise","resolve","handler","undefined","input","eventStores","retriesLeft","attemptNumber","output","Error"],"sources":["../../../../src/command/implementations/jsonSchema.ts"],"sourcesContent":["import { FromSchema, JSONSchema } from 'json-schema-to-ts';\n\nimport { EventAlreadyExistsError } from '../../errors/eventAlreadyExists';\nimport { EventStore } from '../../eventStore';\nimport { Command } from '../command';\n\nexport type OnEventAlreadyExistsCallback = (\n error: EventAlreadyExistsError,\n context: { attemptNumber: number; retriesLeft: number },\n) => Promise<void>;\n\nexport class JSONSchemaCommand<\n $E extends EventStore[] = EventStore[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n E extends EventStore[] = EventStore[] extends $E ? any : $E,\n IS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n I = IS extends JSONSchema ? FromSchema<IS> : any,\n OS extends JSONSchema | undefined = JSONSchema | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n O = OS extends JSONSchema ? FromSchema<OS> : any,\n> implements Command<$E, E, I, O>\n{\n // @ts-ignore _types only\n _types: {\n input: I;\n output: O;\n };\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries: number;\n onEventAlreadyExists: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n\n constructor({\n commandId,\n requiredEventStores,\n inputSchema,\n outputSchema,\n eventAlreadyExistsRetries = 2,\n onEventAlreadyExists = async () => new Promise(resolve => resolve()),\n handler,\n }: {\n commandId: string;\n requiredEventStores: $E;\n inputSchema?: IS;\n outputSchema?: OS;\n eventAlreadyExistsRetries?: number;\n onEventAlreadyExists?: OnEventAlreadyExistsCallback;\n handler: (input: I, requiredEventStores: E) => Promise<O>;\n }) {\n this.commandId = commandId;\n this.requiredEventStores = requiredEventStores;\n this.eventAlreadyExistsRetries = eventAlreadyExistsRetries;\n this.onEventAlreadyExists = onEventAlreadyExists;\n\n if (inputSchema !== undefined) {\n this.inputSchema = inputSchema;\n }\n\n if (outputSchema !== undefined) {\n this.outputSchema = outputSchema;\n }\n\n this.handler = async (input, eventStores) => {\n let retriesLeft = this.eventAlreadyExistsRetries;\n let attemptNumber = 1;\n\n while (retriesLeft >= 0) {\n try {\n const output = await handler(input, eventStores);\n\n return output;\n } catch (error) {\n if (!(error instanceof EventAlreadyExistsError)) {\n throw error;\n }\n\n await this.onEventAlreadyExists(error, {\n attemptNumber,\n retriesLeft,\n });\n\n if (retriesLeft === 0) {\n throw error;\n }\n\n retriesLeft -= 1;\n attemptNumber += 1;\n }\n }\n\n /**\n * @debt interface \"find a better thing to do in this case (which should not happen anyway)\"\n */\n throw new Error('Handler failed to execute');\n };\n }\n}\n"],"mappings":";;;;;AAEA,SAASA,uBAAT;AASA,WAAaC,iBAAb,8BAYE;AAaA,iCAgBG;EAAA;;EAAA,IAfDC,SAeC,QAfDA,SAeC;EAAA,IAdDC,mBAcC,QAdDA,mBAcC;EAAA,IAbDC,WAaC,QAbDA,WAaC;EAAA,IAZDC,YAYC,QAZDA,YAYC;EAAA,iCAXDC,yBAWC;EAAA,IAXDA,yBAWC,sCAX2B,CAW3B;EAAA,iCAVDC,oBAUC;EAAA,IAVDA,oBAUC,4GAVsB;IAAA;MAAA;QAAA;UAAA;YAAA,iCAAY,IAAIC,OAAJ,CAAY,UAAAC,OAAO;cAAA,OAAIA,OAAO,EAAX;YAAA,CAAnB,CAAZ;;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAUtB;EAAA,IATDC,OASC,QATDA,OASC;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EACD,KAAKR,SAAL,GAAiBA,SAAjB;EACA,KAAKC,mBAAL,GAA2BA,mBAA3B;EACA,KAAKG,yBAAL,GAAiCA,yBAAjC;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;;EAEA,IAAIH,WAAW,KAAKO,SAApB,EAA+B;IAC7B,KAAKP,WAAL,GAAmBA,WAAnB;EACD;;EAED,IAAIC,YAAY,KAAKM,SAArB,EAAgC;IAC9B,KAAKN,YAAL,GAAoBA,YAApB;EACD;;EAED,KAAKK,OAAL;IAAA,qEAAe,kBAAOE,KAAP,EAAcC,WAAd;MAAA;MAAA;QAAA;UAAA;YAAA;cACTC,WADS,GACK,KAAI,CAACR,yBADV;cAETS,aAFS,GAEO,CAFP;;YAAA;cAAA,MAIND,WAAW,IAAI,CAJT;gBAAA;gBAAA;cAAA;;cAAA;cAAA;cAAA,OAMYJ,OAAO,CAACE,KAAD,EAAQC,WAAR,CANnB;;YAAA;cAMHG,MANG;cAAA,kCAQFA,MARE;;YAAA;cAAA;cAAA;;cAAA,IAUH,wBAAiBhB,uBAVd;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAAA;cAAA,OAcH,KAAI,CAACO,oBAAL,eAAiC;gBACrCQ,aAAa,EAAbA,aADqC;gBAErCD,WAAW,EAAXA;cAFqC,CAAjC,CAdG;;YAAA;cAAA,MAmBLA,WAAW,KAAK,CAnBX;gBAAA;gBAAA;cAAA;;cAAA;;YAAA;cAuBTA,WAAW,IAAI,CAAf;cACAC,aAAa,IAAI,CAAjB;;YAxBS;cAAA;cAAA;;YAAA;cAAA,MA+BP,IAAIE,KAAJ,CAAU,2BAAV,CA/BO;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAf;;IAAA;MAAA;IAAA;EAAA;AAiCD,CAxFH"}
import _createClass from "@babel/runtime/helpers/createClass";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
import _inherits from "@babel/runtime/helpers/inherits";

@@ -7,2 +8,3 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";

import _wrapNativeSuper from "@babel/runtime/helpers/wrapNativeSuper";
import _defineProperty from "@babel/runtime/helpers/defineProperty";

@@ -28,2 +30,9 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }

_this = _super.call(this, "Event already exists for ".concat(eventStoreId !== null && eventStoreId !== void 0 ? eventStoreId : '', " aggregate ").concat(aggregateId, " and version ").concat(version));
_defineProperty(_assertThisInitialized(_this), "eventStoreId", void 0);
_defineProperty(_assertThisInitialized(_this), "aggregateId", void 0);
_defineProperty(_assertThisInitialized(_this), "version", void 0);
_this.aggregateId = aggregateId;

@@ -30,0 +39,0 @@ _this.version = version;

@@ -1,1 +0,1 @@

{"version":3,"file":"eventAlreadyExists.js","names":["EventAlreadyExistsError","eventStoreId","aggregateId","version","Error"],"sources":["../../../src/errors/eventAlreadyExists.ts"],"sourcesContent":["export class EventAlreadyExistsError extends Error {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n\n constructor({\n eventStoreId,\n aggregateId,\n version,\n }: {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n }) {\n super(\n `Event already exists for ${\n eventStoreId ?? ''\n } aggregate ${aggregateId} and version ${version}`,\n );\n\n this.aggregateId = aggregateId;\n this.version = version;\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA,WAAaA,uBAAb;EAAA;;EAAA;;EAKE,uCAQG;IAAA;;IAAA,IAPDC,YAOC,QAPDA,YAOC;IAAA,IANDC,WAMC,QANDA,WAMC;IAAA,IALDC,OAKC,QALDA,OAKC;;IAAA;;IACD,6DAEIF,YAFJ,aAEIA,YAFJ,cAEIA,YAFJ,GAEoB,EAFpB,wBAGgBC,WAHhB,0BAG2CC,OAH3C;IAMA,MAAKD,WAAL,GAAmBA,WAAnB;IACA,MAAKC,OAAL,GAAeA,OAAf;IARC;EASF;;EAtBH;AAAA,iCAA6CC,KAA7C"}
{"version":3,"file":"eventAlreadyExists.js","names":["EventAlreadyExistsError","eventStoreId","aggregateId","version","Error"],"sources":["../../../src/errors/eventAlreadyExists.ts"],"sourcesContent":["export class EventAlreadyExistsError extends Error {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n\n constructor({\n eventStoreId,\n aggregateId,\n version,\n }: {\n eventStoreId?: string;\n aggregateId: string;\n version: number;\n }) {\n super(\n `Event already exists for ${\n eventStoreId ?? ''\n } aggregate ${aggregateId} and version ${version}`,\n );\n\n this.aggregateId = aggregateId;\n this.version = version;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,WAAaA,uBAAb;EAAA;;EAAA;;EAKE,uCAQG;IAAA;;IAAA,IAPDC,YAOC,QAPDA,YAOC;IAAA,IANDC,WAMC,QANDA,WAMC;IAAA,IALDC,OAKC,QALDA,OAKC;;IAAA;;IACD,6DAEIF,YAFJ,aAEIA,YAFJ,cAEIA,YAFJ,GAEoB,EAFpB,wBAGgBC,WAHhB,0BAG2CC,OAH3C;;IADC;;IAAA;;IAAA;;IAOD,MAAKD,WAAL,GAAmBA,WAAnB;IACA,MAAKC,OAAL,GAAeA,OAAf;IARC;EASF;;EAtBH;AAAA,iCAA6CC,KAA7C"}
import _createClass from "@babel/runtime/helpers/createClass";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
import _inherits from "@babel/runtime/helpers/inherits";

@@ -7,2 +8,3 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";

import _wrapNativeSuper from "@babel/runtime/helpers/wrapNativeSuper";
import _defineProperty from "@babel/runtime/helpers/defineProperty";

@@ -26,2 +28,5 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }

_this = _super.call(this, "Storage Adapter undefined for event store ".concat(eventStoreId, " "));
_defineProperty(_assertThisInitialized(_this), "eventStoreId", void 0);
_this.eventStoreId = eventStoreId;

@@ -28,0 +33,0 @@ return _this;

@@ -1,1 +0,1 @@

{"version":3,"file":"undefinedStorageAdapterError.js","names":["UndefinedStorageAdapterError","eventStoreId","Error"],"sources":["../../../src/errors/undefinedStorageAdapterError.ts"],"sourcesContent":["export class UndefinedStorageAdapterError extends Error {\n eventStoreId: string;\n\n constructor({ eventStoreId }: { eventStoreId: string }) {\n super(`Storage Adapter undefined for event store ${eventStoreId} `);\n\n this.eventStoreId = eventStoreId;\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA,WAAaA,4BAAb;EAAA;;EAAA;;EAGE,4CAAwD;IAAA;;IAAA,IAA1CC,YAA0C,QAA1CA,YAA0C;;IAAA;;IACtD,8EAAmDA,YAAnD;IAEA,MAAKA,YAAL,GAAoBA,YAApB;IAHsD;EAIvD;;EAPH;AAAA,iCAAkDC,KAAlD"}
{"version":3,"file":"undefinedStorageAdapterError.js","names":["UndefinedStorageAdapterError","eventStoreId","Error"],"sources":["../../../src/errors/undefinedStorageAdapterError.ts"],"sourcesContent":["export class UndefinedStorageAdapterError extends Error {\n eventStoreId: string;\n\n constructor({ eventStoreId }: { eventStoreId: string }) {\n super(`Storage Adapter undefined for event store ${eventStoreId} `);\n\n this.eventStoreId = eventStoreId;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,WAAaA,4BAAb;EAAA;;EAAA;;EAGE,4CAAwD;IAAA;;IAAA,IAA1CC,YAA0C,QAA1CA,YAA0C;;IAAA;;IACtD,8EAAmDA,YAAnD;;IADsD;;IAGtD,MAAKA,YAAL,GAAoBA,YAApB;IAHsD;EAIvD;;EAPH;AAAA,iCAAkDC,KAAlD"}
import _createClass from "@babel/runtime/helpers/createClass";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
export var EventType = /*#__PURE__*/_createClass( // @ts-ignore _types only

@@ -9,4 +10,8 @@ function EventType(_ref) {

_defineProperty(this, "_types", void 0);
_defineProperty(this, "type", void 0);
this.type = type;
});
//# sourceMappingURL=eventType.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"eventType.js","names":["EventType","type"],"sources":["../../../src/event/eventType.ts"],"sourcesContent":["import { EventDetail } from './eventDetail';\n\nexport class EventType<\n T extends string = string,\n D extends EventDetail = EventDetail,\n> {\n // @ts-ignore _types only\n _types: {\n detail: D;\n };\n type: T;\n\n constructor({ type }: { type: T }) {\n this.type = type;\n }\n}\n\nexport type EventTypeDetail<E extends EventType> = E['_types']['detail'];\n\nexport type EventTypesDetails<E extends EventType[]> = E[number] extends infer U\n ? U extends EventType\n ? EventTypeDetail<U>\n : never\n : never;\n"],"mappings":";;AAEA,WAAaA,SAAb,8BAIE;AAMA,yBAAmC;EAAA,IAArBC,IAAqB,QAArBA,IAAqB;;EAAA;;EACjC,KAAKA,IAAL,GAAYA,IAAZ;AACD,CAZH"}
{"version":3,"file":"eventType.js","names":["EventType","type"],"sources":["../../../src/event/eventType.ts"],"sourcesContent":["import { EventDetail } from './eventDetail';\n\nexport class EventType<\n T extends string = string,\n D extends EventDetail = EventDetail,\n> {\n // @ts-ignore _types only\n _types: {\n detail: D;\n };\n type: T;\n\n constructor({ type }: { type: T }) {\n this.type = type;\n }\n}\n\nexport type EventTypeDetail<E extends EventType> = E['_types']['detail'];\n\nexport type EventTypesDetails<E extends EventType[]> = E[number] extends infer U\n ? U extends EventType\n ? EventTypeDetail<U>\n : never\n : never;\n"],"mappings":";;;AAEA,WAAaA,SAAb,8BAIE;AAMA,yBAAmC;EAAA,IAArBC,IAAqB,QAArBA,IAAqB;;EAAA;;EAAA;;EAAA;;EACjC,KAAKA,IAAL,GAAYA,IAAZ;AACD,CAZH"}
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _createClass from "@babel/runtime/helpers/createClass";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _regeneratorRuntime from "@babel/runtime/regenerator";

@@ -27,2 +27,28 @@

_defineProperty(this, "_types", void 0);
_defineProperty(this, "eventStoreId", void 0);
_defineProperty(this, "eventStoreEvents", void 0);
_defineProperty(this, "reduce", void 0);
_defineProperty(this, "simulateSideEffect", void 0);
_defineProperty(this, "getEvents", void 0);
_defineProperty(this, "pushEvent", void 0);
_defineProperty(this, "pushEventTransaction", void 0);
_defineProperty(this, "listAggregateIds", void 0);
_defineProperty(this, "buildAggregate", void 0);
_defineProperty(this, "getAggregate", void 0);
_defineProperty(this, "simulateAggregate", void 0);
_defineProperty(this, "storageAdapter", void 0);
this.eventStoreId = eventStoreId;

@@ -110,27 +136,33 @@ this.eventStoreEvents = eventStoreEvents;

this.listAggregateIds = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (_this.storageAdapter) {
_context3.next = 2;
break;
}
this.listAggregateIds = /*#__PURE__*/function () {
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(options) {
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
if (_this.storageAdapter) {
_context3.next = 2;
break;
}
throw new UndefinedStorageAdapterError({
eventStoreId: _this.eventStoreId
});
throw new UndefinedStorageAdapterError({
eventStoreId: _this.eventStoreId
});
case 2:
return _context3.abrupt("return", _this.storageAdapter.listAggregateIds());
case 2:
return _context3.abrupt("return", _this.storageAdapter.listAggregateIds(options));
case 3:
case "end":
return _context3.stop();
case 3:
case "end":
return _context3.stop();
}
}
}
}, _callee3);
}));
}, _callee3);
}));
return function (_x4) {
return _ref4.apply(this, arguments);
};
}();
this.buildAggregate = function (eventDetails) {

@@ -170,3 +202,3 @@ return eventDetails.reduce(_this.reduce, undefined);

return function (_x4, _x5) {
return function (_x5, _x6) {
return _ref5.apply(this, arguments);

@@ -173,0 +205,0 @@ };

@@ -1,1 +0,1 @@

{"version":3,"file":"eventStore.js","names":["UndefinedStorageAdapterError","EventStore","eventStoreId","eventStoreEvents","reduce","simulateSideEffect","indexedEvents","event","version","storageAdapter","getEvents","aggregateId","queryOptions","pushEvent","eventDetail","pushEventTransaction","listAggregateIds","buildAggregate","eventDetails","undefined","getAggregate","options","events","aggregate","lastEvent","length","simulateAggregate","simulationDate","eventsWithSideEffects","Object","values","filter","timestamp","sortedEventsWithSideEffects","sort","timestampA","timestampB","map","index"],"sources":["../../src/eventStore.ts"],"sourcesContent":["import { Aggregate } from './aggregate';\nimport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nimport { EventDetail } from './event/eventDetail';\nimport { EventType, EventTypesDetails } from './event/eventType';\nimport { EventsQueryOptions, StorageAdapter } from './storageAdapter';\n\nexport type SimulationOptions = { simulationDate?: string };\n\nexport class EventStore<\n I extends string = string,\n E extends EventType[] = EventType[],\n $D extends EventDetail = EventTypesDetails<E>,\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // EventStore is contravariant on its fns args: We have to type them as any\n // So that EventStore implementations still extends the EventStore type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n D extends EventDetail = EventDetail extends $D ? any : $D,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n R extends (aggregate: any, event: D) => Aggregate = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n aggregate: any,\n event: D,\n ) => Aggregate,\n A extends Aggregate = ReturnType<R>,\n> {\n // @ts-ignore _types only\n _types: {\n details: $D;\n aggregate: A;\n };\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: D[] }>;\n pushEvent: (eventDetail: D) => Promise<void>;\n pushEventTransaction: (eventDetail: D) => unknown;\n listAggregateIds: () => Promise<{ aggregateIds: string[] }>;\n\n buildAggregate: (events: D[]) => A | undefined;\n getAggregate: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{\n aggregate: A | undefined;\n events: D[];\n lastEvent: D | undefined;\n }>;\n simulateAggregate: (\n events: D[],\n options?: SimulationOptions,\n ) => A | undefined;\n storageAdapter?: StorageAdapter;\n\n constructor({\n eventStoreId,\n eventStoreEvents,\n reduce,\n simulateSideEffect = (indexedEvents, event) => ({\n ...indexedEvents,\n [event.version]: event,\n }),\n storageAdapter,\n }: {\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect?: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n storageAdapter?: StorageAdapter;\n }) {\n this.eventStoreId = eventStoreId;\n this.eventStoreEvents = eventStoreEvents;\n this.reduce = reduce;\n this.simulateSideEffect = simulateSideEffect;\n this.storageAdapter = storageAdapter;\n\n this.getEvents = async (aggregateId, queryOptions) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n /**\n * @debt feature \"For the moment we just cast, we could implement validation + type guards at EventType level\"\n */\n return this.storageAdapter.getEvents(\n aggregateId,\n queryOptions,\n ) as Promise<{ events: D[] }>;\n };\n\n this.pushEvent = async (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.pushEvent(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.pushEventTransaction = (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n this.storageAdapter.pushEventTransaction(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.listAggregateIds = async () => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.listAggregateIds();\n };\n\n this.buildAggregate = (eventDetails: D[]) =>\n eventDetails.reduce(this.reduce, undefined as unknown as A) as\n | A\n | undefined;\n\n this.getAggregate = async (aggregateId, options) => {\n const { events } = await this.getEvents(aggregateId, options);\n const aggregate = this.buildAggregate(events);\n const lastEvent = events[events.length - 1];\n\n return { aggregate, events, lastEvent };\n };\n\n this.simulateAggregate = (\n events,\n { simulationDate } = {},\n ): A | undefined => {\n let eventsWithSideEffects = Object.values(\n events.reduce(this.simulateSideEffect, {} as Record<string, D>),\n );\n\n if (simulationDate !== undefined) {\n eventsWithSideEffects = eventsWithSideEffects.filter(\n ({ timestamp }) => timestamp <= simulationDate,\n );\n }\n\n const sortedEventsWithSideEffects = eventsWithSideEffects\n .sort(({ timestamp: timestampA }, { timestamp: timestampB }) =>\n timestampA < timestampB ? -1 : 1,\n )\n .map((event, index) => ({ ...event, version: index + 1 })) as D[];\n\n return this.buildAggregate(sortedEventsWithSideEffects);\n };\n }\n}\n\nexport type EventStoreEventsDetails<E extends EventStore> =\n E['_types']['details'];\n\nexport type EventStoreAggregate<E extends EventStore> =\n E['_types']['aggregate'];\n"],"mappings":"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"}
{"version":3,"file":"eventStore.js","names":["UndefinedStorageAdapterError","EventStore","eventStoreId","eventStoreEvents","reduce","simulateSideEffect","indexedEvents","event","version","storageAdapter","getEvents","aggregateId","queryOptions","pushEvent","eventDetail","pushEventTransaction","listAggregateIds","options","buildAggregate","eventDetails","undefined","getAggregate","events","aggregate","lastEvent","length","simulateAggregate","simulationDate","eventsWithSideEffects","Object","values","filter","timestamp","sortedEventsWithSideEffects","sort","timestampA","timestampB","map","index"],"sources":["../../src/eventStore.ts"],"sourcesContent":["import { Aggregate } from './aggregate';\nimport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nimport { EventDetail } from './event/eventDetail';\nimport { EventType, EventTypesDetails } from './event/eventType';\nimport {\n EventsQueryOptions,\n ListAggregateIdsOptions,\n ListAggregateIdsOutput,\n StorageAdapter,\n} from './storageAdapter';\n\nexport type SimulationOptions = { simulationDate?: string };\n\nexport class EventStore<\n I extends string = string,\n E extends EventType[] = EventType[],\n $D extends EventDetail = EventTypesDetails<E>,\n // cf https://devblogs.microsoft.com/typescript/announcing-typescript-4-7-rc/#optional-variance-annotations-for-type-parameters\n // EventStore is contravariant on its fns args: We have to type them as any\n // So that EventStore implementations still extends the EventStore type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n D extends EventDetail = EventDetail extends $D ? any : $D,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n R extends (aggregate: any, event: D) => Aggregate = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n aggregate: any,\n event: D,\n ) => Aggregate,\n A extends Aggregate = ReturnType<R>,\n> {\n // @ts-ignore _types only\n _types: {\n details: $D;\n aggregate: A;\n };\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: $D[] }>;\n pushEvent: (eventDetail: D) => Promise<void>;\n pushEventTransaction: (eventDetail: D) => unknown;\n listAggregateIds: (\n listAggregateOptions?: ListAggregateIdsOptions,\n ) => Promise<ListAggregateIdsOutput>;\n\n buildAggregate: (events: D[]) => A | undefined;\n getAggregate: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{\n aggregate: A | undefined;\n events: $D[];\n lastEvent: $D | undefined;\n }>;\n simulateAggregate: (\n events: D[],\n options?: SimulationOptions,\n ) => A | undefined;\n storageAdapter?: StorageAdapter;\n\n constructor({\n eventStoreId,\n eventStoreEvents,\n reduce,\n simulateSideEffect = (indexedEvents, event) => ({\n ...indexedEvents,\n [event.version]: event,\n }),\n storageAdapter,\n }: {\n eventStoreId: I;\n eventStoreEvents: E;\n reduce: R;\n simulateSideEffect?: (\n indexedEvents: Record<string, Omit<D, 'version'>>,\n event: D,\n ) => Record<string, Omit<D, 'version'>>;\n storageAdapter?: StorageAdapter;\n }) {\n this.eventStoreId = eventStoreId;\n this.eventStoreEvents = eventStoreEvents;\n this.reduce = reduce;\n this.simulateSideEffect = simulateSideEffect;\n this.storageAdapter = storageAdapter;\n\n this.getEvents = async (aggregateId, queryOptions) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n /**\n * @debt feature \"For the moment we just cast, we could implement validation + type guards at EventType level\"\n */\n return this.storageAdapter.getEvents(\n aggregateId,\n queryOptions,\n ) as Promise<{ events: $D[] }>;\n };\n\n this.pushEvent = async (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.pushEvent(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.pushEventTransaction = (eventDetail: D) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n this.storageAdapter.pushEventTransaction(eventDetail, {\n eventStoreId: this.eventStoreId,\n });\n };\n\n this.listAggregateIds = async (options?: ListAggregateIdsOptions) => {\n if (!this.storageAdapter) {\n throw new UndefinedStorageAdapterError({\n eventStoreId: this.eventStoreId,\n });\n }\n\n return this.storageAdapter.listAggregateIds(options);\n };\n\n this.buildAggregate = (eventDetails: D[]) =>\n eventDetails.reduce(this.reduce, undefined as unknown as A) as\n | A\n | undefined;\n\n this.getAggregate = async (aggregateId, options) => {\n const { events } = await this.getEvents(aggregateId, options);\n const aggregate = this.buildAggregate(events as unknown as D[]);\n const lastEvent = events[events.length - 1];\n\n return { aggregate, events, lastEvent };\n };\n\n this.simulateAggregate = (\n events,\n { simulationDate } = {},\n ): A | undefined => {\n let eventsWithSideEffects = Object.values(\n events.reduce(this.simulateSideEffect, {} as Record<string, D>),\n );\n\n if (simulationDate !== undefined) {\n eventsWithSideEffects = eventsWithSideEffects.filter(\n ({ timestamp }) => timestamp <= simulationDate,\n );\n }\n\n const sortedEventsWithSideEffects = eventsWithSideEffects\n .sort(({ timestamp: timestampA }, { timestamp: timestampB }) =>\n timestampA < timestampB ? -1 : 1,\n )\n .map((event, index) => ({ ...event, version: index + 1 })) as D[];\n\n return this.buildAggregate(sortedEventsWithSideEffects);\n };\n }\n}\n\nexport type EventStoreEventsDetails<E extends EventStore> =\n E['_types']['details'];\n\nexport type EventStoreAggregate<E extends EventStore> =\n E['_types']['aggregate'];\n"],"mappings":";;;;;;;;;;AACA,SAASA,4BAAT;AAYA,WAAaC,UAAb,8BAiBE;AAsCA,0BAkBG;EAAA;;EAAA,IAjBDC,YAiBC,QAjBDA,YAiBC;EAAA,IAhBDC,gBAgBC,QAhBDA,gBAgBC;EAAA,IAfDC,MAeC,QAfDA,MAeC;EAAA,iCAdDC,kBAcC;EAAA,IAdDA,kBAcC,sCAdoB,UAACC,aAAD,EAAgBC,KAAhB;IAAA,uCAChBD,aADgB,2BAElBC,KAAK,CAACC,OAFY,EAEFD,KAFE;EAAA,CAcpB;EAAA,IAVDE,cAUC,QAVDA,cAUC;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EACD,KAAKP,YAAL,GAAoBA,YAApB;EACA,KAAKC,gBAAL,GAAwBA,gBAAxB;EACA,KAAKC,MAAL,GAAcA,MAAd;EACA,KAAKC,kBAAL,GAA0BA,kBAA1B;EACA,KAAKI,cAAL,GAAsBA,cAAtB;;EAEA,KAAKC,SAAL;IAAA,qEAAiB,iBAAOC,WAAP,EAAoBC,YAApB;MAAA;QAAA;UAAA;YAAA;cAAA,IACV,KAAI,CAACH,cADK;gBAAA;gBAAA;cAAA;;cAAA,MAEP,IAAIT,4BAAJ,CAAiC;gBACrCE,YAAY,EAAE,KAAI,CAACA;cADkB,CAAjC,CAFO;;YAAA;cAAA,iCAUR,KAAI,CAACO,cAAL,CAAoBC,SAApB,CACLC,WADK,EAELC,YAFK,CAVQ;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAjB;;IAAA;MAAA;IAAA;EAAA;;EAgBA,KAAKC,SAAL;IAAA,qEAAiB,kBAAOC,WAAP;MAAA;QAAA;UAAA;YAAA;cAAA,IACV,KAAI,CAACL,cADK;gBAAA;gBAAA;cAAA;;cAAA,MAEP,IAAIT,4BAAJ,CAAiC;gBACrCE,YAAY,EAAE,KAAI,CAACA;cADkB,CAAjC,CAFO;;YAAA;cAAA,kCAOR,KAAI,CAACO,cAAL,CAAoBI,SAApB,CAA8BC,WAA9B,EAA2C;gBAChDZ,YAAY,EAAE,KAAI,CAACA;cAD6B,CAA3C,CAPQ;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAjB;;IAAA;MAAA;IAAA;EAAA;;EAYA,KAAKa,oBAAL,GAA4B,UAACD,WAAD,EAAoB;IAC9C,IAAI,CAAC,KAAI,CAACL,cAAV,EAA0B;MACxB,MAAM,IAAIT,4BAAJ,CAAiC;QACrCE,YAAY,EAAE,KAAI,CAACA;MADkB,CAAjC,CAAN;IAGD;;IAED,KAAI,CAACO,cAAL,CAAoBM,oBAApB,CAAyCD,WAAzC,EAAsD;MACpDZ,YAAY,EAAE,KAAI,CAACA;IADiC,CAAtD;EAGD,CAVD;;EAYA,KAAKc,gBAAL;IAAA,qEAAwB,kBAAOC,OAAP;MAAA;QAAA;UAAA;YAAA;cAAA,IACjB,KAAI,CAACR,cADY;gBAAA;gBAAA;cAAA;;cAAA,MAEd,IAAIT,4BAAJ,CAAiC;gBACrCE,YAAY,EAAE,KAAI,CAACA;cADkB,CAAjC,CAFc;;YAAA;cAAA,kCAOf,KAAI,CAACO,cAAL,CAAoBO,gBAApB,CAAqCC,OAArC,CAPe;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAxB;;IAAA;MAAA;IAAA;EAAA;;EAUA,KAAKC,cAAL,GAAsB,UAACC,YAAD;IAAA,OACpBA,YAAY,CAACf,MAAb,CAAoB,KAAI,CAACA,MAAzB,EAAiCgB,SAAjC,CADoB;EAAA,CAAtB;;EAKA,KAAKC,YAAL;IAAA,qEAAoB,kBAAOV,WAAP,EAAoBM,OAApB;MAAA;;MAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACO,KAAI,CAACP,SAAL,CAAeC,WAAf,EAA4BM,OAA5B,CADP;;YAAA;cAAA;cACVK,MADU,yBACVA,MADU;cAEZC,SAFY,GAEA,KAAI,CAACL,cAAL,CAAoBI,MAApB,CAFA;cAGZE,SAHY,GAGAF,MAAM,CAACA,MAAM,CAACG,MAAP,GAAgB,CAAjB,CAHN;cAAA,kCAKX;gBAAEF,SAAS,EAATA,SAAF;gBAAaD,MAAM,EAANA,MAAb;gBAAqBE,SAAS,EAATA;cAArB,CALW;;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAApB;;IAAA;MAAA;IAAA;EAAA;;EAQA,KAAKE,iBAAL,GAAyB,UACvBJ,MADuB,EAGL;IAAA,gFADG,EACH;IAAA,IADhBK,cACgB,SADhBA,cACgB;;IAClB,IAAIC,qBAAqB,GAAGC,MAAM,CAACC,MAAP,CAC1BR,MAAM,CAAClB,MAAP,CAAc,KAAI,CAACC,kBAAnB,EAAuC,EAAvC,CAD0B,CAA5B;;IAIA,IAAIsB,cAAc,KAAKP,SAAvB,EAAkC;MAChCQ,qBAAqB,GAAGA,qBAAqB,CAACG,MAAtB,CACtB;QAAA,IAAGC,SAAH,SAAGA,SAAH;QAAA,OAAmBA,SAAS,IAAIL,cAAhC;MAAA,CADsB,CAAxB;IAGD;;IAED,IAAMM,2BAA2B,GAAGL,qBAAqB,CACtDM,IADiC,CAC5B;MAAA,IAAcC,UAAd,SAAGH,SAAH;MAAA,IAAyCI,UAAzC,SAA8BJ,SAA9B;MAAA,OACJG,UAAU,GAAGC,UAAb,GAA0B,CAAC,CAA3B,GAA+B,CAD3B;IAAA,CAD4B,EAIjCC,GAJiC,CAI7B,UAAC9B,KAAD,EAAQ+B,KAAR;MAAA,uCAAwB/B,KAAxB;QAA+BC,OAAO,EAAE8B,KAAK,GAAG;MAAhD;IAAA,CAJ6B,CAApC;IAMA,OAAO,KAAI,CAACpB,cAAL,CAAoBe,2BAApB,CAAP;EACD,CArBD;AAsBD,CArKH"}

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","names":["EventType","EventAlreadyExistsError","UndefinedStorageAdapterError","StorageAdapter","EventStore","Command","tuple","JSONSchemaCommand"],"sources":["../../src/index.ts"],"sourcesContent":["export type { Aggregate } from './aggregate';\nexport { EventType } from './event/eventType';\nexport type { EventTypeDetail, EventTypesDetails } from './event/eventType';\nexport type { EventDetail } from './event/eventDetail';\nexport { EventAlreadyExistsError } from './errors/eventAlreadyExists';\nexport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nexport { StorageAdapter } from './storageAdapter';\nexport type {\n EventsQueryOptions,\n PushEventContext,\n PushEventTransactionContext,\n} from './storageAdapter';\nexport { EventStore } from './eventStore';\nexport type {\n SimulationOptions,\n EventStoreEventsDetails,\n EventStoreAggregate,\n} from './eventStore';\nexport { Command, tuple } from './command/command';\nexport { JSONSchemaCommand } from './command/implementations/jsonSchema';\nexport type { OnEventAlreadyExistsCallback } from './command/implementations/jsonSchema';\n"],"mappings":"AACA,SAASA,SAAT;AAGA,SAASC,uBAAT;AACA,SAASC,4BAAT;AACA,SAASC,cAAT;AAMA,SAASC,UAAT;AAMA,SAASC,OAAT,EAAkBC,KAAlB;AACA,SAASC,iBAAT"}
{"version":3,"file":"index.js","names":["EventType","EventAlreadyExistsError","UndefinedStorageAdapterError","StorageAdapter","EventStore","Command","tuple","JSONSchemaCommand"],"sources":["../../src/index.ts"],"sourcesContent":["export type { Aggregate } from './aggregate';\nexport { EventType } from './event/eventType';\nexport type { EventTypeDetail, EventTypesDetails } from './event/eventType';\nexport type { EventDetail } from './event/eventDetail';\nexport { EventAlreadyExistsError } from './errors/eventAlreadyExists';\nexport { UndefinedStorageAdapterError } from './errors/undefinedStorageAdapterError';\nexport { StorageAdapter } from './storageAdapter';\nexport type {\n EventsQueryOptions,\n PushEventContext,\n PushEventTransactionContext,\n ListAggregateIdsOptions,\n ListAggregateIdsOutput,\n} from './storageAdapter';\nexport { EventStore } from './eventStore';\nexport type {\n SimulationOptions,\n EventStoreEventsDetails,\n EventStoreAggregate,\n} from './eventStore';\nexport { Command, tuple } from './command/command';\nexport { JSONSchemaCommand } from './command/implementations/jsonSchema';\nexport type { OnEventAlreadyExistsCallback } from './command/implementations/jsonSchema';\n"],"mappings":"AACA,SAASA,SAAT;AAGA,SAASC,uBAAT;AACA,SAASC,4BAAT;AACA,SAASC,cAAT;AAQA,SAASC,UAAT;AAMA,SAASC,OAAT,EAAkBC,KAAlB;AACA,SAASC,iBAAT"}
import _createClass from "@babel/runtime/helpers/createClass";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
export var StorageAdapter = /*#__PURE__*/_createClass(function StorageAdapter(_ref) {

@@ -11,2 +12,10 @@ var getEvents = _ref.getEvents,

_defineProperty(this, "getEvents", void 0);
_defineProperty(this, "pushEvent", void 0);
_defineProperty(this, "pushEventTransaction", void 0);
_defineProperty(this, "listAggregateIds", void 0);
this.getEvents = getEvents;

@@ -13,0 +22,0 @@ this.pushEvent = pushEvent;

@@ -1,1 +0,1 @@

{"version":3,"file":"storageAdapter.js","names":["StorageAdapter","getEvents","pushEvent","pushEventTransaction","listAggregateIds"],"sources":["../../src/storageAdapter.ts"],"sourcesContent":["import { EventDetail } from 'event/eventDetail';\n\nexport type EventsQueryOptions = { maxVersion?: number };\nexport type PushEventContext = { eventStoreId?: string };\nexport type PushEventTransactionContext = { eventStoreId?: string };\n\nexport class StorageAdapter {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: () => Promise<{ aggregateIds: string[] }>;\n\n constructor({\n getEvents,\n pushEvent,\n pushEventTransaction,\n listAggregateIds,\n }: {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: () => Promise<{ aggregateIds: string[] }>;\n }) {\n this.getEvents = getEvents;\n this.pushEvent = pushEvent;\n this.pushEventTransaction = pushEventTransaction;\n this.listAggregateIds = listAggregateIds;\n }\n}\n"],"mappings":";;AAMA,WAAaA,cAAb,6BAeE,8BAmBG;EAAA,IAlBDC,SAkBC,QAlBDA,SAkBC;EAAA,IAjBDC,SAiBC,QAjBDA,SAiBC;EAAA,IAhBDC,oBAgBC,QAhBDA,oBAgBC;EAAA,IAfDC,gBAeC,QAfDA,gBAeC;;EAAA;;EACD,KAAKH,SAAL,GAAiBA,SAAjB;EACA,KAAKC,SAAL,GAAiBA,SAAjB;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;EACA,KAAKC,gBAAL,GAAwBA,gBAAxB;AACD,CAvCH"}
{"version":3,"file":"storageAdapter.js","names":["StorageAdapter","getEvents","pushEvent","pushEventTransaction","listAggregateIds"],"sources":["../../src/storageAdapter.ts"],"sourcesContent":["import { EventDetail } from 'event/eventDetail';\n\nexport type EventsQueryOptions = { maxVersion?: number };\nexport type PushEventContext = { eventStoreId?: string };\nexport type PushEventTransactionContext = { eventStoreId?: string };\n\nexport type ListAggregateIdsOptions = {\n limit?: number;\n pageToken?: string;\n};\n\nexport type ListAggregateIdsOutput = {\n aggregateIds: string[];\n nextPageToken?: string;\n};\n\nexport class StorageAdapter {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: (\n options?: ListAggregateIdsOptions,\n ) => Promise<ListAggregateIdsOutput>;\n\n constructor({\n getEvents,\n pushEvent,\n pushEventTransaction,\n listAggregateIds,\n }: {\n getEvents: (\n aggregateId: string,\n options?: EventsQueryOptions,\n ) => Promise<{ events: EventDetail[] }>;\n pushEvent: (\n eventDetail: EventDetail,\n context: PushEventContext,\n ) => Promise<void>;\n pushEventTransaction: (\n eventDetail: EventDetail,\n context: PushEventTransactionContext,\n ) => unknown;\n listAggregateIds: (\n options?: ListAggregateIdsOptions,\n ) => Promise<ListAggregateIdsOutput>;\n }) {\n this.getEvents = getEvents;\n this.pushEvent = pushEvent;\n this.pushEventTransaction = pushEventTransaction;\n this.listAggregateIds = listAggregateIds;\n }\n}\n"],"mappings":";;;AAgBA,WAAaA,cAAb,6BAiBE,8BAqBG;EAAA,IApBDC,SAoBC,QApBDA,SAoBC;EAAA,IAnBDC,SAmBC,QAnBDA,SAmBC;EAAA,IAlBDC,oBAkBC,QAlBDA,oBAkBC;EAAA,IAjBDC,gBAiBC,QAjBDA,gBAiBC;;EAAA;;EAAA;;EAAA;;EAAA;;EAAA;;EACD,KAAKH,SAAL,GAAiBA,SAAjB;EACA,KAAKC,SAAL,GAAiBA,SAAjB;EACA,KAAKC,oBAAL,GAA4BA,oBAA5B;EACA,KAAKC,gBAAL,GAAwBA,gBAAxB;AACD,CA3CH"}
import { Aggregate } from './aggregate';
import { EventDetail } from './event/eventDetail';
import { EventType, EventTypesDetails } from './event/eventType';
import { EventsQueryOptions, StorageAdapter } from './storageAdapter';
import { EventsQueryOptions, ListAggregateIdsOptions, ListAggregateIdsOutput, StorageAdapter } from './storageAdapter';
export declare type SimulationOptions = {

@@ -18,14 +18,12 @@ simulationDate?: string;

getEvents: (aggregateId: string, options?: EventsQueryOptions) => Promise<{
events: D[];
events: $D[];
}>;
pushEvent: (eventDetail: D) => Promise<void>;
pushEventTransaction: (eventDetail: D) => unknown;
listAggregateIds: () => Promise<{
aggregateIds: string[];
}>;
listAggregateIds: (listAggregateOptions?: ListAggregateIdsOptions) => Promise<ListAggregateIdsOutput>;
buildAggregate: (events: D[]) => A | undefined;
getAggregate: (aggregateId: string, options?: EventsQueryOptions) => Promise<{
aggregate: A | undefined;
events: D[];
lastEvent: D | undefined;
events: $D[];
lastEvent: $D | undefined;
}>;

@@ -32,0 +30,0 @@ simulateAggregate: (events: D[], options?: SimulationOptions) => A | undefined;

@@ -1,1 +0,1 @@

{"version":3,"file":"eventStore.d.ts","sourceRoot":"","sources":["../../src/eventStore.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"eventStore.d.ts","sourceRoot":"","sources":["../../src/eventStore.ts"],"names":[],"mappings":"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"}

@@ -8,3 +8,3 @@ export type { Aggregate } from './aggregate';

export { StorageAdapter } from './storageAdapter';
export type { EventsQueryOptions, PushEventContext, PushEventTransactionContext, } from './storageAdapter';
export type { EventsQueryOptions, PushEventContext, PushEventTransactionContext, ListAggregateIdsOptions, ListAggregateIdsOutput, } from './storageAdapter';
export { EventStore } from './eventStore';

@@ -11,0 +11,0 @@ export type { SimulationOptions, EventStoreEventsDetails, EventStoreAggregate, } from './eventStore';

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,YAAY,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,YAAY,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC"}

@@ -11,2 +11,10 @@ import { EventDetail } from "./event/eventDetail";

};
export declare type ListAggregateIdsOptions = {
limit?: number;
pageToken?: string;
};
export declare type ListAggregateIdsOutput = {
aggregateIds: string[];
nextPageToken?: string;
};
export declare class StorageAdapter {

@@ -18,5 +26,3 @@ getEvents: (aggregateId: string, options?: EventsQueryOptions) => Promise<{

pushEventTransaction: (eventDetail: EventDetail, context: PushEventTransactionContext) => unknown;
listAggregateIds: () => Promise<{
aggregateIds: string[];
}>;
listAggregateIds: (options?: ListAggregateIdsOptions) => Promise<ListAggregateIdsOutput>;
constructor({ getEvents, pushEvent, pushEventTransaction, listAggregateIds, }: {

@@ -28,7 +34,5 @@ getEvents: (aggregateId: string, options?: EventsQueryOptions) => Promise<{

pushEventTransaction: (eventDetail: EventDetail, context: PushEventTransactionContext) => unknown;
listAggregateIds: () => Promise<{
aggregateIds: string[];
}>;
listAggregateIds: (options?: ListAggregateIdsOptions) => Promise<ListAggregateIdsOutput>;
});
}
//# sourceMappingURL=storageAdapter.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"storageAdapter.d.ts","sourceRoot":"","sources":["../../src/storageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,4BAA0B;AAEhD,oBAAY,kBAAkB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,oBAAY,gBAAgB,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,oBAAY,2BAA2B,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,qBAAa,cAAc;IACzB,SAAS,EAAE,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CACT,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,gBAAgB,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,oBAAoB,EAAE,CACpB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC;IACb,gBAAgB,EAAE,MAAM,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;gBAEhD,EACV,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,gBAAgB,GACjB,EAAE;QACD,SAAS,EAAE,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC;YAAE,MAAM,EAAE,WAAW,EAAE,CAAA;SAAE,CAAC,CAAC;QACxC,SAAS,EAAE,CACT,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,gBAAgB,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,oBAAoB,EAAE,CACpB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC;QACb,gBAAgB,EAAE,MAAM,OAAO,CAAC;YAAE,YAAY,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KAC7D;CAMF"}
{"version":3,"file":"storageAdapter.d.ts","sourceRoot":"","sources":["../../src/storageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,4BAA0B;AAEhD,oBAAY,kBAAkB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,oBAAY,gBAAgB,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,oBAAY,2BAA2B,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,oBAAY,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,sBAAsB,GAAG;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,cAAc;IACzB,SAAS,EAAE,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CACT,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,gBAAgB,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,oBAAoB,EAAE,CACpB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC;IACb,gBAAgB,EAAE,CAChB,OAAO,CAAC,EAAE,uBAAuB,KAC9B,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBAEzB,EACV,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,gBAAgB,GACjB,EAAE;QACD,SAAS,EAAE,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,KACzB,OAAO,CAAC;YAAE,MAAM,EAAE,WAAW,EAAE,CAAA;SAAE,CAAC,CAAC;QACxC,SAAS,EAAE,CACT,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,gBAAgB,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,oBAAoB,EAAE,CACpB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC;QACb,gBAAgB,EAAE,CAChB,OAAO,CAAC,EAAE,uBAAuB,KAC9B,OAAO,CAAC,sBAAsB,CAAC,CAAC;KACtC;CAMF"}
{
"name": "@castore/core",
"version": "1.0.1",
"version": "1.0.2",
"license": "MIT",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/theodo/castore#readme",

Sorry, the diff of this file is not supported yet