@event-driven-io/emmett 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/chunk-4PGUBQK3.js +2 -0
  2. package/dist/chunk-4PGUBQK3.js.map +1 -0
  3. package/dist/chunk-6WITJBGG.js +2 -0
  4. package/dist/chunk-6WITJBGG.js.map +1 -0
  5. package/dist/chunk-AMRL5G7K.mjs +2 -0
  6. package/dist/chunk-AMRL5G7K.mjs.map +1 -0
  7. package/dist/chunk-AYVR4VYR.mjs +2 -0
  8. package/dist/chunk-AYVR4VYR.mjs.map +1 -0
  9. package/dist/chunk-TDCMNVXU.mjs +1 -0
  10. package/dist/chunk-Z4Z6POJH.js +1 -0
  11. package/dist/commandHandling/handleCommand.d.mts +2 -2
  12. package/dist/commandHandling/handleCommand.d.ts +2 -2
  13. package/dist/commandHandling/handleCommandWithDecider.d.mts +2 -2
  14. package/dist/commandHandling/handleCommandWithDecider.d.ts +2 -2
  15. package/dist/index.d.mts +2 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.js +1 -1
  18. package/dist/index.mjs +1 -1
  19. package/dist/serialization/json/JSONParser.d.mts +1 -1
  20. package/dist/serialization/json/JSONParser.d.ts +1 -1
  21. package/dist/testing/deciderSpecification.d.mts +4 -4
  22. package/dist/testing/deciderSpecification.d.ts +4 -4
  23. package/dist/testing/features.d.mts +12 -0
  24. package/dist/testing/features.d.ts +12 -0
  25. package/dist/testing/features.js +2 -0
  26. package/dist/testing/features.js.map +1 -0
  27. package/dist/testing/features.mjs +2 -0
  28. package/dist/testing/features.mjs.map +1 -0
  29. package/dist/testing/index.d.mts +5 -0
  30. package/dist/testing/index.d.ts +5 -0
  31. package/dist/testing/index.js +1 -1
  32. package/dist/testing/index.mjs +1 -1
  33. package/dist/testing/shoppingCart.domain.d.mts +22 -0
  34. package/dist/testing/shoppingCart.domain.d.ts +22 -0
  35. package/dist/testing/shoppingCart.domain.js +2 -0
  36. package/dist/testing/shoppingCart.domain.js.map +1 -0
  37. package/dist/testing/shoppingCart.domain.mjs +2 -0
  38. package/dist/testing/shoppingCart.domain.mjs.map +1 -0
  39. package/dist/typing/index.d.mts +2 -6
  40. package/dist/typing/index.d.ts +2 -6
  41. package/dist/typing/index.js +1 -1
  42. package/dist/typing/index.mjs +1 -1
  43. package/package.json +1 -1
  44. package/dist/chunk-7H3QW2YD.js +0 -1
  45. package/dist/chunk-HKEQAT6F.mjs +0 -1
  46. /package/dist/{chunk-HKEQAT6F.mjs.map → chunk-TDCMNVXU.mjs.map} +0 -0
  47. /package/dist/{chunk-7H3QW2YD.js.map → chunk-Z4Z6POJH.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var n=(t,{type:r,data:o})=>{switch(r){case"ProductItemAdded":{let e=o.productItem;return{productItems:[...t.productItems,e],totalAmount:t.totalAmount+e.price*e.quantity}}case"DiscountApplied":return{...t,totalAmount:t.totalAmount*(1-o.percent/100)}}},d= exports.b =()=>({productItems:[],totalAmount:0});exports.a = n; exports.b = d;
2
+ //# sourceMappingURL=chunk-4PGUBQK3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing/shoppingCart.domain.ts"],"names":["evolve","state","type","data","productItem","getInitialState"],"mappings":"AAqBO,IAAMA,EAAS,CACpBC,EACA,CAAE,KAAAC,EAAM,KAAAC,CAAK,IACI,CACjB,OAAQD,EAAM,CACZ,IAAK,mBAAoB,CACvB,IAAME,EAAcD,EAAK,YACzB,MAAO,CACL,aAAc,CAAC,GAAGF,EAAM,aAAcG,CAAW,EACjD,YACEH,EAAM,YAAcG,EAAY,MAAQA,EAAY,QACxD,CACF,CACA,IAAK,kBACH,MAAO,CACL,GAAGH,EACH,YAAaA,EAAM,aAAe,EAAIE,EAAK,QAAU,IACvD,CACJ,CACF,EAEaE,EAAkB,KACtB,CAAE,aAAc,CAAC,EAAG,YAAa,CAAE","sourcesContent":["import { type Event } from '../typing';\n\nexport type PricedProductItem = {\n productId: string;\n quantity: number;\n price: number;\n};\n\nexport type ShoppingCart = {\n productItems: PricedProductItem[];\n totalAmount: number;\n};\n\nexport type ProductItemAdded = Event<\n 'ProductItemAdded',\n { productItem: PricedProductItem }\n>;\nexport type DiscountApplied = Event<'DiscountApplied', { percent: number }>;\n\nexport type ShoppingCartEvent = ProductItemAdded | DiscountApplied;\n\nexport const evolve = (\n state: ShoppingCart,\n { type, data }: ShoppingCartEvent,\n): ShoppingCart => {\n switch (type) {\n case 'ProductItemAdded': {\n const productItem = data.productItem;\n return {\n productItems: [...state.productItems, productItem],\n totalAmount:\n state.totalAmount + productItem.price * productItem.quantity,\n };\n }\n case 'DiscountApplied':\n return {\n ...state,\n totalAmount: state.totalAmount * (1 - data.percent / 100),\n };\n }\n};\n\nexport const getInitialState = (): ShoppingCart => {\n return { productItems: [], totalAmount: 0 };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunk4PGUBQK3js = require('./chunk-4PGUBQK3.js');var _assert = require('assert'); var _assert2 = _interopRequireDefault(_assert);var _crypto = require('crypto');var _test = require('test');async function A(c,o={getInitialIndex:()=>1n}){return _test.describe.call(void 0, "aggregateStream",()=>{let a;_test.before.call(void 0, async()=>{a=await c()}),_test.after.call(void 0, async()=>{let t=o.teardownHook;t&&await t()}),_test.it.call(void 0, "When called with `to` allows time traveling",async()=>{let t={productId:"123",quantity:10,price:3},s=10,r=_crypto.randomUUID.call(void 0, );await a.appendToStream(r,[{type:"ProductItemAdded",data:{productItem:t}}]),await a.appendToStream(r,[{type:"ProductItemAdded",data:{productItem:t}}]),await a.appendToStream(r,[{type:"DiscountApplied",data:{percent:s}}]);let d=await a.aggregateStream(r,{evolve:_chunk4PGUBQK3js.a,getInitialState:_chunk4PGUBQK3js.b,read:{to:1n}}),p=await a.aggregateStream(r,{evolve:_chunk4PGUBQK3js.a,getInitialState:_chunk4PGUBQK3js.b,read:{to:2n}}),m=await a.aggregateStream(r,{evolve:_chunk4PGUBQK3js.a,getInitialState:_chunk4PGUBQK3js.b,read:{to:3n}});_assert2.default.ok(d),_assert2.default.ok(p),_assert2.default.ok(m),_assert2.default.equal(d.currentStreamVersion,o.getInitialIndex()),_assert2.default.deepEqual(d.state,{productItems:[t],totalAmount:30}),_assert2.default.equal(p.currentStreamVersion,o.getInitialIndex()+1n),_assert2.default.deepEqual(p.state,{productItems:[t,t],totalAmount:60}),_assert2.default.equal(m.currentStreamVersion,o.getInitialIndex()+2n),_assert2.default.deepEqual(m.state,{productItems:[t,t],totalAmount:54})})})}exports.a = A;
2
+ //# sourceMappingURL=chunk-6WITJBGG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing/features.ts"],"names":["assert","randomUUID","after","before","describe","it","testAggregateStream","eventStoreFactory","options","eventStore","teardownHook","productItem","discount","shoppingCartId","resultAt1","evolve","getInitialState","resultAt2","resultAt3"],"mappings":"+CACA,OAAOA,MAAY,SACnB,OAAS,cAAAC,MAAkB,SAC3B,OAAS,SAAAC,EAAO,UAAAC,EAAQ,YAAAC,EAAU,MAAAC,MAAU,OAgB5C,eAAsBC,EACpBC,EACAC,EAAuB,CACrB,gBAAiB,IAAM,EACzB,EACA,CACA,OAAOJ,EAAS,kBAAmB,IAAM,CACvC,IAAIK,EAEJN,EAAO,SAAY,CACjBM,EAAa,MAAMF,EAAkB,CACvC,CAAC,EAEDL,EAAM,SAAY,CAChB,IAAMQ,EAAeF,EAAQ,aACzBE,GAAc,MAAMA,EAAa,CACvC,CAAC,EAEDL,EAAG,8CAA+C,SAAY,CAE5D,IAAMM,EAAiC,CACrC,UAAW,MACX,SAAU,GACV,MAAO,CACT,EACMC,EAAW,GACXC,EAAiBZ,EAAW,EAElC,MAAMQ,EAAW,eAAkCI,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMF,EAAW,eAAkCI,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMF,EAAW,eAAkCI,EAAgB,CACjE,CAAE,KAAM,kBAAmB,KAAM,CAAE,QAASD,CAAS,CAAE,CACzD,CAAC,EAGD,IAAME,EAAY,MAAML,EAAW,gBAAgBI,EAAgB,CACjE,OAAAE,EACA,gBAAAC,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKC,EAAY,MAAMR,EAAW,gBAAgBI,EAAgB,CACjE,OAAAE,EACA,gBAAAC,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKE,EAAY,MAAMT,EAAW,gBAAgBI,EAAgB,CACjE,OAAAE,EACA,gBAAAC,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EAGDhB,EAAO,GAAGc,CAAS,EACnBd,EAAO,GAAGiB,CAAS,EACnBjB,EAAO,GAAGkB,CAAS,EAEnBlB,EAAO,MAAMc,EAAU,qBAAsBN,EAAQ,gBAAgB,CAAC,EACtER,EAAO,UAAUc,EAAU,MAAO,CAChC,aAAc,CAACH,CAAW,EAC1B,YAAa,EACf,CAAC,EAEDX,EAAO,MACLiB,EAAU,qBACVT,EAAQ,gBAAgB,EAAI,EAC9B,EACAR,EAAO,UAAUiB,EAAU,MAAO,CAChC,aAAc,CAACN,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,EAEDX,EAAO,MACLkB,EAAU,qBACVV,EAAQ,gBAAgB,EAAI,EAC9B,EACAR,EAAO,UAAUkB,EAAU,MAAO,CAChC,aAAc,CAACP,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC,CACH","sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\nimport assert from 'node:assert';\nimport { randomUUID } from 'node:crypto';\nimport { after, before, describe, it } from 'node:test';\nimport type { EventStore } from '../eventStore';\nimport {\n evolve,\n getInitialState,\n type PricedProductItem,\n type ShoppingCartEvent,\n} from './shoppingCart.domain';\n\ntype TestOptions = {\n getInitialIndex: () => bigint;\n teardownHook?: () => Promise<void>;\n};\n\nexport type EventStoreFactory = () => Promise<EventStore<bigint>>;\n\nexport async function testAggregateStream(\n eventStoreFactory: EventStoreFactory,\n options: TestOptions = {\n getInitialIndex: () => 1n,\n },\n) {\n return describe('aggregateStream', () => {\n let eventStore: EventStore<bigint>;\n\n before(async () => {\n eventStore = await eventStoreFactory();\n });\n\n after(async () => {\n const teardownHook = options.teardownHook;\n if (teardownHook) await teardownHook();\n });\n\n it('When called with `to` allows time traveling', async () => {\n // Given\n const productItem: PricedProductItem = {\n productId: '123',\n quantity: 10,\n price: 3,\n };\n const discount = 10;\n const shoppingCartId = randomUUID();\n\n await eventStore.appendToStream<ShoppingCartEvent>(shoppingCartId, [\n { type: 'ProductItemAdded', data: { productItem } },\n ]);\n await eventStore.appendToStream<ShoppingCartEvent>(shoppingCartId, [\n { type: 'ProductItemAdded', data: { productItem } },\n ]);\n await eventStore.appendToStream<ShoppingCartEvent>(shoppingCartId, [\n { type: 'DiscountApplied', data: { percent: discount } },\n ]);\n\n // when\n const resultAt1 = await eventStore.aggregateStream(shoppingCartId, {\n evolve,\n getInitialState,\n read: { to: 1n },\n });\n const resultAt2 = await eventStore.aggregateStream(shoppingCartId, {\n evolve,\n getInitialState,\n read: { to: 2n },\n });\n const resultAt3 = await eventStore.aggregateStream(shoppingCartId, {\n evolve,\n getInitialState,\n read: { to: 3n },\n });\n\n // then\n assert.ok(resultAt1);\n assert.ok(resultAt2);\n assert.ok(resultAt3);\n\n assert.equal(resultAt1.currentStreamVersion, options.getInitialIndex());\n assert.deepEqual(resultAt1.state, {\n productItems: [productItem],\n totalAmount: 30,\n });\n\n assert.equal(\n resultAt2.currentStreamVersion,\n options.getInitialIndex() + 1n,\n );\n assert.deepEqual(resultAt2.state, {\n productItems: [productItem, productItem],\n totalAmount: 60,\n });\n\n assert.equal(\n resultAt3.currentStreamVersion,\n options.getInitialIndex() + 2n,\n );\n assert.deepEqual(resultAt3.state, {\n productItems: [productItem, productItem],\n totalAmount: 54,\n });\n });\n });\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{a as n,b as i}from"./chunk-AYVR4VYR.mjs";import e from"node:assert";import{randomUUID as g}from"node:crypto";import{after as u,before as l,describe as S,it as I}from"node:test";async function A(c,o={getInitialIndex:()=>1n}){return S("aggregateStream",()=>{let a;l(async()=>{a=await c()}),u(async()=>{let t=o.teardownHook;t&&await t()}),I("When called with `to` allows time traveling",async()=>{let t={productId:"123",quantity:10,price:3},s=10,r=g();await a.appendToStream(r,[{type:"ProductItemAdded",data:{productItem:t}}]),await a.appendToStream(r,[{type:"ProductItemAdded",data:{productItem:t}}]),await a.appendToStream(r,[{type:"DiscountApplied",data:{percent:s}}]);let d=await a.aggregateStream(r,{evolve:n,getInitialState:i,read:{to:1n}}),p=await a.aggregateStream(r,{evolve:n,getInitialState:i,read:{to:2n}}),m=await a.aggregateStream(r,{evolve:n,getInitialState:i,read:{to:3n}});e.ok(d),e.ok(p),e.ok(m),e.equal(d.currentStreamVersion,o.getInitialIndex()),e.deepEqual(d.state,{productItems:[t],totalAmount:30}),e.equal(p.currentStreamVersion,o.getInitialIndex()+1n),e.deepEqual(p.state,{productItems:[t,t],totalAmount:60}),e.equal(m.currentStreamVersion,o.getInitialIndex()+2n),e.deepEqual(m.state,{productItems:[t,t],totalAmount:54})})})}export{A as a};
2
+ //# sourceMappingURL=chunk-AMRL5G7K.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing/features.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\nimport assert from 'node:assert';\nimport { randomUUID } from 'node:crypto';\nimport { after, before, describe, it } from 'node:test';\nimport type { EventStore } from '../eventStore';\nimport {\n evolve,\n getInitialState,\n type PricedProductItem,\n type ShoppingCartEvent,\n} from './shoppingCart.domain';\n\ntype TestOptions = {\n getInitialIndex: () => bigint;\n teardownHook?: () => Promise<void>;\n};\n\nexport type EventStoreFactory = () => Promise<EventStore<bigint>>;\n\nexport async function testAggregateStream(\n eventStoreFactory: EventStoreFactory,\n options: TestOptions = {\n getInitialIndex: () => 1n,\n },\n) {\n return describe('aggregateStream', () => {\n let eventStore: EventStore<bigint>;\n\n before(async () => {\n eventStore = await eventStoreFactory();\n });\n\n after(async () => {\n const teardownHook = options.teardownHook;\n if (teardownHook) await teardownHook();\n });\n\n it('When called with `to` allows time traveling', async () => {\n // Given\n const productItem: PricedProductItem = {\n productId: '123',\n quantity: 10,\n price: 3,\n };\n const discount = 10;\n const shoppingCartId = randomUUID();\n\n await eventStore.appendToStream<ShoppingCartEvent>(shoppingCartId, [\n { type: 'ProductItemAdded', data: { productItem } },\n ]);\n await eventStore.appendToStream<ShoppingCartEvent>(shoppingCartId, [\n { type: 'ProductItemAdded', data: { productItem } },\n ]);\n await eventStore.appendToStream<ShoppingCartEvent>(shoppingCartId, [\n { type: 'DiscountApplied', data: { percent: discount } },\n ]);\n\n // when\n const resultAt1 = await eventStore.aggregateStream(shoppingCartId, {\n evolve,\n getInitialState,\n read: { to: 1n },\n });\n const resultAt2 = await eventStore.aggregateStream(shoppingCartId, {\n evolve,\n getInitialState,\n read: { to: 2n },\n });\n const resultAt3 = await eventStore.aggregateStream(shoppingCartId, {\n evolve,\n getInitialState,\n read: { to: 3n },\n });\n\n // then\n assert.ok(resultAt1);\n assert.ok(resultAt2);\n assert.ok(resultAt3);\n\n assert.equal(resultAt1.currentStreamVersion, options.getInitialIndex());\n assert.deepEqual(resultAt1.state, {\n productItems: [productItem],\n totalAmount: 30,\n });\n\n assert.equal(\n resultAt2.currentStreamVersion,\n options.getInitialIndex() + 1n,\n );\n assert.deepEqual(resultAt2.state, {\n productItems: [productItem, productItem],\n totalAmount: 60,\n });\n\n assert.equal(\n resultAt3.currentStreamVersion,\n options.getInitialIndex() + 2n,\n );\n assert.deepEqual(resultAt3.state, {\n productItems: [productItem, productItem],\n totalAmount: 54,\n });\n });\n });\n}\n"],"mappings":"gDACA,OAAOA,MAAY,cACnB,OAAS,cAAAC,MAAkB,cAC3B,OAAS,SAAAC,EAAO,UAAAC,EAAQ,YAAAC,EAAU,MAAAC,MAAU,YAgB5C,eAAsBC,EACpBC,EACAC,EAAuB,CACrB,gBAAiB,IAAM,EACzB,EACA,CACA,OAAOC,EAAS,kBAAmB,IAAM,CACvC,IAAIC,EAEJC,EAAO,SAAY,CACjBD,EAAa,MAAMH,EAAkB,CACvC,CAAC,EAEDK,EAAM,SAAY,CAChB,IAAMC,EAAeL,EAAQ,aACzBK,GAAc,MAAMA,EAAa,CACvC,CAAC,EAEDC,EAAG,8CAA+C,SAAY,CAE5D,IAAMC,EAAiC,CACrC,UAAW,MACX,SAAU,GACV,MAAO,CACT,EACMC,EAAW,GACXC,EAAiBC,EAAW,EAElC,MAAMR,EAAW,eAAkCO,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAML,EAAW,eAAkCO,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAML,EAAW,eAAkCO,EAAgB,CACjE,CAAE,KAAM,kBAAmB,KAAM,CAAE,QAASD,CAAS,CAAE,CACzD,CAAC,EAGD,IAAMG,EAAY,MAAMT,EAAW,gBAAgBO,EAAgB,CACjE,OAAAG,EACA,gBAAAC,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKC,EAAY,MAAMZ,EAAW,gBAAgBO,EAAgB,CACjE,OAAAG,EACA,gBAAAC,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKE,EAAY,MAAMb,EAAW,gBAAgBO,EAAgB,CACjE,OAAAG,EACA,gBAAAC,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EAGDG,EAAO,GAAGL,CAAS,EACnBK,EAAO,GAAGF,CAAS,EACnBE,EAAO,GAAGD,CAAS,EAEnBC,EAAO,MAAML,EAAU,qBAAsBX,EAAQ,gBAAgB,CAAC,EACtEgB,EAAO,UAAUL,EAAU,MAAO,CAChC,aAAc,CAACJ,CAAW,EAC1B,YAAa,EACf,CAAC,EAEDS,EAAO,MACLF,EAAU,qBACVd,EAAQ,gBAAgB,EAAI,EAC9B,EACAgB,EAAO,UAAUF,EAAU,MAAO,CAChC,aAAc,CAACP,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,EAEDS,EAAO,MACLD,EAAU,qBACVf,EAAQ,gBAAgB,EAAI,EAC9B,EACAgB,EAAO,UAAUD,EAAU,MAAO,CAChC,aAAc,CAACR,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC,CACH","names":["assert","randomUUID","after","before","describe","it","testAggregateStream","eventStoreFactory","options","describe","eventStore","before","after","teardownHook","it","productItem","discount","shoppingCartId","randomUUID","resultAt1","evolve","getInitialState","resultAt2","resultAt3","assert"]}
@@ -0,0 +1,2 @@
1
+ var n=(t,{type:r,data:o})=>{switch(r){case"ProductItemAdded":{let e=o.productItem;return{productItems:[...t.productItems,e],totalAmount:t.totalAmount+e.price*e.quantity}}case"DiscountApplied":return{...t,totalAmount:t.totalAmount*(1-o.percent/100)}}},d=()=>({productItems:[],totalAmount:0});export{n as a,d as b};
2
+ //# sourceMappingURL=chunk-AYVR4VYR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing/shoppingCart.domain.ts"],"sourcesContent":["import { type Event } from '../typing';\n\nexport type PricedProductItem = {\n productId: string;\n quantity: number;\n price: number;\n};\n\nexport type ShoppingCart = {\n productItems: PricedProductItem[];\n totalAmount: number;\n};\n\nexport type ProductItemAdded = Event<\n 'ProductItemAdded',\n { productItem: PricedProductItem }\n>;\nexport type DiscountApplied = Event<'DiscountApplied', { percent: number }>;\n\nexport type ShoppingCartEvent = ProductItemAdded | DiscountApplied;\n\nexport const evolve = (\n state: ShoppingCart,\n { type, data }: ShoppingCartEvent,\n): ShoppingCart => {\n switch (type) {\n case 'ProductItemAdded': {\n const productItem = data.productItem;\n return {\n productItems: [...state.productItems, productItem],\n totalAmount:\n state.totalAmount + productItem.price * productItem.quantity,\n };\n }\n case 'DiscountApplied':\n return {\n ...state,\n totalAmount: state.totalAmount * (1 - data.percent / 100),\n };\n }\n};\n\nexport const getInitialState = (): ShoppingCart => {\n return { productItems: [], totalAmount: 0 };\n};\n"],"mappings":"AAqBO,IAAMA,EAAS,CACpBC,EACA,CAAE,KAAAC,EAAM,KAAAC,CAAK,IACI,CACjB,OAAQD,EAAM,CACZ,IAAK,mBAAoB,CACvB,IAAME,EAAcD,EAAK,YACzB,MAAO,CACL,aAAc,CAAC,GAAGF,EAAM,aAAcG,CAAW,EACjD,YACEH,EAAM,YAAcG,EAAY,MAAQA,EAAY,QACxD,CACF,CACA,IAAK,kBACH,MAAO,CACL,GAAGH,EACH,YAAaA,EAAM,aAAe,EAAIE,EAAK,QAAU,IACvD,CACJ,CACF,EAEaE,EAAkB,KACtB,CAAE,aAAc,CAAC,EAAG,YAAa,CAAE","names":["evolve","state","type","data","productItem","getInitialState"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-TDCMNVXU.mjs.map
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-Z4Z6POJH.js.map
@@ -6,7 +6,7 @@ type CommandHandlerResult<State, StreamVersion = DefaultStreamVersionType> = App
6
6
  newState: State;
7
7
  };
