@castore/core
Advanced tools
@@ -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 +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"} |
+42
-23
@@ -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"} |
+54
-22
| 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":"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"} |
@@ -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"} |
+1
-1
| { | ||
| "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
219495
3.9%2145
4.79%