8
8
  declare const CommandHandler: <State, StreamEvent extends Event, StreamVersion = bigint>(evolve: (state: State, event: StreamEvent) => State, getInitialState: () => State, mapToStreamId?: (id: string) => string) => (eventStore: EventStore<StreamVersion>, id: string, handle: (state: State) => StreamEvent | StreamEvent[], options?: {
9
- expectedStreamVersion?: ExpectedStreamVersion<StreamVersion> | undefined;
10
- } | undefined) => Promise<CommandHandlerResult<State, StreamVersion>>;
9
+ expectedStreamVersion?: ExpectedStreamVersion<StreamVersion>;
10
+ }) => Promise<CommandHandlerResult<State, StreamVersion>>;
11
11
 
12
12
  export { CommandHandler, type CommandHandlerResult };
@@ -6,7 +6,7 @@ type CommandHandlerResult<State, StreamVersion = DefaultStreamVersionType> = App
6
6
  newState: State;
7
7
  };
8
8
  declare const CommandHandler: <State, StreamEvent extends Event, StreamVersion = bigint>(evolve: (state: State, event: StreamEvent) => State, getInitialState: () => State, mapToStreamId?: (id: string) => string) => (eventStore: EventStore<StreamVersion>, id: string, handle: (state: State) => StreamEvent | StreamEvent[], options?: {
9
- expectedStreamVersion?: ExpectedStreamVersion<StreamVersion> | undefined;
10
- } | undefined) => Promise<CommandHandlerResult<State, StreamVersion>>;
9
+ expectedStreamVersion?: ExpectedStreamVersion<StreamVersion>;
10
+ }) => Promise<CommandHandlerResult<State, StreamVersion>>;
11
11
 
12
12
  export { CommandHandler, type CommandHandlerResult };
@@ -4,7 +4,7 @@ import { Command, Event, Decider } from '../typing/index.mjs';
4
4
  import '../errors/index.mjs';
5
5
 
6
6
  declare const DeciderCommandHandler: <State, CommandType extends Command, StreamEvent extends Event, StreamVersion = bigint>({ decide, evolve, getInitialState, }: Decider<State, CommandType, StreamEvent>, mapToStreamId?: (id: string) => string) => (eventStore: EventStore<StreamVersion>, id: string, command: CommandType, options?: {
7
- expectedStreamVersion?: ExpectedStreamVersion<StreamVersion> | undefined;
8
- } | undefined) => Promise<CommandHandlerResult<State, StreamVersion>>;
7
+ expectedStreamVersion?: ExpectedStreamVersion<StreamVersion>;
8
+ }) => Promise<CommandHandlerResult<State, StreamVersion>>;
9
9
 
10
10
  export { DeciderCommandHandler };
@@ -4,7 +4,7 @@ import { Command, Event, Decider } from '../typing/index.js';
4
4
  import '../errors/index.js';
5
5
 
6
6
  declare const DeciderCommandHandler: <State, CommandType extends Command, StreamEvent extends Event, StreamVersion = bigint>({ decide, evolve, getInitialState, }: Decider<State, CommandType, StreamEvent>, mapToStreamId?: (id: string) => string) => (eventStore: EventStore<StreamVersion>, id: string, command: CommandType, options?: {
7
- expectedStreamVersion?: ExpectedStreamVersion<StreamVersion> | undefined;
8
- } | undefined) => Promise<CommandHandlerResult<State, StreamVersion>>;
7
+ expectedStreamVersion?: ExpectedStreamVersion<StreamVersion>;
8
+ }) => Promise<CommandHandlerResult<State, StreamVersion>>;
9
9
 
10
10
  export { DeciderCommandHandler };
package/dist/index.d.mts CHANGED
@@ -6,6 +6,8 @@ export { EventEnvelope, EventHandler, EventMetadata, getInMemoryEventStore } fro
6
6
  export { JSONParser, Mapper, MapperArgs, ParseError, ParseOptions, StringifyOptions } from './serialization/json/JSONParser.mjs';
7
7
  export { assertMatches, isSubset } from './testing/assertions.mjs';
8
8
  export { DeciderSpecfication, DeciderSpecification } from './testing/deciderSpecification.mjs';
9
+ export { EventStoreFactory, testAggregateStream } from './testing/features.mjs';
10
+ export { DiscountApplied, PricedProductItem, ProductItemAdded, ShoppingCart, ShoppingCartEvent, evolve, getInitialState } from './testing/shoppingCart.domain.mjs';
9
11
  export { Brand, Command, Decider, DefaultCommandMetadata, Event, Flavour, Workflow, WorkflowCommand, WorkflowEvent, WorkflowOutput, accept, complete, error, ignore, publish, reply, schedule, send } from './typing/index.mjs';
10
12
  export { sum } from './utils/iterators.mjs';
11
13
  export { merge } from './utils/merge.mjs';
package/dist/index.d.ts CHANGED
@@ -6,6 +6,8 @@ export { EventEnvelope, EventHandler, EventMetadata, getInMemoryEventStore } fro
6
6
  export { JSONParser, Mapper, MapperArgs, ParseError, ParseOptions, StringifyOptions } from './serialization/json/JSONParser.js';
7
7
  export { assertMatches, isSubset } from './testing/assertions.js';
8
8
  export { DeciderSpecfication, DeciderSpecification } from './testing/deciderSpecification.js';
9
+ export { EventStoreFactory, testAggregateStream } from './testing/features.js';
10
+ export { DiscountApplied, PricedProductItem, ProductItemAdded, ShoppingCart, ShoppingCartEvent, evolve, getInitialState } from './testing/shoppingCart.domain.js';
9
11
  export { Brand, Command, Decider, DefaultCommandMetadata, Event, Flavour, Workflow, WorkflowCommand, WorkflowEvent, WorkflowOutput, accept, complete, error, ignore, publish, reply, schedule, send } from './typing/index.js';
10
12
  export { sum } from './utils/iterators.js';
11
13
  export { merge } from './utils/merge.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-Z7EDILIO.js');var _chunk7EZVPMJ6js = require('./chunk-7EZVPMJ6.js');require('./chunk-WIMBG2PX.js');var _chunkFE73T2NSjs = require('./chunk-FE73T2NS.js');var _chunk3JE5DUJ2js = require('./chunk-3JE5DUJ2.js');require('./chunk-LOJ6A4AJ.js');require('./chunk-AU2WZCER.js');var _chunkLYKEARRWjs = require('./chunk-LYKEARRW.js');require('./chunk-7H3QW2YD.js');var _chunkDFPI5IXTjs = require('./chunk-DFPI5IXT.js');var _chunkO34VKX7Rjs = require('./chunk-O34VKX7R.js');require('./chunk-QSAFGRYV.js');require('./chunk-7FJXUW3D.js');require('./chunk-BARLLX6S.js');require('./chunk-F7QRI2VL.js');var _chunkU3WA3VIWjs = require('./chunk-U3WA3VIW.js');var _chunkOYAO7QEPjs = require('./chunk-OYAO7QEP.js');require('./chunk-2452BJTJ.js');var _chunkBM2H4NCZjs = require('./chunk-BM2H4NCZ.js');require('./chunk-IJGC6SHP.js');var _chunk46YIPCSNjs = require('./chunk-46YIPCSN.js');var _chunkUUCTMJK7js = require('./chunk-UUCTMJK7.js');exports.CommandHandler = _chunkOYAO7QEPjs.a; exports.ConcurrencyError = _chunkUUCTMJK7js.h; exports.DeciderCommandHandler = _chunkU3WA3VIWjs.a; exports.DeciderSpecification = _chunkO34VKX7Rjs.a; exports.EmmettError = _chunkUUCTMJK7js.g; exports.ExpectedVersionConflictError = _chunk46YIPCSNjs.f; exports.IllegalStateError = _chunkUUCTMJK7js.j; exports.JSONParser = _chunkLYKEARRWjs.b; exports.NO_CONCURRENCY_CHECK = _chunk46YIPCSNjs.c; exports.NotFoundError = _chunkUUCTMJK7js.k; exports.ParseError = _chunkLYKEARRWjs.a; exports.STREAM_DOES_NOT_EXIST = _chunk46YIPCSNjs.b; exports.STREAM_EXISTS = _chunk46YIPCSNjs.a; exports.ValidationError = _chunkUUCTMJK7js.i; exports.ValidationErrors = _chunkUUCTMJK7js.a; exports.accept = _chunk7EZVPMJ6js.h; exports.assertExpectedVersionMatchesCurrent = _chunk46YIPCSNjs.e; exports.assertMatches = _chunkDFPI5IXTjs.b; exports.assertNotEmptyString = _chunkUUCTMJK7js.d; exports.assertPositiveNumber = _chunkUUCTMJK7js.e; exports.assertUnsignedBigInt = _chunkUUCTMJK7js.f; exports.complete = _chunk7EZVPMJ6js.e; exports.error = _chunk7EZVPMJ6js.g; exports.getInMemoryEventStore = _chunkBM2H4NCZjs.a; exports.ignore = _chunk7EZVPMJ6js.f; exports.isNumber = _chunkUUCTMJK7js.b; exports.isString = _chunkUUCTMJK7js.c; exports.isSubset = _chunkDFPI5IXTjs.a; exports.matchesExpectedVersion = _chunk46YIPCSNjs.d; exports.merge = _chunk3JE5DUJ2js.a; exports.publish = _chunk7EZVPMJ6js.c; exports.reply = _chunk7EZVPMJ6js.a; exports.schedule = _chunk7EZVPMJ6js.d; exports.send = _chunk7EZVPMJ6js.b; exports.sum = _chunkFE73T2NSjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-WIMBG2PX.js');var _chunkFE73T2NSjs = require('./chunk-FE73T2NS.js');var _chunk3JE5DUJ2js = require('./chunk-3JE5DUJ2.js');require('./chunk-LOJ6A4AJ.js');require('./chunk-AU2WZCER.js');var _chunkLYKEARRWjs = require('./chunk-LYKEARRW.js');require('./chunk-Z4Z6POJH.js');var _chunkDFPI5IXTjs = require('./chunk-DFPI5IXT.js');var _chunkO34VKX7Rjs = require('./chunk-O34VKX7R.js');var _chunk6WITJBGGjs = require('./chunk-6WITJBGG.js');var _chunk4PGUBQK3js = require('./chunk-4PGUBQK3.js');require('./chunk-Z7EDILIO.js');require('./chunk-7FJXUW3D.js');require('./chunk-BARLLX6S.js');var _chunk7EZVPMJ6js = require('./chunk-7EZVPMJ6.js');require('./chunk-QSAFGRYV.js');require('./chunk-F7QRI2VL.js');var _chunkU3WA3VIWjs = require('./chunk-U3WA3VIW.js');var _chunkOYAO7QEPjs = require('./chunk-OYAO7QEP.js');require('./chunk-2452BJTJ.js');var _chunkBM2H4NCZjs = require('./chunk-BM2H4NCZ.js');require('./chunk-IJGC6SHP.js');var _chunk46YIPCSNjs = require('./chunk-46YIPCSN.js');var _chunkUUCTMJK7js = require('./chunk-UUCTMJK7.js');exports.CommandHandler = _chunkOYAO7QEPjs.a; exports.ConcurrencyError = _chunkUUCTMJK7js.h; exports.DeciderCommandHandler = _chunkU3WA3VIWjs.a; exports.DeciderSpecification = _chunkO34VKX7Rjs.a; exports.EmmettError = _chunkUUCTMJK7js.g; exports.ExpectedVersionConflictError = _chunk46YIPCSNjs.f; exports.IllegalStateError = _chunkUUCTMJK7js.j; exports.JSONParser = _chunkLYKEARRWjs.b; exports.NO_CONCURRENCY_CHECK = _chunk46YIPCSNjs.c; exports.NotFoundError = _chunkUUCTMJK7js.k; exports.ParseError = _chunkLYKEARRWjs.a; exports.STREAM_DOES_NOT_EXIST = _chunk46YIPCSNjs.b; exports.STREAM_EXISTS = _chunk46YIPCSNjs.a; exports.ValidationError = _chunkUUCTMJK7js.i; exports.ValidationErrors = _chunkUUCTMJK7js.a; exports.accept = _chunk7EZVPMJ6js.h; exports.assertExpectedVersionMatchesCurrent = _chunk46YIPCSNjs.e; exports.assertMatches = _chunkDFPI5IXTjs.b; exports.assertNotEmptyString = _chunkUUCTMJK7js.d; exports.assertPositiveNumber = _chunkUUCTMJK7js.e; exports.assertUnsignedBigInt = _chunkUUCTMJK7js.f; exports.complete = _chunk7EZVPMJ6js.e; exports.error = _chunk7EZVPMJ6js.g; exports.evolve = _chunk4PGUBQK3js.a; exports.getInMemoryEventStore = _chunkBM2H4NCZjs.a; exports.getInitialState = _chunk4PGUBQK3js.b; exports.ignore = _chunk7EZVPMJ6js.f; exports.isNumber = _chunkUUCTMJK7js.b; exports.isString = _chunkUUCTMJK7js.c; exports.isSubset = _chunkDFPI5IXTjs.a; exports.matchesExpectedVersion = _chunk46YIPCSNjs.d; exports.merge = _chunk3JE5DUJ2js.a; exports.publish = _chunk7EZVPMJ6js.c; exports.reply = _chunk7EZVPMJ6js.a; exports.schedule = _chunk7EZVPMJ6js.d; exports.send = _chunk7EZVPMJ6js.b; exports.sum = _chunkFE73T2NSjs.a; exports.testAggregateStream = _chunk6WITJBGGjs.a;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import"./chunk-C4CXU3PY.mjs";import{a as z,b as A,c as B,d as C,e as D,f as E,g as F,h as G}from"./chunk-ERDVHQZL.mjs";import"./chunk-PNOEBD4U.mjs";import{a as H}from"./chunk-OBA6MZMG.mjs";import{a as I}from"./chunk-YKFEDBH4.mjs";import"./chunk-DIW552TK.mjs";import"./chunk-7JLAVMM3.mjs";import{a as s,b as u}from"./chunk-PKL7KGJ3.mjs";import"./chunk-HKEQAT6F.mjs";import{a as v,b as w}from"./chunk-RWKXC5FZ.mjs";import{a as y}from"./chunk-32IWULJJ.mjs";import"./chunk-IZWGWZ3P.mjs";import"./chunk-3LYVXI5R.mjs";import"./chunk-YKICRTHH.mjs";import"./chunk-XLZS42HB.mjs";import{a as q}from"./chunk-O2ZUNWMO.mjs";import{a as n}from"./chunk-JJHE2RKT.mjs";import"./chunk-45ODDXOQ.mjs";import{a as l}from"./chunk-CTCSK4FW.mjs";import"./chunk-D24KLTN5.mjs";import{a as d,b as g,c as h,d as i,e as j,f as k}from"./chunk-UI6CV7VB.mjs";import{a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c}from"./chunk-YV6PB6LX.mjs";export{n as CommandHandler,x as ConcurrencyError,q as DeciderCommandHandler,y as DeciderSpecification,t as EmmettError,k as ExpectedVersionConflictError,b as IllegalStateError,u as JSONParser,h as NO_CONCURRENCY_CHECK,c as NotFoundError,s as ParseError,g as STREAM_DOES_NOT_EXIST,d as STREAM_EXISTS,a as ValidationError,o as ValidationErrors,G as accept,j as assertExpectedVersionMatchesCurrent,w as assertMatches,f as assertNotEmptyString,m as assertPositiveNumber,p as assertUnsignedBigInt,D as complete,F as error,l as getInMemoryEventStore,E as ignore,r as isNumber,e as isString,v as isSubset,i as matchesExpectedVersion,I as merge,B as publish,z as reply,C as schedule,A as send,H as sum};
1
+ import"./chunk-PNOEBD4U.mjs";import{a as K}from"./chunk-OBA6MZMG.mjs";import{a as L}from"./chunk-YKFEDBH4.mjs";import"./chunk-DIW552TK.mjs";import"./chunk-7JLAVMM3.mjs";import{a as s,b as u}from"./chunk-PKL7KGJ3.mjs";import"./chunk-TDCMNVXU.mjs";import{a as v,b as w}from"./chunk-RWKXC5FZ.mjs";import{a as y}from"./chunk-32IWULJJ.mjs";import{a as J}from"./chunk-AMRL5G7K.mjs";import{a as H,b as I}from"./chunk-AYVR4VYR.mjs";import"./chunk-C4CXU3PY.mjs";import"./chunk-3LYVXI5R.mjs";import"./chunk-YKICRTHH.mjs";import{a as z,b as A,c as B,d as C,e as D,f as E,g as F,h as G}from"./chunk-ERDVHQZL.mjs";import"./chunk-IZWGWZ3P.mjs";import"./chunk-XLZS42HB.mjs";import{a as q}from"./chunk-O2ZUNWMO.mjs";import{a as n}from"./chunk-JJHE2RKT.mjs";import"./chunk-45ODDXOQ.mjs";import{a as l}from"./chunk-CTCSK4FW.mjs";import"./chunk-D24KLTN5.mjs";import{a as d,b as g,c as h,d as i,e as j,f as k}from"./chunk-UI6CV7VB.mjs";import{a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c}from"./chunk-YV6PB6LX.mjs";export{n as CommandHandler,x as ConcurrencyError,q as DeciderCommandHandler,y as DeciderSpecification,t as EmmettError,k as ExpectedVersionConflictError,b as IllegalStateError,u as JSONParser,h as NO_CONCURRENCY_CHECK,c as NotFoundError,s as ParseError,g as STREAM_DOES_NOT_EXIST,d as STREAM_EXISTS,a as ValidationError,o as ValidationErrors,G as accept,j as assertExpectedVersionMatchesCurrent,w as assertMatches,f as assertNotEmptyString,m as assertPositiveNumber,p as assertUnsignedBigInt,D as complete,F as error,H as evolve,l as getInMemoryEventStore,I as getInitialState,E as ignore,r as isNumber,e as isString,v as isSubset,i as matchesExpectedVersion,L as merge,B as publish,z as reply,C as schedule,A as send,K as sum,J as testAggregateStream};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -12,7 +12,7 @@ type StringifyOptions<From, To = From> = {
12
12
  map?: Mapper<From, To>;
13
13
  };
14
14
  declare const JSONParser: {
15
- stringify: <From, To = From>(value: From, options?: StringifyOptions<From, To> | undefined) => string;
15
+ stringify: <From, To = From>(value: From, options?: StringifyOptions<From, To>) => string;
16
16
  parse: <From_1, To_1 = From_1>(text: string, options?: ParseOptions<From_1, To_1> | undefined) => To_1 | undefined;
17
17
  };
18
18
 
@@ -12,7 +12,7 @@ type StringifyOptions<From, To = From> = {
12
12
  map?: Mapper<From, To>;
13
13
  };
14
14
  declare const JSONParser: {
15
- stringify: <From, To = From>(value: From, options?: StringifyOptions<From, To> | undefined) => string;
15
+ stringify: <From, To = From>(value: From, options?: StringifyOptions<From, To>) => string;
16
16
  parse: <From_1, To_1 = From_1>(text: string, options?: ParseOptions<From_1, To_1> | undefined) => To_1 | undefined;
17
17
  };
18
18
 
@@ -5,11 +5,11 @@ type DeciderSpecfication<Command, Event> = (givenEvents: Event | Event[]) => {
5
5
  };
6
6
  };
7
7
  declare const DeciderSpecification: {
8
- for: <Command, Event_1, State>(decider: {
9
- decide: (command: Command, state: State) => Event_1 | Event_1[];
10
- evolve: (state: State, event: Event_1) => State;
8
+ for: <Command, Event, State>(decider: {
9
+ decide: (command: Command, state: State) => Event | Event[];
10
+ evolve: (state: State, event: Event) => State;
11
11
  initialState: () => State;
12
- }) => DeciderSpecfication<Command, Event_1>;
12
+ }) => DeciderSpecfication<Command, Event>;
13
13
  };
14
14
 
15
15
  export { type DeciderSpecfication, DeciderSpecification };
@@ -5,11 +5,11 @@ type DeciderSpecfication<Command, Event> = (givenEvents: Event | Event[]) => {
5
5
  };
6
6
  };
7
7
  declare const DeciderSpecification: {
8
- for: <Command, Event_1, State>(decider: {
9
- decide: (command: Command, state: State) => Event_1 | Event_1[];
10
- evolve: (state: State, event: Event_1) => State;
8
+ for: <Command, Event, State>(decider: {
9
+ decide: (command: Command, state: State) => Event | Event[];
10
+ evolve: (state: State, event: Event) => State;
11
11
  initialState: () => State;
12
- }) => DeciderSpecfication<Command, Event_1>;
12
+ }) => DeciderSpecfication<Command, Event>;
13
13
  };
14
14
 
15
15
  export { type DeciderSpecfication, DeciderSpecification };
@@ -0,0 +1,12 @@
1
+ import { E as EventStore } from '../eventStore-DLezSgsV.mjs';
2
+ import '../typing/index.mjs';
3
+ import '../errors/index.mjs';
4
+
5
+ type TestOptions = {
6
+ getInitialIndex: () => bigint;
7
+ teardownHook?: () => Promise<void>;
8
+ };
9
+ type EventStoreFactory = () => Promise<EventStore<bigint>>;
10
+ declare function testAggregateStream(eventStoreFactory: EventStoreFactory, options?: TestOptions): Promise<void>;
11
+
12
+ export { type EventStoreFactory, testAggregateStream };
@@ -0,0 +1,12 @@
1
+ import { E as EventStore } from '../eventStore-N_YMFCDT.js';
2
+ import '../typing/index.js';
3
+ import '../errors/index.js';
4
+
5
+ type TestOptions = {
6
+ getInitialIndex: () => bigint;
7
+ teardownHook?: () => Promise<void>;
8
+ };
9
+ type EventStoreFactory = () => Promise<EventStore<bigint>>;
10
+ declare function testAggregateStream(eventStoreFactory: EventStoreFactory, options?: TestOptions): Promise<void>;
11
+
12
+ export { type EventStoreFactory, testAggregateStream };
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6WITJBGGjs = require('../chunk-6WITJBGG.js');require('../chunk-4PGUBQK3.js');require('../chunk-Z7EDILIO.js');require('../chunk-7FJXUW3D.js');require('../chunk-BARLLX6S.js');require('../chunk-7EZVPMJ6.js');require('../chunk-QSAFGRYV.js');exports.testAggregateStream = _chunk6WITJBGGjs.a;
2
+ //# sourceMappingURL=features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{a}from"../chunk-AMRL5G7K.mjs";import"../chunk-AYVR4VYR.mjs";import"../chunk-C4CXU3PY.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-YKICRTHH.mjs";import"../chunk-ERDVHQZL.mjs";import"../chunk-IZWGWZ3P.mjs";export{a as testAggregateStream};
2
+ //# sourceMappingURL=features.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,2 +1,7 @@
1
1
  export { assertMatches, isSubset } from './assertions.mjs';
2
2
  export { DeciderSpecfication, DeciderSpecification } from './deciderSpecification.mjs';
3
+ export { EventStoreFactory, testAggregateStream } from './features.mjs';
4
+ export { DiscountApplied, PricedProductItem, ProductItemAdded, ShoppingCart, ShoppingCartEvent, evolve, getInitialState } from './shoppingCart.domain.mjs';
5
+ import '../eventStore-DLezSgsV.mjs';
6
+ import '../typing/index.mjs';
7
+ import '../errors/index.mjs';
@@ -1,2 +1,7 @@
1
1
  export { assertMatches, isSubset } from './assertions.js';
2
2
  export { DeciderSpecfication, DeciderSpecification } from './deciderSpecification.js';
3
+ export { EventStoreFactory, testAggregateStream } from './features.js';
4
+ export { DiscountApplied, PricedProductItem, ProductItemAdded, ShoppingCart, ShoppingCartEvent, evolve, getInitialState } from './shoppingCart.domain.js';
5
+ import '../eventStore-N_YMFCDT.js';
6
+ import '../typing/index.js';
7
+ import '../errors/index.js';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-7H3QW2YD.js');var _chunkDFPI5IXTjs = require('../chunk-DFPI5IXT.js');var _chunkO34VKX7Rjs = require('../chunk-O34VKX7R.js');exports.DeciderSpecification = _chunkO34VKX7Rjs.a; exports.assertMatches = _chunkDFPI5IXTjs.b; exports.isSubset = _chunkDFPI5IXTjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-Z4Z6POJH.js');var _chunkDFPI5IXTjs = require('../chunk-DFPI5IXT.js');var _chunkO34VKX7Rjs = require('../chunk-O34VKX7R.js');var _chunk6WITJBGGjs = require('../chunk-6WITJBGG.js');var _chunk4PGUBQK3js = require('../chunk-4PGUBQK3.js');require('../chunk-Z7EDILIO.js');require('../chunk-7FJXUW3D.js');require('../chunk-BARLLX6S.js');require('../chunk-7EZVPMJ6.js');require('../chunk-QSAFGRYV.js');exports.DeciderSpecification = _chunkO34VKX7Rjs.a; exports.assertMatches = _chunkDFPI5IXTjs.b; exports.evolve = _chunk4PGUBQK3js.a; exports.getInitialState = _chunk4PGUBQK3js.b; exports.isSubset = _chunkDFPI5IXTjs.a; exports.testAggregateStream = _chunk6WITJBGGjs.a;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import"../chunk-HKEQAT6F.mjs";import{a,b}from"../chunk-RWKXC5FZ.mjs";import{a as c}from"../chunk-32IWULJJ.mjs";export{c as DeciderSpecification,b as assertMatches,a as isSubset};
1
+ import"../chunk-TDCMNVXU.mjs";import{a,b}from"../chunk-RWKXC5FZ.mjs";import{a as c}from"../chunk-32IWULJJ.mjs";import{a as f}from"../chunk-AMRL5G7K.mjs";import{a as d,b as e}from"../chunk-AYVR4VYR.mjs";import"../chunk-C4CXU3PY.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-YKICRTHH.mjs";import"../chunk-ERDVHQZL.mjs";import"../chunk-IZWGWZ3P.mjs";export{c as DeciderSpecification,b as assertMatches,d as evolve,e as getInitialState,a as isSubset,f as testAggregateStream};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,22 @@
1
+ import { Event } from '../typing/index.mjs';
2
+
3
+ type PricedProductItem = {
4
+ productId: string;
5
+ quantity: number;
6
+ price: number;
7
+ };
8
+ type ShoppingCart = {
9
+ productItems: PricedProductItem[];
10
+ totalAmount: number;
11
+ };
12
+ type ProductItemAdded = Event<'ProductItemAdded', {
13
+ productItem: PricedProductItem;
14
+ }>;
15
+ type DiscountApplied = Event<'DiscountApplied', {
16
+ percent: number;
17
+ }>;
18
+ type ShoppingCartEvent = ProductItemAdded | DiscountApplied;
19
+ declare const evolve: (state: ShoppingCart, { type, data }: ShoppingCartEvent) => ShoppingCart;
20
+ declare const getInitialState: () => ShoppingCart;
21
+
22
+ export { type DiscountApplied, type PricedProductItem, type ProductItemAdded, type ShoppingCart, type ShoppingCartEvent, evolve, getInitialState };
@@ -0,0 +1,22 @@
1
+ import { Event } from '../typing/index.js';
2
+
3
+ type PricedProductItem = {
4
+ productId: string;
5
+ quantity: number;
6
+ price: number;
7
+ };
8
+ type ShoppingCart = {
9
+ productItems: PricedProductItem[];
10
+ totalAmount: number;
11
+ };
12
+ type ProductItemAdded = Event<'ProductItemAdded', {
13
+ productItem: PricedProductItem;
14
+ }>;
15
+ type DiscountApplied = Event<'DiscountApplied', {
16
+ percent: number;
17
+ }>;
18
+ type ShoppingCartEvent = ProductItemAdded | DiscountApplied;
19
+ declare const evolve: (state: ShoppingCart, { type, data }: ShoppingCartEvent) => ShoppingCart;
20
+ declare const getInitialState: () => ShoppingCart;
21
+
22
+ export { type DiscountApplied, type PricedProductItem, type ProductItemAdded, type ShoppingCart, type ShoppingCartEvent, evolve, getInitialState };
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk4PGUBQK3js = require('../chunk-4PGUBQK3.js');require('../chunk-Z7EDILIO.js');require('../chunk-7FJXUW3D.js');require('../chunk-BARLLX6S.js');require('../chunk-7EZVPMJ6.js');require('../chunk-QSAFGRYV.js');exports.evolve = _chunk4PGUBQK3js.a; exports.getInitialState = _chunk4PGUBQK3js.b;
2
+ //# sourceMappingURL=shoppingCart.domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{a,b}from"../chunk-AYVR4VYR.mjs";import"../chunk-C4CXU3PY.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-YKICRTHH.mjs";import"../chunk-ERDVHQZL.mjs";import"../chunk-IZWGWZ3P.mjs";export{a as evolve,b as getInitialState};
2
+ //# sourceMappingURL=shoppingCart.domain.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -59,12 +59,8 @@ type WorkflowOutput<TOutput extends Command | Event> = {
59
59
  reason: string;
60
60
  };
61
61
  declare const reply: <TOutput extends Command | Event>(message: TOutput) => WorkflowOutput<TOutput>;
62
- declare const send: <TOutput extends Command | Event>(message: Extract<TOutput, {
63
- __brand?: "Command" | undefined;
64
- }>) => WorkflowOutput<TOutput>;
65
- declare const publish: <TOutput extends Command | Event>(message: Extract<TOutput, {
66
- __brand?: "Event" | undefined;
67
- }>) => WorkflowOutput<TOutput>;
62
+ declare const send: <TOutput extends Command | Event>(message: WorkflowCommand<TOutput>) => WorkflowOutput<TOutput>;
63
+ declare const publish: <TOutput extends Command | Event>(message: WorkflowEvent<TOutput>) => WorkflowOutput<TOutput>;
68
64
  declare const schedule: <TOutput extends Command | Event>(message: TOutput, when: {
69
65
  afterInMs: number;
70
66
  } | {
@@ -59,12 +59,8 @@ type WorkflowOutput<TOutput extends Command | Event> = {
59
59
  reason: string;
60
60
  };
61
61
  declare const reply: <TOutput extends Command | Event>(message: TOutput) => WorkflowOutput<TOutput>;
62
- declare const send: <TOutput extends Command | Event>(message: Extract<TOutput, {
63
- __brand?: "Command" | undefined;
64
- }>) => WorkflowOutput<TOutput>;
65
- declare const publish: <TOutput extends Command | Event>(message: Extract<TOutput, {
66
- __brand?: "Event" | undefined;
67
- }>) => WorkflowOutput<TOutput>;
62
+ declare const send: <TOutput extends Command | Event>(message: WorkflowCommand<TOutput>) => WorkflowOutput<TOutput>;
63
+ declare const publish: <TOutput extends Command | Event>(message: WorkflowEvent<TOutput>) => WorkflowOutput<TOutput>;
68
64
  declare const schedule: <TOutput extends Command | Event>(message: TOutput, when: {
69
65
  afterInMs: number;
70
66
  } | {
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-Z7EDILIO.js');var _chunk7EZVPMJ6js = require('../chunk-7EZVPMJ6.js');require('../chunk-QSAFGRYV.js');require('../chunk-7FJXUW3D.js');require('../chunk-BARLLX6S.js');exports.accept = _chunk7EZVPMJ6js.h; exports.complete = _chunk7EZVPMJ6js.e; exports.error = _chunk7EZVPMJ6js.g; exports.ignore = _chunk7EZVPMJ6js.f; exports.publish = _chunk7EZVPMJ6js.c; exports.reply = _chunk7EZVPMJ6js.a; exports.schedule = _chunk7EZVPMJ6js.d; exports.send = _chunk7EZVPMJ6js.b;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-Z7EDILIO.js');require('../chunk-7FJXUW3D.js');require('../chunk-BARLLX6S.js');var _chunk7EZVPMJ6js = require('../chunk-7EZVPMJ6.js');require('../chunk-QSAFGRYV.js');exports.accept = _chunk7EZVPMJ6js.h; exports.complete = _chunk7EZVPMJ6js.e; exports.error = _chunk7EZVPMJ6js.g; exports.ignore = _chunk7EZVPMJ6js.f; exports.publish = _chunk7EZVPMJ6js.c; exports.reply = _chunk7EZVPMJ6js.a; exports.schedule = _chunk7EZVPMJ6js.d; exports.send = _chunk7EZVPMJ6js.b;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import"../chunk-C4CXU3PY.mjs";import{a,b,c,d,e,f,g,h}from"../chunk-ERDVHQZL.mjs";import"../chunk-IZWGWZ3P.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-YKICRTHH.mjs";export{h as accept,e as complete,g as error,f as ignore,c as publish,a as reply,d as schedule,b as send};
1
+ import"../chunk-C4CXU3PY.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-YKICRTHH.mjs";import{a,b,c,d,e,f,g,h}from"../chunk-ERDVHQZL.mjs";import"../chunk-IZWGWZ3P.mjs";export{h as accept,e as complete,g as error,f as ignore,c as publish,a as reply,d as schedule,b as send};
2
2
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-driven-io/emmett",
3
- "version": "0.5.4",
3
+ "version": "0.6.0",
4
4
  "description": "Emmett - Event Sourcing development made simple",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -1 +0,0 @@
1
- "use strict";//# sourceMappingURL=chunk-7H3QW2YD.js.map
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-HKEQAT6F.mjs.map