@event-driven-io/emmett 0.11.2 → 0.12.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 (43) hide show
  1. package/dist/chunk-GNTBBARO.mjs +10 -0
  2. package/dist/chunk-GNTBBARO.mjs.map +1 -0
  3. package/dist/{chunk-EYIJ7ZKY.mjs → chunk-GWMVSXLN.mjs} +2 -2
  4. package/dist/chunk-HXDPPPUA.js +10 -0
  5. package/dist/chunk-HXDPPPUA.js.map +1 -0
  6. package/dist/{chunk-LYKEARRW.js → chunk-MKHK5TRM.js} +2 -2
  7. package/dist/{chunk-LYKEARRW.js.map → chunk-MKHK5TRM.js.map} +1 -1
  8. package/dist/chunk-S33YM44M.mjs +2 -0
  9. package/dist/chunk-S33YM44M.mjs.map +1 -0
  10. package/dist/{chunk-OIDX2JMH.js → chunk-TGIGJCOU.js} +2 -2
  11. package/dist/index.d.mts +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.js +1 -1
  14. package/dist/index.mjs +1 -1
  15. package/dist/serialization/index.js +1 -1
  16. package/dist/serialization/index.mjs +1 -1
  17. package/dist/serialization/json/JSONParser.js +1 -1
  18. package/dist/serialization/json/JSONParser.mjs +1 -1
  19. package/dist/serialization/json/index.js +1 -1
  20. package/dist/serialization/json/index.mjs +1 -1
  21. package/dist/testing/assertions.d.mts +6 -5
  22. package/dist/testing/assertions.d.ts +6 -5
  23. package/dist/testing/assertions.js +1 -1
  24. package/dist/testing/assertions.mjs +1 -1
  25. package/dist/testing/deciderSpecification.js +1 -1
  26. package/dist/testing/deciderSpecification.mjs +1 -1
  27. package/dist/testing/features.js +1 -1
  28. package/dist/testing/features.js.map +1 -1
  29. package/dist/testing/features.mjs +1 -1
  30. package/dist/testing/features.mjs.map +1 -1
  31. package/dist/testing/index.d.mts +1 -1
  32. package/dist/testing/index.d.ts +1 -1
  33. package/dist/testing/index.js +1 -1
  34. package/dist/testing/index.mjs +1 -1
  35. package/package.json +1 -1
  36. package/dist/chunk-PKL7KGJ3.mjs +0 -2
  37. package/dist/chunk-PKL7KGJ3.mjs.map +0 -1
  38. package/dist/chunk-VCCKNYOY.js +0 -11
  39. package/dist/chunk-VCCKNYOY.js.map +0 -1
  40. package/dist/chunk-ZFBWMZ55.mjs +0 -11
  41. package/dist/chunk-ZFBWMZ55.mjs.map +0 -1
  42. /package/dist/{chunk-EYIJ7ZKY.mjs.map → chunk-GWMVSXLN.mjs.map} +0 -0
  43. /package/dist/{chunk-OIDX2JMH.js.map → chunk-TGIGJCOU.js.map} +0 -0
@@ -0,0 +1,10 @@
1
+ import{a as r}from"./chunk-B7NWWHCY.mjs";import{b as c}from"./chunk-S33YM44M.mjs";var l=class extends Error{constructor(e){super(e)}},g=(n,e)=>{let t=n,o=e;return u(t),u(o),Object.keys(o).every(a=>typeof o[a]=="object"?g(t[a],o[a]):o[a]===t[a])},p=n=>{throw new l(n??"That should not ever happened, right?")},w=async(n,e)=>{try{throw await n(),new l("Function didn't throw expected error")}catch(t){let o=t;return e&&s(e(o)),o}},f=(n,e)=>{try{throw n(),new l("Function didn't throw expected error")}catch(t){let o=t;return e&&s(e(o)),o}},k=(n,e,t)=>{if(!g(n,e))throw new l(t??`subObj:
2
+ ${c.stringify(e)}
3
+ is not subset of
4
+ ${c.stringify(n)}`)},x=(n,e,t)=>{if(!r(n,e))throw new l(t??`subObj:
5
+ ${c.stringify(e)}
6
+ is equals to
7
+ ${c.stringify(n)}`)},E=n=>({isEqualTo:e=>s(r(n,e))});function m(n,e){if(n)throw new l(e??"Condition is false")}function s(n,e){if(!n)throw new l(e??"Condition is false")}function u(n,e){if(!n)throw new l(e??"Condition is not truthy")}function i(n,e,t){if(n!==e)throw new l(t??`Objects are not equal:
8
+ Expected: ${c.stringify(n)}
9
+ Actual:${c.stringify(e)}`)}function h(n,e,t){if(n===e)throw new l(t??`Objects are equal: ${c.stringify(n)}`)}function b(n){h(n,null),u(n)}function y(n){i(n,null)}var O=n=>e=>r(e,n),v=n=>e=>n(e);function M(n){return{calledTimes:e=>{i(n.mock?.calls?.length,e)},notCalled:()=>{i(n?.mock?.calls?.length,0)},called:()=>{s(n.mock?.calls.length!==void 0&&n.mock.calls.length>0)},calledWith:(...e)=>{s(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>r(t.arguments,e)))},calledOnceWith:(...e)=>{s(n.mock?.calls.length!==void 0&&n.mock.calls.length===1&&n.mock.calls.some(t=>r(t.arguments,e)))},calledWithArgumentMatching:(...e)=>{s(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1),s(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>t.arguments&&t.arguments.length>=e.length&&e.every((o,a)=>o(t.arguments[a]))))},notCalledWithArgumentMatching:(...e)=>{m(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1&&n.mock.calls[0].arguments&&n.mock.calls[0].arguments.length>=e.length&&e.every((t,o)=>t(n.mock.calls[0].arguments[o])))}}}var A=n=>({isEmpty:()=>i(n.length,0),hasSize:e=>i(n.length,e),containsElements:(...e)=>{s(e.every(t=>e.some(o=>r(t,o))))},containsExactlyInAnyOrder:(...e)=>{i(n.length,e.length),s(n.every(t=>e.some(o=>r(t,o))))},containsExactlyInAnyOrderElementsOf:e=>{i(n.length,e.length),s(n.every(t=>e.some(o=>r(t,o))))},containsExactlyElementsOf:e=>{i(n.length,e.length);for(let t=0;t<n.length;t++)s(r(n[t],e[t]))},containsExactly:e=>{i(n.length,1),s(r(n[0],e))},contains:e=>{s(n.some(t=>r(t,e)))},containsOnlyOnceElementsOf:e=>{s(e.map(t=>n.filter(o=>r(o,t)).length).filter(t=>t===1).length===e.length)},containsAnyOf:(...e)=>{s(n.some(t=>e.some(o=>r(t,o))))},allMatch:e=>{s(n.every(e))},anyMatches:e=>{s(n.some(e))},allMatchAsync:async e=>{for(let t of n)s(await e(t))}});export{l as a,g as b,p as c,w as d,f as e,k as f,x as g,E as h,m as i,s as j,u as k,i as l,h as m,b as n,y as o,O as p,v as q,M as r,A as s};
10
+ //# sourceMappingURL=chunk-GNTBBARO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing/assertions.ts"],"sourcesContent":["import { JSONParser } from '../serialization';\nimport type { DefaultRecord } from '../typing';\nimport { deepEquals } from '../utils';\n\nexport class AssertionError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\nexport const isSubset = (superObj: unknown, subObj: unknown): boolean => {\n const sup = superObj as DefaultRecord;\n const sub = subObj as DefaultRecord;\n\n assertOk(sup);\n assertOk(sub);\n\n return Object.keys(sub).every((ele: string) => {\n if (typeof sub[ele] == 'object') {\n return isSubset(sup[ele], sub[ele]);\n }\n return sub[ele] === sup[ele];\n });\n};\n\nexport const assertFails = (message?: string) => {\n throw new AssertionError(message ?? 'That should not ever happened, right?');\n};\n\nexport const assertThrowsAsync = async <TError extends Error>(\n fun: () => Promise<void>,\n errorCheck?: (error: Error) => boolean,\n): Promise<TError> => {\n try {\n await fun();\n throw new AssertionError(\"Function didn't throw expected error\");\n } catch (error) {\n const typedError = error as TError;\n if (errorCheck) assertTrue(errorCheck(typedError));\n return typedError;\n }\n};\n\nexport const assertThrows = <TError extends Error>(\n fun: () => void,\n errorCheck?: (error: Error) => boolean,\n): TError => {\n try {\n fun();\n throw new AssertionError(\"Function didn't throw expected error\");\n } catch (error) {\n const typedError = error as TError;\n if (errorCheck) assertTrue(errorCheck(typedError));\n return typedError;\n }\n};\nexport const assertMatches = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!isSubset(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSONParser.stringify(expected)}\\nis not subset of\\n${JSONParser.stringify(actual)}`,\n );\n};\n\nexport const assertDeepEqual = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!deepEquals(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSONParser.stringify(expected)}\\nis equals to\\n${JSONParser.stringify(actual)}`,\n );\n};\n\nexport const assertThat = <T>(item: T) => {\n return {\n isEqualTo: (other: T) => assertTrue(deepEquals(item, other)),\n };\n};\n\nexport function assertFalse(\n condition: boolean,\n message?: string,\n): asserts condition is false {\n if (condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertTrue(\n condition: boolean,\n message?: string,\n): asserts condition is true {\n if (!condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertOk<T>(\n obj: T | null | undefined,\n message?: string,\n): asserts obj is T {\n if (!obj) throw new AssertionError(message ?? `Condition is not truthy`);\n}\n\nexport function assertEqual<T>(\n expected: T | null | undefined,\n actual: T | null | undefined,\n message?: string,\n): void {\n if (expected !== actual)\n throw new AssertionError(\n message ??\n `Objects are not equal:\\nExpected: ${JSONParser.stringify(expected)}\\nActual:${JSONParser.stringify(actual)}`,\n );\n}\n\nexport function assertNotEqual<T>(\n obj: T | null | undefined,\n other: T | null | undefined,\n message?: string,\n): void {\n if (obj === other)\n throw new AssertionError(\n message ?? `Objects are equal: ${JSONParser.stringify(obj)}`,\n );\n}\n\nexport function assertIsNotNull<T extends object | bigint>(\n result: T | null,\n): asserts result is T {\n assertNotEqual(result, null);\n assertOk(result);\n}\n\nexport function assertIsNull<T extends object>(\n result: T | null,\n): asserts result is null {\n assertEqual(result, null);\n}\n\ntype Call = {\n arguments: unknown[];\n result: unknown;\n target: unknown;\n this: unknown;\n};\n\nexport type ArgumentMatcher = (arg: unknown) => boolean;\n\nexport const argValue =\n <T>(value: T): ArgumentMatcher =>\n (arg) =>\n deepEquals(arg, value);\n\nexport const argMatches =\n <T>(matches: (arg: T) => boolean): ArgumentMatcher =>\n (arg) =>\n matches(arg as T);\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MockedFunction = Function & { mock?: { calls: Call[] } };\n\nexport function verifyThat(fn: MockedFunction) {\n return {\n calledTimes: (times: number) => {\n assertEqual(fn.mock?.calls?.length, times);\n },\n notCalled: () => {\n assertEqual(fn?.mock?.calls?.length, 0);\n },\n called: () => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length > 0,\n );\n },\n calledWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledOnceWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length === 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length >= 1,\n );\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some(\n (call) =>\n call.arguments &&\n call.arguments.length >= matches.length &&\n matches.every((match, index) => match(call.arguments[index])),\n ),\n );\n },\n notCalledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertFalse(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls[0]!.arguments &&\n fn.mock.calls[0]!.arguments.length >= matches.length &&\n matches.every((match, index) =>\n match(fn.mock!.calls[0]!.arguments[index]),\n ),\n );\n },\n };\n}\n\nexport const assertThatArray = <T>(array: T[]) => {\n return {\n isEmpty: () => assertEqual(array.length, 0),\n hasSize: (length: number) => assertEqual(array.length, length),\n containsElements: (...other: T[]) => {\n assertTrue(other.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrder: (...other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrderElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n for (let i = 0; i < array.length; i++) {\n assertTrue(deepEquals(array[i], other[i]));\n }\n },\n containsExactly: (elem: T) => {\n assertEqual(array.length, 1);\n assertTrue(deepEquals(array[0], elem));\n },\n contains: (elem: T) => {\n assertTrue(array.some((a) => deepEquals(a, elem)));\n },\n containsOnlyOnceElementsOf: (other: T[]) => {\n assertTrue(\n other\n .map((o) => array.filter((a) => deepEquals(a, o)).length)\n .filter((a) => a === 1).length === other.length,\n );\n },\n containsAnyOf: (...other: T[]) => {\n assertTrue(array.some((a) => other.some((o) => deepEquals(a, o))));\n },\n allMatch: (matches: (item: T) => boolean) => {\n assertTrue(array.every(matches));\n },\n anyMatches: (matches: (item: T) => boolean) => {\n assertTrue(array.some(matches));\n },\n allMatchAsync: async (\n matches: (item: T) => Promise<boolean>,\n ): Promise<void> => {\n for (const item of array) {\n assertTrue(await matches(item));\n }\n },\n };\n};\n"],"mappings":"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","names":["AssertionError","message","isSubset","superObj","subObj","sup","sub","assertOk","ele","assertFails","assertThrowsAsync","fun","errorCheck","error","typedError","assertTrue","assertThrows","assertMatches","actual","expected","JSONParser","assertDeepEqual","deepEquals","assertThat","item","other","assertFalse","condition","obj","assertEqual","assertNotEqual","assertIsNotNull","result","assertIsNull","argValue","value","arg","argMatches","matches","verifyThat","fn","times","args","call","match","index","assertThatArray","array","length","ts","i","elem","a","o"]}
@@ -1,2 +1,2 @@
1
- import{a as i,e as E,i as t}from"./chunk-ZFBWMZ55.mjs";import{j as s}from"./chunk-KLLSLLHN.mjs";var y={for:o=>n=>({when:c=>{let a=()=>{let r=(Array.isArray(n)?n:[n]).reduce(o.evolve,o.initialState());return o.decide(c,r)};return{then:e=>{let r=a(),d=Array.isArray(r)?r:[r],h=Array.isArray(e)?e:[e];E(d,h)},thenThrows:(...e)=>{try{throw a(),new i("Handler did not fail as expected")}catch(r){if(r instanceof i)throw r;if(e.length===0)return;if(!s(e[0])){t(e[0](r),`Error didn't match the error condition: ${r?.toString()}`);return}t(r instanceof e[0],`Caught error is not an instance of the expected type: ${r?.toString()}`),e[1]&&t(e[1](r),`Error didn't match the error condition: ${r?.toString()}`)}}}}})};export{y as a};
2
- //# sourceMappingURL=chunk-EYIJ7ZKY.mjs.map
1
+ import{a as i,f as E,j as t}from"./chunk-GNTBBARO.mjs";import{j as s}from"./chunk-KLLSLLHN.mjs";var y={for:o=>n=>({when:c=>{let a=()=>{let r=(Array.isArray(n)?n:[n]).reduce(o.evolve,o.initialState());return o.decide(c,r)};return{then:e=>{let r=a(),d=Array.isArray(r)?r:[r],h=Array.isArray(e)?e:[e];E(d,h)},thenThrows:(...e)=>{try{throw a(),new i("Handler did not fail as expected")}catch(r){if(r instanceof i)throw r;if(e.length===0)return;if(!s(e[0])){t(e[0](r),`Error didn't match the error condition: ${r?.toString()}`);return}t(r instanceof e[0],`Caught error is not an instance of the expected type: ${r?.toString()}`),e[1]&&t(e[1](r),`Error didn't match the error condition: ${r?.toString()}`)}}}}})};export{y as a};
2
+ //# sourceMappingURL=chunk-GWMVSXLN.mjs.map
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkPVFUNWT6js = require('./chunk-PVFUNWT6.js');var _chunkMKHK5TRMjs = require('./chunk-MKHK5TRM.js');var l=class extends Error{constructor(e){super(e)}},g= exports.b =(n,e)=>{let t=n,o=e;return u(t),u(o),Object.keys(o).every(a=>typeof o[a]=="object"?g(t[a],o[a]):o[a]===t[a])},p= exports.c =n=>{throw new l(_nullishCoalesce(n, () => ("That should not ever happened, right?")))},w= exports.d =async(n,e)=>{try{throw await n(),new l("Function didn't throw expected error")}catch(t){let o=t;return e&&s(e(o)),o}},f= exports.e =(n,e)=>{try{throw n(),new l("Function didn't throw expected error")}catch(t){let o=t;return e&&s(e(o)),o}},k= exports.f =(n,e,t)=>{if(!g(n,e))throw new l(_nullishCoalesce(t, () => (`subObj:
2
+ ${_chunkMKHK5TRMjs.b.stringify(e)}
3
+ is not subset of
4
+ ${_chunkMKHK5TRMjs.b.stringify(n)}`)))},x= exports.g =(n,e,t)=>{if(!_chunkPVFUNWT6js.a.call(void 0, n,e))throw new l(_nullishCoalesce(t, () => (`subObj:
5
+ ${_chunkMKHK5TRMjs.b.stringify(e)}
6
+ is equals to
7
+ ${_chunkMKHK5TRMjs.b.stringify(n)}`)))},E= exports.h =n=>({isEqualTo:e=>s(_chunkPVFUNWT6js.a.call(void 0, n,e))});function m(n,e){if(n)throw new l(_nullishCoalesce(e, () => ("Condition is false")))}function s(n,e){if(!n)throw new l(_nullishCoalesce(e, () => ("Condition is false")))}function u(n,e){if(!n)throw new l(_nullishCoalesce(e, () => ("Condition is not truthy")))}function i(n,e,t){if(n!==e)throw new l(_nullishCoalesce(t, () => (`Objects are not equal:
8
+ Expected: ${_chunkMKHK5TRMjs.b.stringify(n)}
9
+ Actual:${_chunkMKHK5TRMjs.b.stringify(e)}`)))}function h(n,e,t){if(n===e)throw new l(_nullishCoalesce(t, () => (`Objects are equal: ${_chunkMKHK5TRMjs.b.stringify(n)}`)))}function b(n){h(n,null),u(n)}function y(n){i(n,null)}var O=n=>e=>_chunkPVFUNWT6js.a.call(void 0, e,n),v= exports.q =n=>e=>n(e);function M(n){return{calledTimes:e=>{i(_optionalChain([n, 'access', _ => _.mock, 'optionalAccess', _2 => _2.calls, 'optionalAccess', _3 => _3.length]),e)},notCalled:()=>{i(_optionalChain([n, 'optionalAccess', _4 => _4.mock, 'optionalAccess', _5 => _5.calls, 'optionalAccess', _6 => _6.length]),0)},called:()=>{s(_optionalChain([n, 'access', _7 => _7.mock, 'optionalAccess', _8 => _8.calls, 'access', _9 => _9.length])!==void 0&&n.mock.calls.length>0)},calledWith:(...e)=>{s(_optionalChain([n, 'access', _10 => _10.mock, 'optionalAccess', _11 => _11.calls, 'access', _12 => _12.length])!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>_chunkPVFUNWT6js.a.call(void 0, t.arguments,e)))},calledOnceWith:(...e)=>{s(_optionalChain([n, 'access', _13 => _13.mock, 'optionalAccess', _14 => _14.calls, 'access', _15 => _15.length])!==void 0&&n.mock.calls.length===1&&n.mock.calls.some(t=>_chunkPVFUNWT6js.a.call(void 0, t.arguments,e)))},calledWithArgumentMatching:(...e)=>{s(_optionalChain([n, 'access', _16 => _16.mock, 'optionalAccess', _17 => _17.calls, 'access', _18 => _18.length])!==void 0&&n.mock.calls.length>=1),s(_optionalChain([n, 'access', _19 => _19.mock, 'optionalAccess', _20 => _20.calls, 'access', _21 => _21.length])!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>t.arguments&&t.arguments.length>=e.length&&e.every((o,a)=>o(t.arguments[a]))))},notCalledWithArgumentMatching:(...e)=>{m(_optionalChain([n, 'access', _22 => _22.mock, 'optionalAccess', _23 => _23.calls, 'access', _24 => _24.length])!==void 0&&n.mock.calls.length>=1&&n.mock.calls[0].arguments&&n.mock.calls[0].arguments.length>=e.length&&e.every((t,o)=>t(n.mock.calls[0].arguments[o])))}}}var A=n=>({isEmpty:()=>i(n.length,0),hasSize:e=>i(n.length,e),containsElements:(...e)=>{s(e.every(t=>e.some(o=>_chunkPVFUNWT6js.a.call(void 0, t,o))))},containsExactlyInAnyOrder:(...e)=>{i(n.length,e.length),s(n.every(t=>e.some(o=>_chunkPVFUNWT6js.a.call(void 0, t,o))))},containsExactlyInAnyOrderElementsOf:e=>{i(n.length,e.length),s(n.every(t=>e.some(o=>_chunkPVFUNWT6js.a.call(void 0, t,o))))},containsExactlyElementsOf:e=>{i(n.length,e.length);for(let t=0;t<n.length;t++)s(_chunkPVFUNWT6js.a.call(void 0, n[t],e[t]))},containsExactly:e=>{i(n.length,1),s(_chunkPVFUNWT6js.a.call(void 0, n[0],e))},contains:e=>{s(n.some(t=>_chunkPVFUNWT6js.a.call(void 0, t,e)))},containsOnlyOnceElementsOf:e=>{s(e.map(t=>n.filter(o=>_chunkPVFUNWT6js.a.call(void 0, o,t)).length).filter(t=>t===1).length===e.length)},containsAnyOf:(...e)=>{s(n.some(t=>e.some(o=>_chunkPVFUNWT6js.a.call(void 0, t,o))))},allMatch:e=>{s(n.every(e))},anyMatches:e=>{s(n.some(e))},allMatchAsync:async e=>{for(let t of n)s(await e(t))}});exports.a = l; exports.b = g; exports.c = p; exports.d = w; exports.e = f; exports.f = k; exports.g = x; exports.h = E; exports.i = m; exports.j = s; exports.k = u; exports.l = i; exports.m = h; exports.n = b; exports.o = y; exports.p = O; exports.q = v; exports.r = M; exports.s = A;
10
+ //# sourceMappingURL=chunk-HXDPPPUA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing/assertions.ts"],"names":["AssertionError","message","isSubset","superObj","subObj","sup","sub","assertOk","ele","assertFails","assertThrowsAsync","fun","errorCheck","error","typedError","assertTrue","assertThrows","assertMatches","actual","expected","JSONParser","assertDeepEqual","deepEquals","assertThat","item","other","assertFalse","condition","obj","assertEqual","assertNotEqual","assertIsNotNull","result","assertIsNull","argValue","value","arg","argMatches","matches","verifyThat","fn","times","args","call","match","index","assertThatArray","array","length","ts","i","elem","a","o"],"mappings":"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","sourcesContent":["import { JSONParser } from '../serialization';\nimport type { DefaultRecord } from '../typing';\nimport { deepEquals } from '../utils';\n\nexport class AssertionError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\nexport const isSubset = (superObj: unknown, subObj: unknown): boolean => {\n const sup = superObj as DefaultRecord;\n const sub = subObj as DefaultRecord;\n\n assertOk(sup);\n assertOk(sub);\n\n return Object.keys(sub).every((ele: string) => {\n if (typeof sub[ele] == 'object') {\n return isSubset(sup[ele], sub[ele]);\n }\n return sub[ele] === sup[ele];\n });\n};\n\nexport const assertFails = (message?: string) => {\n throw new AssertionError(message ?? 'That should not ever happened, right?');\n};\n\nexport const assertThrowsAsync = async <TError extends Error>(\n fun: () => Promise<void>,\n errorCheck?: (error: Error) => boolean,\n): Promise<TError> => {\n try {\n await fun();\n throw new AssertionError(\"Function didn't throw expected error\");\n } catch (error) {\n const typedError = error as TError;\n if (errorCheck) assertTrue(errorCheck(typedError));\n return typedError;\n }\n};\n\nexport const assertThrows = <TError extends Error>(\n fun: () => void,\n errorCheck?: (error: Error) => boolean,\n): TError => {\n try {\n fun();\n throw new AssertionError(\"Function didn't throw expected error\");\n } catch (error) {\n const typedError = error as TError;\n if (errorCheck) assertTrue(errorCheck(typedError));\n return typedError;\n }\n};\nexport const assertMatches = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!isSubset(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSONParser.stringify(expected)}\\nis not subset of\\n${JSONParser.stringify(actual)}`,\n );\n};\n\nexport const assertDeepEqual = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!deepEquals(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSONParser.stringify(expected)}\\nis equals to\\n${JSONParser.stringify(actual)}`,\n );\n};\n\nexport const assertThat = <T>(item: T) => {\n return {\n isEqualTo: (other: T) => assertTrue(deepEquals(item, other)),\n };\n};\n\nexport function assertFalse(\n condition: boolean,\n message?: string,\n): asserts condition is false {\n if (condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertTrue(\n condition: boolean,\n message?: string,\n): asserts condition is true {\n if (!condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertOk<T>(\n obj: T | null | undefined,\n message?: string,\n): asserts obj is T {\n if (!obj) throw new AssertionError(message ?? `Condition is not truthy`);\n}\n\nexport function assertEqual<T>(\n expected: T | null | undefined,\n actual: T | null | undefined,\n message?: string,\n): void {\n if (expected !== actual)\n throw new AssertionError(\n message ??\n `Objects are not equal:\\nExpected: ${JSONParser.stringify(expected)}\\nActual:${JSONParser.stringify(actual)}`,\n );\n}\n\nexport function assertNotEqual<T>(\n obj: T | null | undefined,\n other: T | null | undefined,\n message?: string,\n): void {\n if (obj === other)\n throw new AssertionError(\n message ?? `Objects are equal: ${JSONParser.stringify(obj)}`,\n );\n}\n\nexport function assertIsNotNull<T extends object | bigint>(\n result: T | null,\n): asserts result is T {\n assertNotEqual(result, null);\n assertOk(result);\n}\n\nexport function assertIsNull<T extends object>(\n result: T | null,\n): asserts result is null {\n assertEqual(result, null);\n}\n\ntype Call = {\n arguments: unknown[];\n result: unknown;\n target: unknown;\n this: unknown;\n};\n\nexport type ArgumentMatcher = (arg: unknown) => boolean;\n\nexport const argValue =\n <T>(value: T): ArgumentMatcher =>\n (arg) =>\n deepEquals(arg, value);\n\nexport const argMatches =\n <T>(matches: (arg: T) => boolean): ArgumentMatcher =>\n (arg) =>\n matches(arg as T);\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MockedFunction = Function & { mock?: { calls: Call[] } };\n\nexport function verifyThat(fn: MockedFunction) {\n return {\n calledTimes: (times: number) => {\n assertEqual(fn.mock?.calls?.length, times);\n },\n notCalled: () => {\n assertEqual(fn?.mock?.calls?.length, 0);\n },\n called: () => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length > 0,\n );\n },\n calledWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledOnceWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length === 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length >= 1,\n );\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some(\n (call) =>\n call.arguments &&\n call.arguments.length >= matches.length &&\n matches.every((match, index) => match(call.arguments[index])),\n ),\n );\n },\n notCalledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertFalse(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls[0]!.arguments &&\n fn.mock.calls[0]!.arguments.length >= matches.length &&\n matches.every((match, index) =>\n match(fn.mock!.calls[0]!.arguments[index]),\n ),\n );\n },\n };\n}\n\nexport const assertThatArray = <T>(array: T[]) => {\n return {\n isEmpty: () => assertEqual(array.length, 0),\n hasSize: (length: number) => assertEqual(array.length, length),\n containsElements: (...other: T[]) => {\n assertTrue(other.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrder: (...other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrderElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n for (let i = 0; i < array.length; i++) {\n assertTrue(deepEquals(array[i], other[i]));\n }\n },\n containsExactly: (elem: T) => {\n assertEqual(array.length, 1);\n assertTrue(deepEquals(array[0], elem));\n },\n contains: (elem: T) => {\n assertTrue(array.some((a) => deepEquals(a, elem)));\n },\n containsOnlyOnceElementsOf: (other: T[]) => {\n assertTrue(\n other\n .map((o) => array.filter((a) => deepEquals(a, o)).length)\n .filter((a) => a === 1).length === other.length,\n );\n },\n containsAnyOf: (...other: T[]) => {\n assertTrue(array.some((a) => other.some((o) => deepEquals(a, o))));\n },\n allMatch: (matches: (item: T) => boolean) => {\n assertTrue(array.every(matches));\n },\n anyMatches: (matches: (item: T) => boolean) => {\n assertTrue(array.some(matches));\n },\n allMatchAsync: async (\n matches: (item: T) => Promise<boolean>,\n ): Promise<void> => {\n for (const item of array) {\n assertTrue(await matches(item));\n }\n },\n };\n};\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var a=class extends Error{constructor(r){super(`Cannot parse! ${r}`)}},p= exports.b ={stringify:(o,r)=>JSON.stringify(_optionalChain([r, 'optionalAccess', _ => _.map])?r.map(o):o),parse:(o,r)=>{let e=JSON.parse(o,_optionalChain([r, 'optionalAccess', _2 => _2.reviver]));if(_optionalChain([r, 'optionalAccess', _3 => _3.typeCheck])&&!_optionalChain([r, 'optionalAccess', _4 => _4.typeCheck, 'call', _5 => _5(e)]))throw new a(o);return _optionalChain([r, 'optionalAccess', _6 => _6.map])?r.map(e):e}};exports.a = a; exports.b = p;
2
- //# sourceMappingURL=chunk-LYKEARRW.js.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var n=class extends Error{constructor(r){super(`Cannot parse! ${r}`)}},p= exports.b ={stringify:(o,r)=>JSON.stringify(_optionalChain([r, 'optionalAccess', _ => _.map])?r.map(o):o,(e,a)=>typeof a=="bigint"?a.toString():a),parse:(o,r)=>{let e=JSON.parse(o,_optionalChain([r, 'optionalAccess', _2 => _2.reviver]));if(_optionalChain([r, 'optionalAccess', _3 => _3.typeCheck])&&!_optionalChain([r, 'optionalAccess', _4 => _4.typeCheck, 'call', _5 => _5(e)]))throw new n(o);return _optionalChain([r, 'optionalAccess', _6 => _6.map])?r.map(e):e}};exports.a = n; exports.b = p;
2
+ //# sourceMappingURL=chunk-MKHK5TRM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/serialization/json/JSONParser.ts"],"names":["ParseError","text","JSONParser","value","options","parsed"],"mappings":"AAAO,IAAMA,EAAN,cAAyB,KAAM,CACpC,YAAYC,EAAc,CACxB,MAAM,iBAAiBA,CAAI,EAAE,CAC/B,CACF,EA0BaC,EAAa,CACxB,UAAW,CACTC,EACAC,IAEO,KAAK,UACVA,GAAS,IAAMA,EAAQ,IAAID,CAA6B,EAAIA,CAC9D,EAEF,MAAO,CACLF,EACAG,IACmB,CACnB,IAAMC,EAAkB,KAAK,MAAMJ,EAAMG,GAAS,OAAO,EAEzD,GAAIA,GAAS,WAAa,CAACA,GAAS,UAAcC,CAAM,EACtD,MAAM,IAAIL,EAAWC,CAAI,EAE3B,OAAOG,GAAS,IACZA,EAAQ,IAAIC,CAA8B,EACzCA,CACP,CACF","sourcesContent":["export class ParseError extends Error {\n constructor(text: string) {\n super(`Cannot parse! ${text}`);\n }\n}\n\nexport type Mapper<From, To = From> =\n | ((value: unknown) => To)\n | ((value: Partial<From>) => To)\n | ((value: From) => To)\n | ((value: Partial<To>) => To)\n | ((value: To) => To)\n | ((value: Partial<To | From>) => To)\n | ((value: To | From) => To);\n\nexport type MapperArgs<From, To = From> = Partial<From> &\n From &\n Partial<To> &\n To;\n\nexport type ParseOptions<From, To = From> = {\n reviver?: (key: string, value: unknown) => unknown;\n map?: Mapper<From, To>;\n typeCheck?: <To>(value: unknown) => value is To;\n};\n\nexport type StringifyOptions<From, To = From> = {\n map?: Mapper<From, To>;\n};\n\nexport const JSONParser = {\n stringify: <From, To = From>(\n value: From,\n options?: StringifyOptions<From, To>,\n ) => {\n return JSON.stringify(\n options?.map ? options.map(value as MapperArgs<From, To>) : value,\n );\n },\n parse: <From, To = From>(\n text: string,\n options?: ParseOptions<From, To>,\n ): To | undefined => {\n const parsed: unknown = JSON.parse(text, options?.reviver);\n\n if (options?.typeCheck && !options?.typeCheck<To>(parsed))\n throw new ParseError(text);\n\n return options?.map\n ? options.map(parsed as MapperArgs<From, To>)\n : (parsed as To | undefined);\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/serialization/json/JSONParser.ts"],"names":["ParseError","text","JSONParser","value","options","_","v","parsed"],"mappings":"AAAO,IAAMA,EAAN,cAAyB,KAAM,CACpC,YAAYC,EAAc,CACxB,MAAM,iBAAiBA,CAAI,EAAE,CAC/B,CACF,EA0BaC,EAAa,CACxB,UAAW,CACTC,EACAC,IAEO,KAAK,UACVA,GAAS,IAAMA,EAAQ,IAAID,CAA6B,EAAIA,EAG5D,CAACE,EAAGC,IAAO,OAAOA,GAAM,SAAWA,EAAE,SAAS,EAAIA,CACpD,EAEF,MAAO,CACLL,EACAG,IACmB,CACnB,IAAMG,EAAkB,KAAK,MAAMN,EAAMG,GAAS,OAAO,EAEzD,GAAIA,GAAS,WAAa,CAACA,GAAS,UAAcG,CAAM,EACtD,MAAM,IAAIP,EAAWC,CAAI,EAE3B,OAAOG,GAAS,IACZA,EAAQ,IAAIG,CAA8B,EACzCA,CACP,CACF","sourcesContent":["export class ParseError extends Error {\n constructor(text: string) {\n super(`Cannot parse! ${text}`);\n }\n}\n\nexport type Mapper<From, To = From> =\n | ((value: unknown) => To)\n | ((value: Partial<From>) => To)\n | ((value: From) => To)\n | ((value: Partial<To>) => To)\n | ((value: To) => To)\n | ((value: Partial<To | From>) => To)\n | ((value: To | From) => To);\n\nexport type MapperArgs<From, To = From> = Partial<From> &\n From &\n Partial<To> &\n To;\n\nexport type ParseOptions<From, To = From> = {\n reviver?: (key: string, value: unknown) => unknown;\n map?: Mapper<From, To>;\n typeCheck?: <To>(value: unknown) => value is To;\n};\n\nexport type StringifyOptions<From, To = From> = {\n map?: Mapper<From, To>;\n};\n\nexport const JSONParser = {\n stringify: <From, To = From>(\n value: From,\n options?: StringifyOptions<From, To>,\n ) => {\n return JSON.stringify(\n options?.map ? options.map(value as MapperArgs<From, To>) : value,\n //TODO: Consider adding support to DateTime and adding specific format to mark that's a bigint\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n (_, v) => (typeof v === 'bigint' ? v.toString() : v),\n );\n },\n parse: <From, To = From>(\n text: string,\n options?: ParseOptions<From, To>,\n ): To | undefined => {\n const parsed: unknown = JSON.parse(text, options?.reviver);\n\n if (options?.typeCheck && !options?.typeCheck<To>(parsed))\n throw new ParseError(text);\n\n return options?.map\n ? options.map(parsed as MapperArgs<From, To>)\n : (parsed as To | undefined);\n },\n};\n"]}
@@ -0,0 +1,2 @@
1
+ var n=class extends Error{constructor(r){super(`Cannot parse! ${r}`)}},p={stringify:(o,r)=>JSON.stringify(r?.map?r.map(o):o,(e,a)=>typeof a=="bigint"?a.toString():a),parse:(o,r)=>{let e=JSON.parse(o,r?.reviver);if(r?.typeCheck&&!r?.typeCheck(e))throw new n(o);return r?.map?r.map(e):e}};export{n as a,p as b};
2
+ //# sourceMappingURL=chunk-S33YM44M.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/serialization/json/JSONParser.ts"],"sourcesContent":["export class ParseError extends Error {\n constructor(text: string) {\n super(`Cannot parse! ${text}`);\n }\n}\n\nexport type Mapper<From, To = From> =\n | ((value: unknown) => To)\n | ((value: Partial<From>) => To)\n | ((value: From) => To)\n | ((value: Partial<To>) => To)\n | ((value: To) => To)\n | ((value: Partial<To | From>) => To)\n | ((value: To | From) => To);\n\nexport type MapperArgs<From, To = From> = Partial<From> &\n From &\n Partial<To> &\n To;\n\nexport type ParseOptions<From, To = From> = {\n reviver?: (key: string, value: unknown) => unknown;\n map?: Mapper<From, To>;\n typeCheck?: <To>(value: unknown) => value is To;\n};\n\nexport type StringifyOptions<From, To = From> = {\n map?: Mapper<From, To>;\n};\n\nexport const JSONParser = {\n stringify: <From, To = From>(\n value: From,\n options?: StringifyOptions<From, To>,\n ) => {\n return JSON.stringify(\n options?.map ? options.map(value as MapperArgs<From, To>) : value,\n //TODO: Consider adding support to DateTime and adding specific format to mark that's a bigint\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n (_, v) => (typeof v === 'bigint' ? v.toString() : v),\n );\n },\n parse: <From, To = From>(\n text: string,\n options?: ParseOptions<From, To>,\n ): To | undefined => {\n const parsed: unknown = JSON.parse(text, options?.reviver);\n\n if (options?.typeCheck && !options?.typeCheck<To>(parsed))\n throw new ParseError(text);\n\n return options?.map\n ? options.map(parsed as MapperArgs<From, To>)\n : (parsed as To | undefined);\n },\n};\n"],"mappings":"AAAO,IAAMA,EAAN,cAAyB,KAAM,CACpC,YAAYC,EAAc,CACxB,MAAM,iBAAiBA,CAAI,EAAE,CAC/B,CACF,EA0BaC,EAAa,CACxB,UAAW,CACTC,EACAC,IAEO,KAAK,UACVA,GAAS,IAAMA,EAAQ,IAAID,CAA6B,EAAIA,EAG5D,CAACE,EAAGC,IAAO,OAAOA,GAAM,SAAWA,EAAE,SAAS,EAAIA,CACpD,EAEF,MAAO,CACLL,EACAG,IACmB,CACnB,IAAMG,EAAkB,KAAK,MAAMN,EAAMG,GAAS,OAAO,EAEzD,GAAIA,GAAS,WAAa,CAACA,GAAS,UAAcG,CAAM,EACtD,MAAM,IAAIP,EAAWC,CAAI,EAE3B,OAAOG,GAAS,IACZA,EAAQ,IAAIG,CAA8B,EACzCA,CACP,CACF","names":["ParseError","text","JSONParser","value","options","_","v","parsed"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkVCCKNYOYjs = require('./chunk-VCCKNYOY.js');var _chunkE7KI3V22js = require('./chunk-E7KI3V22.js');var y={for:o=>n=>({when:c=>{let a=()=>{let r=(Array.isArray(n)?n:[n]).reduce(o.evolve,o.initialState());return o.decide(c,r)};return{then:e=>{let r=a(),d=Array.isArray(r)?r:[r],h=Array.isArray(e)?e:[e];_chunkVCCKNYOYjs.e.call(void 0, d,h)},thenThrows:(...e)=>{try{throw a(),new (0, _chunkVCCKNYOYjs.a)("Handler did not fail as expected")}catch(r){if(r instanceof _chunkVCCKNYOYjs.a)throw r;if(e.length===0)return;if(!_chunkE7KI3V22js.j.call(void 0, e[0])){_chunkVCCKNYOYjs.i.call(void 0, e[0](r),`Error didn't match the error condition: ${_optionalChain([r, 'optionalAccess', _ => _.toString, 'call', _2 => _2()])}`);return}_chunkVCCKNYOYjs.i.call(void 0, r instanceof e[0],`Caught error is not an instance of the expected type: ${_optionalChain([r, 'optionalAccess', _3 => _3.toString, 'call', _4 => _4()])}`),e[1]&&_chunkVCCKNYOYjs.i.call(void 0, e[1](r),`Error didn't match the error condition: ${_optionalChain([r, 'optionalAccess', _5 => _5.toString, 'call', _6 => _6()])}`)}}}}})};exports.a = y;
2
- //# sourceMappingURL=chunk-OIDX2JMH.js.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkHXDPPPUAjs = require('./chunk-HXDPPPUA.js');var _chunkE7KI3V22js = require('./chunk-E7KI3V22.js');var y={for:o=>n=>({when:c=>{let a=()=>{let r=(Array.isArray(n)?n:[n]).reduce(o.evolve,o.initialState());return o.decide(c,r)};return{then:e=>{let r=a(),d=Array.isArray(r)?r:[r],h=Array.isArray(e)?e:[e];_chunkHXDPPPUAjs.f.call(void 0, d,h)},thenThrows:(...e)=>{try{throw a(),new (0, _chunkHXDPPPUAjs.a)("Handler did not fail as expected")}catch(r){if(r instanceof _chunkHXDPPPUAjs.a)throw r;if(e.length===0)return;if(!_chunkE7KI3V22js.j.call(void 0, e[0])){_chunkHXDPPPUAjs.j.call(void 0, e[0](r),`Error didn't match the error condition: ${_optionalChain([r, 'optionalAccess', _ => _.toString, 'call', _2 => _2()])}`);return}_chunkHXDPPPUAjs.j.call(void 0, r instanceof e[0],`Caught error is not an instance of the expected type: ${_optionalChain([r, 'optionalAccess', _3 => _3.toString, 'call', _4 => _4()])}`),e[1]&&_chunkHXDPPPUAjs.j.call(void 0, e[1](r),`Error didn't match the error condition: ${_optionalChain([r, 'optionalAccess', _5 => _5.toString, 'call', _6 => _6()])}`)}}}}})};exports.a = y;
2
+ //# sourceMappingURL=chunk-TGIGJCOU.js.map
package/dist/index.d.mts CHANGED
@@ -9,7 +9,7 @@ export { concatUint8Arrays } from './streaming/binaryArrays.mjs';
9
9
  export { collectStream } from './streaming/collect.mjs';
10
10
  export { BinaryJsonDecoder, CompositeDecoder, Decoder, DefaultDecoder, JsonDecoder, ObjectDecoder, StringDecoder } from './streaming/decoders/index.mjs';
11
11
  export { restream } from './streaming/restream.mjs';
12
- export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertTrue, isSubset, verifyThat } from './testing/assertions.mjs';
12
+ export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertThrowsAsync, assertTrue, isSubset, verifyThat } from './testing/assertions.mjs';
13
13
  export { DeciderSpecfication, DeciderSpecification, ThenThrows } from './testing/deciderSpecification.mjs';
14
14
  export { TestEventStream, WrapEventStore } from './testing/wrapEventStore.mjs';
15
15
  export { Brand, Command, CommandDataOf, CommandMetaDataOf, CommandTypeOf, CreateCommandType, CreateEventType, Decider, DefaultCommandMetadata, DefaultRecord, Event, EventDataOf, EventMetaDataOf, EventTypeOf, Flavour, ReadEvent, ReadEventMetadata, ReadEventMetadataWithGlobalPosition, Workflow, WorkflowCommand, WorkflowEvent, WorkflowOutput, accept, command, complete, error, event, ignore, publish, reply, schedule, send } from './typing/index.mjs';
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { concatUint8Arrays } from './streaming/binaryArrays.js';
9
9
  export { collectStream } from './streaming/collect.js';
10
10
  export { BinaryJsonDecoder, CompositeDecoder, Decoder, DefaultDecoder, JsonDecoder, ObjectDecoder, StringDecoder } from './streaming/decoders/index.js';
11
11
  export { restream } from './streaming/restream.js';
12
- export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertTrue, isSubset, verifyThat } from './testing/assertions.js';
12
+ export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertThrowsAsync, assertTrue, isSubset, verifyThat } from './testing/assertions.js';
13
13
  export { DeciderSpecfication, DeciderSpecification, ThenThrows } from './testing/deciderSpecification.js';
14
14
  export { TestEventStream, WrapEventStore } from './testing/wrapEventStore.js';
15
15
  export { Brand, Command, CommandDataOf, CommandMetaDataOf, CommandTypeOf, CreateCommandType, CreateEventType, Decider, DefaultCommandMetadata, DefaultRecord, Event, EventDataOf, EventMetaDataOf, EventTypeOf, Flavour, ReadEvent, ReadEventMetadata, ReadEventMetadataWithGlobalPosition, Workflow, WorkflowCommand, WorkflowEvent, WorkflowOutput, accept, command, complete, error, event, ignore, publish, reply, schedule, send } from './typing/index.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-7MFB6DXR.js');require('./chunk-BP5RXRGL.js');var _chunk7ZSJY377js = require('./chunk-7ZSJY377.js');var _chunkG6LPI3PAjs = require('./chunk-G6LPI3PA.js');var _chunk2E7KSKKIjs = require('./chunk-2E7KSKKI.js');var _chunk5JZKD7CBjs = require('./chunk-5JZKD7CB.js');var _chunkZIBX4FPGjs = require('./chunk-ZIBX4FPG.js');var _chunkFNYJ62ROjs = require('./chunk-FNYJ62RO.js');require('./chunk-YGTOG7JR.js');require('./chunk-BNCTLP4B.js');var _chunkTNX525X5js = require('./chunk-TNX525X5.js');var _chunkOIDX2JMHjs = require('./chunk-OIDX2JMH.js');var _chunkVCCKNYOYjs = require('./chunk-VCCKNYOY.js');require('./chunk-6IATZUYD.js');var _chunkPVFUNWT6js = require('./chunk-PVFUNWT6.js');var _chunkFE73T2NSjs = require('./chunk-FE73T2NS.js');var _chunk3JE5DUJ2js = require('./chunk-3JE5DUJ2.js');var _chunkHCHELB23js = require('./chunk-HCHELB23.js');require('./chunk-ZLASBJGR.js');var _chunkMHB2JU4Ujs = require('./chunk-MHB2JU4U.js');require('./chunk-7FJXUW3D.js');require('./chunk-5BGN2FV4.js');var _chunkKQAFRLJ2js = require('./chunk-KQAFRLJ2.js');var _chunkUFUSYJWUjs = require('./chunk-UFUSYJWU.js');require('./chunk-LOJ6A4AJ.js');require('./chunk-AU2WZCER.js');var _chunkLYKEARRWjs = require('./chunk-LYKEARRW.js');var _chunk4K5I5WJGjs = require('./chunk-4K5I5WJG.js');var _chunkUHJAD4TUjs = require('./chunk-UHJAD4TU.js');require('./chunk-F7QRI2VL.js');var _chunkTNJCS5RVjs = require('./chunk-TNJCS5RV.js');var _chunkPRYQOCWYjs = require('./chunk-PRYQOCWY.js');require('./chunk-2452BJTJ.js');var _chunk74HCODMEjs = require('./chunk-74HCODME.js');require('./chunk-IJGC6SHP.js');var _chunkVY2C2KCWjs = require('./chunk-VY2C2KCW.js');var _chunkE7KI3V22js = require('./chunk-E7KI3V22.js');exports.AssertionError = _chunkVCCKNYOYjs.a; exports.BinaryJsonDecoder = _chunk2E7KSKKIjs.a; exports.CommandHandler = _chunkPRYQOCWYjs.a; exports.CompositeDecoder = _chunkG6LPI3PAjs.a; exports.ConcurrencyError = _chunkE7KI3V22js.l; exports.DeciderCommandHandler = _chunkTNJCS5RVjs.a; exports.DeciderSpecification = _chunkOIDX2JMHjs.a; exports.DefaultDecoder = _chunkG6LPI3PAjs.b; exports.EmmettError = _chunkE7KI3V22js.k; exports.ExpectedVersionConflictError = _chunkVY2C2KCWjs.f; exports.IllegalStateError = _chunkE7KI3V22js.n; exports.JSONParser = _chunkLYKEARRWjs.b; exports.JsonDecoder = _chunk5JZKD7CBjs.a; exports.NO_CONCURRENCY_CHECK = _chunkVY2C2KCWjs.c; exports.NotFoundError = _chunkE7KI3V22js.o; exports.ObjectDecoder = _chunkZIBX4FPGjs.a; exports.ParseError = _chunkLYKEARRWjs.a; exports.STREAM_DOES_NOT_EXIST = _chunkVY2C2KCWjs.b; exports.STREAM_EXISTS = _chunkVY2C2KCWjs.a; exports.StringDecoder = _chunkFNYJ62ROjs.a; exports.ValidationError = _chunkE7KI3V22js.m; exports.ValidationErrors = _chunkE7KI3V22js.d; exports.WrapEventStore = _chunkTNX525X5js.a; exports.accept = _chunkUFUSYJWUjs.h; exports.argMatches = _chunkVCCKNYOYjs.p; exports.argValue = _chunkVCCKNYOYjs.o; exports.assertDeepEqual = _chunkVCCKNYOYjs.f; exports.assertEqual = _chunkVCCKNYOYjs.k; exports.assertExpectedVersionMatchesCurrent = _chunkVY2C2KCWjs.e; exports.assertFails = _chunkVCCKNYOYjs.c; exports.assertFalse = _chunkVCCKNYOYjs.h; exports.assertIsNotNull = _chunkVCCKNYOYjs.m; exports.assertIsNull = _chunkVCCKNYOYjs.n; exports.assertMatches = _chunkVCCKNYOYjs.e; exports.assertNotEmptyString = _chunkE7KI3V22js.g; exports.assertNotEqual = _chunkVCCKNYOYjs.l; exports.assertOk = _chunkVCCKNYOYjs.j; exports.assertPositiveNumber = _chunkE7KI3V22js.h; exports.assertThat = _chunkVCCKNYOYjs.g; exports.assertThatArray = _chunkVCCKNYOYjs.r; exports.assertThrows = _chunkVCCKNYOYjs.d; exports.assertTrue = _chunkVCCKNYOYjs.i; exports.assertUnsignedBigInt = _chunkE7KI3V22js.i; exports.collectStream = _chunkUHJAD4TUjs.a; exports.command = _chunkMHB2JU4Ujs.a; exports.complete = _chunkUFUSYJWUjs.e; exports.concatUint8Arrays = _chunk4K5I5WJGjs.a; exports.deepEquals = _chunkPVFUNWT6js.a; exports.error = _chunkUFUSYJWUjs.g; exports.event = _chunkKQAFRLJ2js.a; exports.formatDateToUtcYYYYMMDD = _chunkE7KI3V22js.a; exports.getInMemoryEventStore = _chunk74HCODMEjs.a; exports.getInMemoryMessageBus = _chunkHCHELB23js.a; exports.ignore = _chunkUFUSYJWUjs.f; exports.isEquatable = _chunkPVFUNWT6js.b; exports.isErrorConstructor = _chunkE7KI3V22js.j; exports.isNumber = _chunkE7KI3V22js.e; exports.isString = _chunkE7KI3V22js.f; exports.isSubset = _chunkVCCKNYOYjs.b; exports.isValidYYYYMMDD = _chunkE7KI3V22js.b; exports.matchesExpectedVersion = _chunkVY2C2KCWjs.d; exports.merge = _chunk3JE5DUJ2js.a; exports.parseDateFromUtcYYYYMMDD = _chunkE7KI3V22js.c; exports.publish = _chunkUFUSYJWUjs.c; exports.reply = _chunkUFUSYJWUjs.a; exports.restream = _chunk7ZSJY377js.a; exports.schedule = _chunkUFUSYJWUjs.d; exports.send = _chunkUFUSYJWUjs.b; exports.sum = _chunkFE73T2NSjs.a; exports.verifyThat = _chunkVCCKNYOYjs.q;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-7MFB6DXR.js');require('./chunk-BP5RXRGL.js');var _chunk7ZSJY377js = require('./chunk-7ZSJY377.js');var _chunkG6LPI3PAjs = require('./chunk-G6LPI3PA.js');var _chunk2E7KSKKIjs = require('./chunk-2E7KSKKI.js');var _chunk5JZKD7CBjs = require('./chunk-5JZKD7CB.js');var _chunkZIBX4FPGjs = require('./chunk-ZIBX4FPG.js');var _chunkFNYJ62ROjs = require('./chunk-FNYJ62RO.js');require('./chunk-YGTOG7JR.js');require('./chunk-BNCTLP4B.js');var _chunkTNX525X5js = require('./chunk-TNX525X5.js');var _chunkTGIGJCOUjs = require('./chunk-TGIGJCOU.js');var _chunkHXDPPPUAjs = require('./chunk-HXDPPPUA.js');require('./chunk-6IATZUYD.js');var _chunkPVFUNWT6js = require('./chunk-PVFUNWT6.js');var _chunkFE73T2NSjs = require('./chunk-FE73T2NS.js');var _chunk3JE5DUJ2js = require('./chunk-3JE5DUJ2.js');var _chunkHCHELB23js = require('./chunk-HCHELB23.js');require('./chunk-ZLASBJGR.js');var _chunkMHB2JU4Ujs = require('./chunk-MHB2JU4U.js');require('./chunk-7FJXUW3D.js');require('./chunk-5BGN2FV4.js');var _chunkKQAFRLJ2js = require('./chunk-KQAFRLJ2.js');var _chunkUFUSYJWUjs = require('./chunk-UFUSYJWU.js');require('./chunk-LOJ6A4AJ.js');require('./chunk-AU2WZCER.js');var _chunkMKHK5TRMjs = require('./chunk-MKHK5TRM.js');var _chunk4K5I5WJGjs = require('./chunk-4K5I5WJG.js');var _chunkUHJAD4TUjs = require('./chunk-UHJAD4TU.js');require('./chunk-F7QRI2VL.js');var _chunkTNJCS5RVjs = require('./chunk-TNJCS5RV.js');var _chunkPRYQOCWYjs = require('./chunk-PRYQOCWY.js');require('./chunk-2452BJTJ.js');var _chunk74HCODMEjs = require('./chunk-74HCODME.js');require('./chunk-IJGC6SHP.js');var _chunkVY2C2KCWjs = require('./chunk-VY2C2KCW.js');var _chunkE7KI3V22js = require('./chunk-E7KI3V22.js');exports.AssertionError = _chunkHXDPPPUAjs.a; exports.BinaryJsonDecoder = _chunk2E7KSKKIjs.a; exports.CommandHandler = _chunkPRYQOCWYjs.a; exports.CompositeDecoder = _chunkG6LPI3PAjs.a; exports.ConcurrencyError = _chunkE7KI3V22js.l; exports.DeciderCommandHandler = _chunkTNJCS5RVjs.a; exports.DeciderSpecification = _chunkTGIGJCOUjs.a; exports.DefaultDecoder = _chunkG6LPI3PAjs.b; exports.EmmettError = _chunkE7KI3V22js.k; exports.ExpectedVersionConflictError = _chunkVY2C2KCWjs.f; exports.IllegalStateError = _chunkE7KI3V22js.n; exports.JSONParser = _chunkMKHK5TRMjs.b; exports.JsonDecoder = _chunk5JZKD7CBjs.a; exports.NO_CONCURRENCY_CHECK = _chunkVY2C2KCWjs.c; exports.NotFoundError = _chunkE7KI3V22js.o; exports.ObjectDecoder = _chunkZIBX4FPGjs.a; exports.ParseError = _chunkMKHK5TRMjs.a; exports.STREAM_DOES_NOT_EXIST = _chunkVY2C2KCWjs.b; exports.STREAM_EXISTS = _chunkVY2C2KCWjs.a; exports.StringDecoder = _chunkFNYJ62ROjs.a; exports.ValidationError = _chunkE7KI3V22js.m; exports.ValidationErrors = _chunkE7KI3V22js.d; exports.WrapEventStore = _chunkTNX525X5js.a; exports.accept = _chunkUFUSYJWUjs.h; exports.argMatches = _chunkHXDPPPUAjs.q; exports.argValue = _chunkHXDPPPUAjs.p; exports.assertDeepEqual = _chunkHXDPPPUAjs.g; exports.assertEqual = _chunkHXDPPPUAjs.l; exports.assertExpectedVersionMatchesCurrent = _chunkVY2C2KCWjs.e; exports.assertFails = _chunkHXDPPPUAjs.c; exports.assertFalse = _chunkHXDPPPUAjs.i; exports.assertIsNotNull = _chunkHXDPPPUAjs.n; exports.assertIsNull = _chunkHXDPPPUAjs.o; exports.assertMatches = _chunkHXDPPPUAjs.f; exports.assertNotEmptyString = _chunkE7KI3V22js.g; exports.assertNotEqual = _chunkHXDPPPUAjs.m; exports.assertOk = _chunkHXDPPPUAjs.k; exports.assertPositiveNumber = _chunkE7KI3V22js.h; exports.assertThat = _chunkHXDPPPUAjs.h; exports.assertThatArray = _chunkHXDPPPUAjs.s; exports.assertThrows = _chunkHXDPPPUAjs.e; exports.assertThrowsAsync = _chunkHXDPPPUAjs.d; exports.assertTrue = _chunkHXDPPPUAjs.j; exports.assertUnsignedBigInt = _chunkE7KI3V22js.i; exports.collectStream = _chunkUHJAD4TUjs.a; exports.command = _chunkMHB2JU4Ujs.a; exports.complete = _chunkUFUSYJWUjs.e; exports.concatUint8Arrays = _chunk4K5I5WJGjs.a; exports.deepEquals = _chunkPVFUNWT6js.a; exports.error = _chunkUFUSYJWUjs.g; exports.event = _chunkKQAFRLJ2js.a; exports.formatDateToUtcYYYYMMDD = _chunkE7KI3V22js.a; exports.getInMemoryEventStore = _chunk74HCODMEjs.a; exports.getInMemoryMessageBus = _chunkHCHELB23js.a; exports.ignore = _chunkUFUSYJWUjs.f; exports.isEquatable = _chunkPVFUNWT6js.b; exports.isErrorConstructor = _chunkE7KI3V22js.j; exports.isNumber = _chunkE7KI3V22js.e; exports.isString = _chunkE7KI3V22js.f; exports.isSubset = _chunkHXDPPPUAjs.b; exports.isValidYYYYMMDD = _chunkE7KI3V22js.b; exports.matchesExpectedVersion = _chunkVY2C2KCWjs.d; exports.merge = _chunk3JE5DUJ2js.a; exports.parseDateFromUtcYYYYMMDD = _chunkE7KI3V22js.c; exports.publish = _chunkUFUSYJWUjs.c; exports.reply = _chunkUFUSYJWUjs.a; exports.restream = _chunk7ZSJY377js.a; exports.schedule = _chunkUFUSYJWUjs.d; exports.send = _chunkUFUSYJWUjs.b; exports.sum = _chunkFE73T2NSjs.a; exports.verifyThat = _chunkHXDPPPUAjs.r;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import"./chunk-F6WLSL2L.mjs";import"./chunk-FVA6ACSC.mjs";import{a as T}from"./chunk-ZV7YVTI7.mjs";import{a as R,b as S}from"./chunk-TKIRQ76T.mjs";import{a as N}from"./chunk-HKNRGZN2.mjs";import{a as P}from"./chunk-MR2WVMFM.mjs";import{a as Q}from"./chunk-S3C5CKD5.mjs";import{a as O}from"./chunk-VTWTSAHB.mjs";import"./chunk-QFEG5DNU.mjs";import"./chunk-AHXBZPOE.mjs";import{a as ko}from"./chunk-N6X7QWHP.mjs";import{a as jo}from"./chunk-EYIJ7ZKY.mjs";import{a as Y,b as Z,c as _,d as $,e as oo,f as ro,g as eo,h as fo,i as mo,j as po,k as to,l as xo,m as ao,n as bo,o as co,p as go,q as ho,r as io}from"./chunk-ZFBWMZ55.mjs";import"./chunk-3DH3DSMC.mjs";import{a as U,b as V}from"./chunk-B7NWWHCY.mjs";import{a as W}from"./chunk-OBA6MZMG.mjs";import{a as X}from"./chunk-YKFEDBH4.mjs";import{a as I}from"./chunk-6PH3GSCE.mjs";import"./chunk-YWRV75GA.mjs";import{a as y}from"./chunk-JDYZZRJE.mjs";import"./chunk-3LYVXI5R.mjs";import"./chunk-DOHUIBZQ.mjs";import{a as z}from"./chunk-YGYVF7JI.mjs";import{a as A,b as B,c as C,d as D,e as E,f as F,g as G,h as H}from"./chunk-GNUOGYD6.mjs";import"./chunk-DIW552TK.mjs";import"./chunk-7JLAVMM3.mjs";import{a as J,b as K}from"./chunk-PKL7KGJ3.mjs";import{a as L}from"./chunk-WCQF2QY4.mjs";import{a as M}from"./chunk-7LENV63T.mjs";import"./chunk-XLZS42HB.mjs";import{a as w}from"./chunk-NXFNVBXL.mjs";import{a as v}from"./chunk-POWQ3BZ6.mjs";import"./chunk-45ODDXOQ.mjs";import{a as u}from"./chunk-JVPAJ3FU.mjs";import"./chunk-D24KLTN5.mjs";import{a as j,b as k,c as l,d as n,e as q,f as s}from"./chunk-HKDMOB55.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,l as d,m as g,n as h,o as i}from"./chunk-KLLSLLHN.mjs";export{Y as AssertionError,N as BinaryJsonDecoder,v as CommandHandler,R as CompositeDecoder,d as ConcurrencyError,w as DeciderCommandHandler,jo as DeciderSpecification,S as DefaultDecoder,c as EmmettError,s as ExpectedVersionConflictError,h as IllegalStateError,K as JSONParser,P as JsonDecoder,l as NO_CONCURRENCY_CHECK,i as NotFoundError,Q as ObjectDecoder,J as ParseError,k as STREAM_DOES_NOT_EXIST,j as STREAM_EXISTS,O as StringDecoder,g as ValidationError,f as ValidationErrors,ko as WrapEventStore,H as accept,go as argMatches,co as argValue,ro as assertDeepEqual,to as assertEqual,q as assertExpectedVersionMatchesCurrent,_ as assertFails,fo as assertFalse,ao as assertIsNotNull,bo as assertIsNull,oo as assertMatches,t as assertNotEmptyString,xo as assertNotEqual,po as assertOk,x as assertPositiveNumber,eo as assertThat,io as assertThatArray,$ as assertThrows,mo as assertTrue,a as assertUnsignedBigInt,M as collectStream,y as command,E as complete,L as concatUint8Arrays,U as deepEquals,G as error,z as event,o as formatDateToUtcYYYYMMDD,u as getInMemoryEventStore,I as getInMemoryMessageBus,F as ignore,V as isEquatable,b as isErrorConstructor,m as isNumber,p as isString,Z as isSubset,r as isValidYYYYMMDD,n as matchesExpectedVersion,X as merge,e as parseDateFromUtcYYYYMMDD,C as publish,A as reply,T as restream,D as schedule,B as send,W as sum,ho as verifyThat};
1
+ import"./chunk-F6WLSL2L.mjs";import"./chunk-FVA6ACSC.mjs";import{a as T}from"./chunk-ZV7YVTI7.mjs";import{a as R,b as S}from"./chunk-TKIRQ76T.mjs";import{a as N}from"./chunk-HKNRGZN2.mjs";import{a as P}from"./chunk-MR2WVMFM.mjs";import{a as Q}from"./chunk-S3C5CKD5.mjs";import{a as O}from"./chunk-VTWTSAHB.mjs";import"./chunk-QFEG5DNU.mjs";import"./chunk-AHXBZPOE.mjs";import{a as lo}from"./chunk-N6X7QWHP.mjs";import{a as ko}from"./chunk-GWMVSXLN.mjs";import{a as Y,b as Z,c as _,d as $,e as oo,f as ro,g as eo,h as fo,i as mo,j as po,k as to,l as xo,m as ao,n as bo,o as co,p as go,q as ho,r as io,s as jo}from"./chunk-GNTBBARO.mjs";import"./chunk-3DH3DSMC.mjs";import{a as U,b as V}from"./chunk-B7NWWHCY.mjs";import{a as W}from"./chunk-OBA6MZMG.mjs";import{a as X}from"./chunk-YKFEDBH4.mjs";import{a as I}from"./chunk-6PH3GSCE.mjs";import"./chunk-YWRV75GA.mjs";import{a as y}from"./chunk-JDYZZRJE.mjs";import"./chunk-3LYVXI5R.mjs";import"./chunk-DOHUIBZQ.mjs";import{a as z}from"./chunk-YGYVF7JI.mjs";import{a as A,b as B,c as C,d as D,e as E,f as F,g as G,h as H}from"./chunk-GNUOGYD6.mjs";import"./chunk-DIW552TK.mjs";import"./chunk-7JLAVMM3.mjs";import{a as J,b as K}from"./chunk-S33YM44M.mjs";import{a as L}from"./chunk-WCQF2QY4.mjs";import{a as M}from"./chunk-7LENV63T.mjs";import"./chunk-XLZS42HB.mjs";import{a as w}from"./chunk-NXFNVBXL.mjs";import{a as v}from"./chunk-POWQ3BZ6.mjs";import"./chunk-45ODDXOQ.mjs";import{a as u}from"./chunk-JVPAJ3FU.mjs";import"./chunk-D24KLTN5.mjs";import{a as j,b as k,c as l,d as n,e as q,f as s}from"./chunk-HKDMOB55.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,l as d,m as g,n as h,o as i}from"./chunk-KLLSLLHN.mjs";export{Y as AssertionError,N as BinaryJsonDecoder,v as CommandHandler,R as CompositeDecoder,d as ConcurrencyError,w as DeciderCommandHandler,ko as DeciderSpecification,S as DefaultDecoder,c as EmmettError,s as ExpectedVersionConflictError,h as IllegalStateError,K as JSONParser,P as JsonDecoder,l as NO_CONCURRENCY_CHECK,i as NotFoundError,Q as ObjectDecoder,J as ParseError,k as STREAM_DOES_NOT_EXIST,j as STREAM_EXISTS,O as StringDecoder,g as ValidationError,f as ValidationErrors,lo as WrapEventStore,H as accept,ho as argMatches,go as argValue,eo as assertDeepEqual,xo as assertEqual,q as assertExpectedVersionMatchesCurrent,_ as assertFails,mo as assertFalse,bo as assertIsNotNull,co as assertIsNull,ro as assertMatches,t as assertNotEmptyString,ao as assertNotEqual,to as assertOk,x as assertPositiveNumber,fo as assertThat,jo as assertThatArray,oo as assertThrows,$ as assertThrowsAsync,po as assertTrue,a as assertUnsignedBigInt,M as collectStream,y as command,E as complete,L as concatUint8Arrays,U as deepEquals,G as error,z as event,o as formatDateToUtcYYYYMMDD,u as getInMemoryEventStore,I as getInMemoryMessageBus,F as ignore,V as isEquatable,b as isErrorConstructor,m as isNumber,p as isString,Z as isSubset,r as isValidYYYYMMDD,n as matchesExpectedVersion,X as merge,e as parseDateFromUtcYYYYMMDD,C as publish,A as reply,T as restream,D as schedule,B as send,W as sum,io as verifyThat};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-LOJ6A4AJ.js');require('../chunk-AU2WZCER.js');var _chunkLYKEARRWjs = require('../chunk-LYKEARRW.js');exports.JSONParser = _chunkLYKEARRWjs.b; exports.ParseError = _chunkLYKEARRWjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-LOJ6A4AJ.js');require('../chunk-AU2WZCER.js');var _chunkMKHK5TRMjs = require('../chunk-MKHK5TRM.js');exports.JSONParser = _chunkMKHK5TRMjs.b; exports.ParseError = _chunkMKHK5TRMjs.a;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import"../chunk-DIW552TK.mjs";import"../chunk-7JLAVMM3.mjs";import{a,b}from"../chunk-PKL7KGJ3.mjs";export{b as JSONParser,a as ParseError};
1
+ import"../chunk-DIW552TK.mjs";import"../chunk-7JLAVMM3.mjs";import{a,b}from"../chunk-S33YM44M.mjs";export{b as JSONParser,a as ParseError};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLYKEARRWjs = require('../../chunk-LYKEARRW.js');exports.JSONParser = _chunkLYKEARRWjs.b; exports.ParseError = _chunkLYKEARRWjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkMKHK5TRMjs = require('../../chunk-MKHK5TRM.js');exports.JSONParser = _chunkMKHK5TRMjs.b; exports.ParseError = _chunkMKHK5TRMjs.a;
2
2
  //# sourceMappingURL=JSONParser.js.map
@@ -1,2 +1,2 @@
1
- import{a,b}from"../../chunk-PKL7KGJ3.mjs";export{b as JSONParser,a as ParseError};
1
+ import{a,b}from"../../chunk-S33YM44M.mjs";export{b as JSONParser,a as ParseError};
2
2
  //# sourceMappingURL=JSONParser.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../../chunk-AU2WZCER.js');var _chunkLYKEARRWjs = require('../../chunk-LYKEARRW.js');exports.JSONParser = _chunkLYKEARRWjs.b; exports.ParseError = _chunkLYKEARRWjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../../chunk-AU2WZCER.js');var _chunkMKHK5TRMjs = require('../../chunk-MKHK5TRM.js');exports.JSONParser = _chunkMKHK5TRMjs.b; exports.ParseError = _chunkMKHK5TRMjs.a;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import"../../chunk-7JLAVMM3.mjs";import{a,b}from"../../chunk-PKL7KGJ3.mjs";export{b as JSONParser,a as ParseError};
1
+ import"../../chunk-7JLAVMM3.mjs";import{a,b}from"../../chunk-S33YM44M.mjs";export{b as JSONParser,a as ParseError};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -2,8 +2,9 @@ declare class AssertionError extends Error {
2
2
  constructor(message: string);
3
3
  }
4
4
  declare const isSubset: (superObj: unknown, subObj: unknown) => boolean;
5
- declare const assertFails: () => never;
6
- declare const assertThrows: (fun: () => void, errorCheck?: ((error: Error) => boolean) | undefined) => void;
5
+ declare const assertFails: (message?: string) => never;
6
+ declare const assertThrowsAsync: <TError extends Error>(fun: () => Promise<void>, errorCheck?: ((error: Error) => boolean) | undefined) => Promise<TError>;
7
+ declare const assertThrows: <TError extends Error>(fun: () => void, errorCheck?: ((error: Error) => boolean) | undefined) => TError;
7
8
  declare const assertMatches: (actual: unknown, expected: unknown, message?: string) => void;
8
9
  declare const assertDeepEqual: (actual: unknown, expected: unknown, message?: string) => void;
9
10
  declare const assertThat: <T>(item: T) => {
@@ -12,9 +13,9 @@ declare const assertThat: <T>(item: T) => {
12
13
  declare function assertFalse(condition: boolean, message?: string): asserts condition is false;
13
14
  declare function assertTrue(condition: boolean, message?: string): asserts condition is true;
14
15
  declare function assertOk<T>(obj: T | null | undefined, message?: string): asserts obj is T;
15
- declare function assertEqual<T>(obj: T | null | undefined, other: T | null | undefined, message?: string): void;
16
+ declare function assertEqual<T>(expected: T | null | undefined, actual: T | null | undefined, message?: string): void;
16
17
  declare function assertNotEqual<T>(obj: T | null | undefined, other: T | null | undefined, message?: string): void;
17
- declare function assertIsNotNull<T extends object>(result: T | null): asserts result is T;
18
+ declare function assertIsNotNull<T extends object | bigint>(result: T | null): asserts result is T;
18
19
  declare function assertIsNull<T extends object>(result: T | null): asserts result is null;
19
20
  type Call = {
20
21
  arguments: unknown[];
@@ -55,4 +56,4 @@ declare const assertThatArray: <T>(array: T[]) => {
55
56
  allMatchAsync: (matches: (item: T) => Promise<boolean>) => Promise<void>;
56
57
  };
57
58
 
58
- export { type ArgumentMatcher, AssertionError, type MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertTrue, isSubset, verifyThat };
59
+ export { type ArgumentMatcher, AssertionError, type MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertThrowsAsync, assertTrue, isSubset, verifyThat };
@@ -2,8 +2,9 @@ declare class AssertionError extends Error {
2
2
  constructor(message: string);
3
3
  }
4
4
  declare const isSubset: (superObj: unknown, subObj: unknown) => boolean;
5
- declare const assertFails: () => never;
6
- declare const assertThrows: (fun: () => void, errorCheck?: ((error: Error) => boolean) | undefined) => void;
5
+ declare const assertFails: (message?: string) => never;
6
+ declare const assertThrowsAsync: <TError extends Error>(fun: () => Promise<void>, errorCheck?: ((error: Error) => boolean) | undefined) => Promise<TError>;
7
+ declare const assertThrows: <TError extends Error>(fun: () => void, errorCheck?: ((error: Error) => boolean) | undefined) => TError;
7
8
  declare const assertMatches: (actual: unknown, expected: unknown, message?: string) => void;
8
9
  declare const assertDeepEqual: (actual: unknown, expected: unknown, message?: string) => void;
9
10
  declare const assertThat: <T>(item: T) => {
@@ -12,9 +13,9 @@ declare const assertThat: <T>(item: T) => {
12
13
  declare function assertFalse(condition: boolean, message?: string): asserts condition is false;
13
14
  declare function assertTrue(condition: boolean, message?: string): asserts condition is true;
14
15
  declare function assertOk<T>(obj: T | null | undefined, message?: string): asserts obj is T;
15
- declare function assertEqual<T>(obj: T | null | undefined, other: T | null | undefined, message?: string): void;
16
+ declare function assertEqual<T>(expected: T | null | undefined, actual: T | null | undefined, message?: string): void;
16
17
  declare function assertNotEqual<T>(obj: T | null | undefined, other: T | null | undefined, message?: string): void;
17
- declare function assertIsNotNull<T extends object>(result: T | null): asserts result is T;
18
+ declare function assertIsNotNull<T extends object | bigint>(result: T | null): asserts result is T;
18
19
  declare function assertIsNull<T extends object>(result: T | null): asserts result is null;
19
20
  type Call = {
20
21
  arguments: unknown[];
@@ -55,4 +56,4 @@ declare const assertThatArray: <T>(array: T[]) => {
55
56
  allMatchAsync: (matches: (item: T) => Promise<boolean>) => Promise<void>;
56
57
  };
57
58
 
58
- export { type ArgumentMatcher, AssertionError, type MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertTrue, isSubset, verifyThat };
59
+ export { type ArgumentMatcher, AssertionError, type MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertThrowsAsync, assertTrue, isSubset, verifyThat };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkVCCKNYOYjs = require('../chunk-VCCKNYOY.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');exports.AssertionError = _chunkVCCKNYOYjs.a; exports.argMatches = _chunkVCCKNYOYjs.p; exports.argValue = _chunkVCCKNYOYjs.o; exports.assertDeepEqual = _chunkVCCKNYOYjs.f; exports.assertEqual = _chunkVCCKNYOYjs.k; exports.assertFails = _chunkVCCKNYOYjs.c; exports.assertFalse = _chunkVCCKNYOYjs.h; exports.assertIsNotNull = _chunkVCCKNYOYjs.m; exports.assertIsNull = _chunkVCCKNYOYjs.n; exports.assertMatches = _chunkVCCKNYOYjs.e; exports.assertNotEqual = _chunkVCCKNYOYjs.l; exports.assertOk = _chunkVCCKNYOYjs.j; exports.assertThat = _chunkVCCKNYOYjs.g; exports.assertThatArray = _chunkVCCKNYOYjs.r; exports.assertThrows = _chunkVCCKNYOYjs.d; exports.assertTrue = _chunkVCCKNYOYjs.i; exports.isSubset = _chunkVCCKNYOYjs.b; exports.verifyThat = _chunkVCCKNYOYjs.q;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkHXDPPPUAjs = require('../chunk-HXDPPPUA.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');require('../chunk-LOJ6A4AJ.js');require('../chunk-AU2WZCER.js');require('../chunk-MKHK5TRM.js');exports.AssertionError = _chunkHXDPPPUAjs.a; exports.argMatches = _chunkHXDPPPUAjs.q; exports.argValue = _chunkHXDPPPUAjs.p; exports.assertDeepEqual = _chunkHXDPPPUAjs.g; exports.assertEqual = _chunkHXDPPPUAjs.l; exports.assertFails = _chunkHXDPPPUAjs.c; exports.assertFalse = _chunkHXDPPPUAjs.i; exports.assertIsNotNull = _chunkHXDPPPUAjs.n; exports.assertIsNull = _chunkHXDPPPUAjs.o; exports.assertMatches = _chunkHXDPPPUAjs.f; exports.assertNotEqual = _chunkHXDPPPUAjs.m; exports.assertOk = _chunkHXDPPPUAjs.k; exports.assertThat = _chunkHXDPPPUAjs.h; exports.assertThatArray = _chunkHXDPPPUAjs.s; exports.assertThrows = _chunkHXDPPPUAjs.e; exports.assertThrowsAsync = _chunkHXDPPPUAjs.d; exports.assertTrue = _chunkHXDPPPUAjs.j; exports.isSubset = _chunkHXDPPPUAjs.b; exports.verifyThat = _chunkHXDPPPUAjs.r;
2
2
  //# sourceMappingURL=assertions.js.map
@@ -1,2 +1,2 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"../chunk-ZFBWMZ55.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";export{a as AssertionError,p as argMatches,o as argValue,f as assertDeepEqual,k as assertEqual,c as assertFails,h as assertFalse,m as assertIsNotNull,n as assertIsNull,e as assertMatches,l as assertNotEqual,j as assertOk,g as assertThat,r as assertThatArray,d as assertThrows,i as assertTrue,b as isSubset,q as verifyThat};
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s}from"../chunk-GNTBBARO.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";import"../chunk-DIW552TK.mjs";import"../chunk-7JLAVMM3.mjs";import"../chunk-S33YM44M.mjs";export{a as AssertionError,q as argMatches,p as argValue,g as assertDeepEqual,l as assertEqual,c as assertFails,i as assertFalse,n as assertIsNotNull,o as assertIsNull,f as assertMatches,m as assertNotEqual,k as assertOk,h as assertThat,s as assertThatArray,e as assertThrows,d as assertThrowsAsync,j as assertTrue,b as isSubset,r as verifyThat};
2
2
  //# sourceMappingURL=assertions.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOIDX2JMHjs = require('../chunk-OIDX2JMH.js');require('../chunk-VCCKNYOY.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');require('../chunk-E7KI3V22.js');exports.DeciderSpecification = _chunkOIDX2JMHjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkTGIGJCOUjs = require('../chunk-TGIGJCOU.js');require('../chunk-HXDPPPUA.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');require('../chunk-LOJ6A4AJ.js');require('../chunk-AU2WZCER.js');require('../chunk-MKHK5TRM.js');require('../chunk-E7KI3V22.js');exports.DeciderSpecification = _chunkTGIGJCOUjs.a;
2
2
  //# sourceMappingURL=deciderSpecification.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-EYIJ7ZKY.mjs";import"../chunk-ZFBWMZ55.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";import"../chunk-KLLSLLHN.mjs";export{a as DeciderSpecification};
1
+ import{a}from"../chunk-GWMVSXLN.mjs";import"../chunk-GNTBBARO.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";import"../chunk-DIW552TK.mjs";import"../chunk-7JLAVMM3.mjs";import"../chunk-S33YM44M.mjs";import"../chunk-KLLSLLHN.mjs";export{a as DeciderSpecification};
2
2
  //# sourceMappingURL=deciderSpecification.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk7BR3VBVDjs = require('../chunk-7BR3VBVD.js');var _chunkVCCKNYOYjs = require('../chunk-VCCKNYOY.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');require('../chunk-ZLASBJGR.js');require('../chunk-MHB2JU4U.js');require('../chunk-7FJXUW3D.js');require('../chunk-5BGN2FV4.js');require('../chunk-KQAFRLJ2.js');require('../chunk-UFUSYJWU.js');var _crypto = require('crypto');var _test = require('test');async function C(g,r={getInitialIndex:()=>1n}){return _test.describe.call(void 0, "aggregateStream",async()=>{let t,u=[{evolve:_chunk7BR3VBVDjs.a,info:"evolve with raw event"},{evolve:_chunk7BR3VBVDjs.b,info:"evolve with event and metadata"}];_test.before.call(void 0, async()=>{t=await g()}),_test.after.call(void 0, async()=>{let e=r.teardownHook;e&&await e()});for(let e of u)await _test.it.call(void 0, `When called with 'to' allows time traveling using ${e.info}`,async()=>{let a={productId:"123",quantity:10,price:3},S=10,o=_crypto.randomUUID.call(void 0, );await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"DiscountApplied",data:{percent:S}}]);let p=await t.aggregateStream(o,{evolve:e.evolve,initialState:_chunk7BR3VBVDjs.c,read:{to:1n}}),v=await t.aggregateStream(o,{evolve:e.evolve,initialState:_chunk7BR3VBVDjs.c,read:{to:2n}}),c=await t.aggregateStream(o,{evolve:e.evolve,initialState:_chunk7BR3VBVDjs.c,read:{to:3n}});_chunkVCCKNYOYjs.j.call(void 0, p),_chunkVCCKNYOYjs.j.call(void 0, v),_chunkVCCKNYOYjs.j.call(void 0, c),_chunkVCCKNYOYjs.k.call(void 0, p.currentStreamVersion,r.getInitialIndex()),_chunkVCCKNYOYjs.f.call(void 0, p.state,{productItems:[a],totalAmount:30}),_chunkVCCKNYOYjs.k.call(void 0, v.currentStreamVersion,r.getInitialIndex()+1n),_chunkVCCKNYOYjs.f.call(void 0, v.state,{productItems:[a,a],totalAmount:60}),_chunkVCCKNYOYjs.k.call(void 0, c.currentStreamVersion,r.getInitialIndex()+2n),_chunkVCCKNYOYjs.f.call(void 0, c.state,{productItems:[a,a],totalAmount:54})})})}exports.testAggregateStream = C;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk7BR3VBVDjs = require('../chunk-7BR3VBVD.js');var _chunkHXDPPPUAjs = require('../chunk-HXDPPPUA.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');require('../chunk-ZLASBJGR.js');require('../chunk-MHB2JU4U.js');require('../chunk-7FJXUW3D.js');require('../chunk-5BGN2FV4.js');require('../chunk-KQAFRLJ2.js');require('../chunk-UFUSYJWU.js');require('../chunk-LOJ6A4AJ.js');require('../chunk-AU2WZCER.js');require('../chunk-MKHK5TRM.js');var _crypto = require('crypto');var _test = require('test');async function C(g,r={getInitialIndex:()=>1n}){return _test.describe.call(void 0, "aggregateStream",async()=>{let t,u=[{evolve:_chunk7BR3VBVDjs.a,info:"evolve with raw event"},{evolve:_chunk7BR3VBVDjs.b,info:"evolve with event and metadata"}];_test.before.call(void 0, async()=>{t=await g()}),_test.after.call(void 0, async()=>{let e=r.teardownHook;e&&await e()});for(let e of u)await _test.it.call(void 0, `When called with 'to' allows time traveling using ${e.info}`,async()=>{let a={productId:"123",quantity:10,price:3},S=10,o=_crypto.randomUUID.call(void 0, );await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"DiscountApplied",data:{percent:S}}]);let p=await t.aggregateStream(o,{evolve:e.evolve,initialState:_chunk7BR3VBVDjs.c,read:{to:1n}}),v=await t.aggregateStream(o,{evolve:e.evolve,initialState:_chunk7BR3VBVDjs.c,read:{to:2n}}),c=await t.aggregateStream(o,{evolve:e.evolve,initialState:_chunk7BR3VBVDjs.c,read:{to:3n}});_chunkHXDPPPUAjs.k.call(void 0, p),_chunkHXDPPPUAjs.k.call(void 0, v),_chunkHXDPPPUAjs.k.call(void 0, c),_chunkHXDPPPUAjs.l.call(void 0, p.currentStreamVersion,r.getInitialIndex()),_chunkHXDPPPUAjs.g.call(void 0, p.state,{productItems:[a],totalAmount:30}),_chunkHXDPPPUAjs.l.call(void 0, v.currentStreamVersion,r.getInitialIndex()+1n),_chunkHXDPPPUAjs.g.call(void 0, v.state,{productItems:[a,a],totalAmount:60}),_chunkHXDPPPUAjs.l.call(void 0, c.currentStreamVersion,r.getInitialIndex()+2n),_chunkHXDPPPUAjs.g.call(void 0, c.state,{productItems:[a,a],totalAmount:54})})})}exports.testAggregateStream = C;
2
2
  //# sourceMappingURL=features.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/testing/features.ts"],"names":["randomUUID","after","before","describe","it","testAggregateStream","eventStoreFactory","options","eventStore","evolveTestCases","evolve","evolveWithMetadata","teardownHook","testCase","productItem","discount","shoppingCartId","resultAt1","initialState","resultAt2","resultAt3","assertOk","assertEqual","assertDeepEqual"],"mappings":"gZAAA,OAAS,cAAAA,MAAkB,SAC3B,OAAS,SAAAC,EAAO,UAAAC,EAAQ,YAAAC,EAAU,MAAAC,MAAU,OAkB5C,eAAsBC,EACpBC,EACAC,EAAuB,CACrB,gBAAiB,IAAM,EACzB,EACA,CACA,OAAOJ,EAAS,kBAAmB,SAAY,CAC7C,IAAIK,EACEC,EAAkB,CACtB,CACE,OAAAC,EACA,KAAM,uBACR,EACA,CAAE,OAAQC,EAAoB,KAAM,gCAAiC,CACvE,EAEAT,EAAO,SAAY,CACjBM,EAAa,MAAMF,EAAkB,CACvC,CAAC,EAEDL,EAAM,SAAY,CAChB,IAAMW,EAAeL,EAAQ,aACzBK,GAAc,MAAMA,EAAa,CACvC,CAAC,EAED,QAAWC,KAAYJ,EACrB,MAAML,EAAG,qDAAqDS,EAAS,IAAI,GAAI,SAAY,CAEzF,IAAMC,EAAiC,CACrC,UAAW,MACX,SAAU,GACV,MAAO,CACT,EACMC,EAAW,GACXC,EAAiBhB,EAAW,EAElC,MAAMQ,EAAW,eAAkCQ,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMN,EAAW,eAAkCQ,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMN,EAAW,eAAkCQ,EAAgB,CACjE,CAAE,KAAM,kBAAmB,KAAM,CAAE,QAASD,CAAS,CAAE,CACzD,CAAC,EAGD,IAAME,EAAY,MAAMT,EAAW,gBAAgBQ,EAAgB,CACjE,OAAQH,EAAS,OACjB,aAAAK,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKC,EAAY,MAAMX,EAAW,gBAAgBQ,EAAgB,CACjE,OAAQH,EAAS,OACjB,aAAAK,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKE,EAAY,MAAMZ,EAAW,gBAAgBQ,EAAgB,CACjE,OAAQH,EAAS,OACjB,aAAAK,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EAGDG,EAASJ,CAAS,EAClBI,EAASF,CAAS,EAClBE,EAASD,CAAS,EAElBE,EAAYL,EAAU,qBAAsBV,EAAQ,gBAAgB,CAAC,EACrEgB,EAAgBN,EAAU,MAAO,CAC/B,aAAc,CAACH,CAAW,EAC1B,YAAa,EACf,CAAC,EAEDQ,EACEH,EAAU,qBACVZ,EAAQ,gBAAgB,EAAI,EAC9B,EACAgB,EAAgBJ,EAAU,MAAO,CAC/B,aAAc,CAACL,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,EAEDQ,EACEF,EAAU,qBACVb,EAAQ,gBAAgB,EAAI,EAC9B,EACAgB,EAAgBH,EAAU,MAAO,CAC/B,aAAc,CAACN,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,CACH,CAAC,CAEL,CAAC,CACH","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { after, before, describe, it } from 'node:test';\nimport type { EventStore } from '../eventStore';\nimport { assertDeepEqual, assertEqual, assertOk } from './assertions';\nimport {\n evolve,\n evolveWithMetadata,\n initialState,\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', async () => {\n let eventStore: EventStore<bigint>;\n const evolveTestCases = [\n {\n evolve,\n info: 'evolve with raw event',\n },\n { evolve: evolveWithMetadata, info: 'evolve with event and metadata' },\n ];\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 for (const testCase of evolveTestCases) {\n await it(`When called with 'to' allows time traveling using ${testCase.info}`, 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: testCase.evolve,\n initialState,\n read: { to: 1n },\n });\n const resultAt2 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 2n },\n });\n const resultAt3 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 3n },\n });\n\n // then\n assertOk(resultAt1);\n assertOk(resultAt2);\n assertOk(resultAt3);\n\n assertEqual(resultAt1.currentStreamVersion, options.getInitialIndex());\n assertDeepEqual(resultAt1.state, {\n productItems: [productItem],\n totalAmount: 30,\n });\n\n assertEqual(\n resultAt2.currentStreamVersion,\n options.getInitialIndex() + 1n,\n );\n assertDeepEqual(resultAt2.state, {\n productItems: [productItem, productItem],\n totalAmount: 60,\n });\n\n assertEqual(\n resultAt3.currentStreamVersion,\n options.getInitialIndex() + 2n,\n );\n assertDeepEqual(resultAt3.state, {\n productItems: [productItem, productItem],\n totalAmount: 54,\n });\n });\n }\n });\n}\n"]}
1
+ {"version":3,"sources":["../../src/testing/features.ts"],"names":["randomUUID","after","before","describe","it","testAggregateStream","eventStoreFactory","options","eventStore","evolveTestCases","evolve","evolveWithMetadata","teardownHook","testCase","productItem","discount","shoppingCartId","resultAt1","initialState","resultAt2","resultAt3","assertOk","assertEqual","assertDeepEqual"],"mappings":"ueAAA,OAAS,cAAAA,MAAkB,SAC3B,OAAS,SAAAC,EAAO,UAAAC,EAAQ,YAAAC,EAAU,MAAAC,MAAU,OAkB5C,eAAsBC,EACpBC,EACAC,EAAuB,CACrB,gBAAiB,IAAM,EACzB,EACA,CACA,OAAOJ,EAAS,kBAAmB,SAAY,CAC7C,IAAIK,EACEC,EAAkB,CACtB,CACE,OAAAC,EACA,KAAM,uBACR,EACA,CAAE,OAAQC,EAAoB,KAAM,gCAAiC,CACvE,EAEAT,EAAO,SAAY,CACjBM,EAAa,MAAMF,EAAkB,CACvC,CAAC,EAEDL,EAAM,SAAY,CAChB,IAAMW,EAAeL,EAAQ,aACzBK,GAAc,MAAMA,EAAa,CACvC,CAAC,EAED,QAAWC,KAAYJ,EACrB,MAAML,EAAG,qDAAqDS,EAAS,IAAI,GAAI,SAAY,CAEzF,IAAMC,EAAiC,CACrC,UAAW,MACX,SAAU,GACV,MAAO,CACT,EACMC,EAAW,GACXC,EAAiBhB,EAAW,EAElC,MAAMQ,EAAW,eAAkCQ,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMN,EAAW,eAAkCQ,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMN,EAAW,eAAkCQ,EAAgB,CACjE,CAAE,KAAM,kBAAmB,KAAM,CAAE,QAASD,CAAS,CAAE,CACzD,CAAC,EAGD,IAAME,EAAY,MAAMT,EAAW,gBAAgBQ,EAAgB,CACjE,OAAQH,EAAS,OACjB,aAAAK,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKC,EAAY,MAAMX,EAAW,gBAAgBQ,EAAgB,CACjE,OAAQH,EAAS,OACjB,aAAAK,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKE,EAAY,MAAMZ,EAAW,gBAAgBQ,EAAgB,CACjE,OAAQH,EAAS,OACjB,aAAAK,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EAGDG,EAASJ,CAAS,EAClBI,EAASF,CAAS,EAClBE,EAASD,CAAS,EAElBE,EAAYL,EAAU,qBAAsBV,EAAQ,gBAAgB,CAAC,EACrEgB,EAAgBN,EAAU,MAAO,CAC/B,aAAc,CAACH,CAAW,EAC1B,YAAa,EACf,CAAC,EAEDQ,EACEH,EAAU,qBACVZ,EAAQ,gBAAgB,EAAI,EAC9B,EACAgB,EAAgBJ,EAAU,MAAO,CAC/B,aAAc,CAACL,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,EAEDQ,EACEF,EAAU,qBACVb,EAAQ,gBAAgB,EAAI,EAC9B,EACAgB,EAAgBH,EAAU,MAAO,CAC/B,aAAc,CAACN,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,CACH,CAAC,CAEL,CAAC,CACH","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { after, before, describe, it } from 'node:test';\nimport type { EventStore } from '../eventStore';\nimport { assertDeepEqual, assertEqual, assertOk } from './assertions';\nimport {\n evolve,\n evolveWithMetadata,\n initialState,\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', async () => {\n let eventStore: EventStore<bigint>;\n const evolveTestCases = [\n {\n evolve,\n info: 'evolve with raw event',\n },\n { evolve: evolveWithMetadata, info: 'evolve with event and metadata' },\n ];\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 for (const testCase of evolveTestCases) {\n await it(`When called with 'to' allows time traveling using ${testCase.info}`, 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: testCase.evolve,\n initialState,\n read: { to: 1n },\n });\n const resultAt2 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 2n },\n });\n const resultAt3 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 3n },\n });\n\n // then\n assertOk(resultAt1);\n assertOk(resultAt2);\n assertOk(resultAt3);\n\n assertEqual(resultAt1.currentStreamVersion, options.getInitialIndex());\n assertDeepEqual(resultAt1.state, {\n productItems: [productItem],\n totalAmount: 30,\n });\n\n assertEqual(\n resultAt2.currentStreamVersion,\n options.getInitialIndex() + 1n,\n );\n assertDeepEqual(resultAt2.state, {\n productItems: [productItem, productItem],\n totalAmount: 60,\n });\n\n assertEqual(\n resultAt3.currentStreamVersion,\n options.getInitialIndex() + 2n,\n );\n assertDeepEqual(resultAt3.state, {\n productItems: [productItem, productItem],\n totalAmount: 54,\n });\n });\n }\n });\n}\n"]}
@@ -1,2 +1,2 @@
1
- import{a as m,b as l,c as d}from"../chunk-WB5PNUKG.mjs";import{f as n,j as i,k as s}from"../chunk-ZFBWMZ55.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";import"../chunk-YWRV75GA.mjs";import"../chunk-JDYZZRJE.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-DOHUIBZQ.mjs";import"../chunk-YGYVF7JI.mjs";import"../chunk-GNUOGYD6.mjs";import{randomUUID as I}from"node:crypto";import{after as w,before as y,describe as f,it as E}from"node:test";async function C(g,r={getInitialIndex:()=>1n}){return f("aggregateStream",async()=>{let t,u=[{evolve:m,info:"evolve with raw event"},{evolve:l,info:"evolve with event and metadata"}];y(async()=>{t=await g()}),w(async()=>{let e=r.teardownHook;e&&await e()});for(let e of u)await E(`When called with 'to' allows time traveling using ${e.info}`,async()=>{let a={productId:"123",quantity:10,price:3},S=10,o=I();await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"DiscountApplied",data:{percent:S}}]);let p=await t.aggregateStream(o,{evolve:e.evolve,initialState:d,read:{to:1n}}),v=await t.aggregateStream(o,{evolve:e.evolve,initialState:d,read:{to:2n}}),c=await t.aggregateStream(o,{evolve:e.evolve,initialState:d,read:{to:3n}});i(p),i(v),i(c),s(p.currentStreamVersion,r.getInitialIndex()),n(p.state,{productItems:[a],totalAmount:30}),s(v.currentStreamVersion,r.getInitialIndex()+1n),n(v.state,{productItems:[a,a],totalAmount:60}),s(c.currentStreamVersion,r.getInitialIndex()+2n),n(c.state,{productItems:[a,a],totalAmount:54})})})}export{C as testAggregateStream};
1
+ import{a as m,b as l,c as d}from"../chunk-WB5PNUKG.mjs";import{g as n,k as i,l as s}from"../chunk-GNTBBARO.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";import"../chunk-YWRV75GA.mjs";import"../chunk-JDYZZRJE.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-DOHUIBZQ.mjs";import"../chunk-YGYVF7JI.mjs";import"../chunk-GNUOGYD6.mjs";import"../chunk-DIW552TK.mjs";import"../chunk-7JLAVMM3.mjs";import"../chunk-S33YM44M.mjs";import{randomUUID as I}from"node:crypto";import{after as w,before as y,describe as f,it as E}from"node:test";async function C(g,r={getInitialIndex:()=>1n}){return f("aggregateStream",async()=>{let t,u=[{evolve:m,info:"evolve with raw event"},{evolve:l,info:"evolve with event and metadata"}];y(async()=>{t=await g()}),w(async()=>{let e=r.teardownHook;e&&await e()});for(let e of u)await E(`When called with 'to' allows time traveling using ${e.info}`,async()=>{let a={productId:"123",quantity:10,price:3},S=10,o=I();await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"ProductItemAdded",data:{productItem:a}}]),await t.appendToStream(o,[{type:"DiscountApplied",data:{percent:S}}]);let p=await t.aggregateStream(o,{evolve:e.evolve,initialState:d,read:{to:1n}}),v=await t.aggregateStream(o,{evolve:e.evolve,initialState:d,read:{to:2n}}),c=await t.aggregateStream(o,{evolve:e.evolve,initialState:d,read:{to:3n}});i(p),i(v),i(c),s(p.currentStreamVersion,r.getInitialIndex()),n(p.state,{productItems:[a],totalAmount:30}),s(v.currentStreamVersion,r.getInitialIndex()+1n),n(v.state,{productItems:[a,a],totalAmount:60}),s(c.currentStreamVersion,r.getInitialIndex()+2n),n(c.state,{productItems:[a,a],totalAmount:54})})})}export{C as testAggregateStream};
2
2
  //# sourceMappingURL=features.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/testing/features.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { after, before, describe, it } from 'node:test';\nimport type { EventStore } from '../eventStore';\nimport { assertDeepEqual, assertEqual, assertOk } from './assertions';\nimport {\n evolve,\n evolveWithMetadata,\n initialState,\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', async () => {\n let eventStore: EventStore<bigint>;\n const evolveTestCases = [\n {\n evolve,\n info: 'evolve with raw event',\n },\n { evolve: evolveWithMetadata, info: 'evolve with event and metadata' },\n ];\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 for (const testCase of evolveTestCases) {\n await it(`When called with 'to' allows time traveling using ${testCase.info}`, 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: testCase.evolve,\n initialState,\n read: { to: 1n },\n });\n const resultAt2 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 2n },\n });\n const resultAt3 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 3n },\n });\n\n // then\n assertOk(resultAt1);\n assertOk(resultAt2);\n assertOk(resultAt3);\n\n assertEqual(resultAt1.currentStreamVersion, options.getInitialIndex());\n assertDeepEqual(resultAt1.state, {\n productItems: [productItem],\n totalAmount: 30,\n });\n\n assertEqual(\n resultAt2.currentStreamVersion,\n options.getInitialIndex() + 1n,\n );\n assertDeepEqual(resultAt2.state, {\n productItems: [productItem, productItem],\n totalAmount: 60,\n });\n\n assertEqual(\n resultAt3.currentStreamVersion,\n options.getInitialIndex() + 2n,\n );\n assertDeepEqual(resultAt3.state, {\n productItems: [productItem, productItem],\n totalAmount: 54,\n });\n });\n }\n });\n}\n"],"mappings":"4ZAAA,OAAS,cAAAA,MAAkB,cAC3B,OAAS,SAAAC,EAAO,UAAAC,EAAQ,YAAAC,EAAU,MAAAC,MAAU,YAkB5C,eAAsBC,EACpBC,EACAC,EAAuB,CACrB,gBAAiB,IAAM,EACzB,EACA,CACA,OAAOC,EAAS,kBAAmB,SAAY,CAC7C,IAAIC,EACEC,EAAkB,CACtB,CACE,OAAAC,EACA,KAAM,uBACR,EACA,CAAE,OAAQC,EAAoB,KAAM,gCAAiC,CACvE,EAEAC,EAAO,SAAY,CACjBJ,EAAa,MAAMH,EAAkB,CACvC,CAAC,EAEDQ,EAAM,SAAY,CAChB,IAAMC,EAAeR,EAAQ,aACzBQ,GAAc,MAAMA,EAAa,CACvC,CAAC,EAED,QAAWC,KAAYN,EACrB,MAAMO,EAAG,qDAAqDD,EAAS,IAAI,GAAI,SAAY,CAEzF,IAAME,EAAiC,CACrC,UAAW,MACX,SAAU,GACV,MAAO,CACT,EACMC,EAAW,GACXC,EAAiBC,EAAW,EAElC,MAAMZ,EAAW,eAAkCW,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMT,EAAW,eAAkCW,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMT,EAAW,eAAkCW,EAAgB,CACjE,CAAE,KAAM,kBAAmB,KAAM,CAAE,QAASD,CAAS,CAAE,CACzD,CAAC,EAGD,IAAMG,EAAY,MAAMb,EAAW,gBAAgBW,EAAgB,CACjE,OAAQJ,EAAS,OACjB,aAAAO,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKC,EAAY,MAAMf,EAAW,gBAAgBW,EAAgB,CACjE,OAAQJ,EAAS,OACjB,aAAAO,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKE,EAAY,MAAMhB,EAAW,gBAAgBW,EAAgB,CACjE,OAAQJ,EAAS,OACjB,aAAAO,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EAGDG,EAASJ,CAAS,EAClBI,EAASF,CAAS,EAClBE,EAASD,CAAS,EAElBE,EAAYL,EAAU,qBAAsBf,EAAQ,gBAAgB,CAAC,EACrEqB,EAAgBN,EAAU,MAAO,CAC/B,aAAc,CAACJ,CAAW,EAC1B,YAAa,EACf,CAAC,EAEDS,EACEH,EAAU,qBACVjB,EAAQ,gBAAgB,EAAI,EAC9B,EACAqB,EAAgBJ,EAAU,MAAO,CAC/B,aAAc,CAACN,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,EAEDS,EACEF,EAAU,qBACVlB,EAAQ,gBAAgB,EAAI,EAC9B,EACAqB,EAAgBH,EAAU,MAAO,CAC/B,aAAc,CAACP,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,CACH,CAAC,CAEL,CAAC,CACH","names":["randomUUID","after","before","describe","it","testAggregateStream","eventStoreFactory","options","describe","eventStore","evolveTestCases","evolve","evolveWithMetadata","before","after","teardownHook","testCase","it","productItem","discount","shoppingCartId","randomUUID","resultAt1","initialState","resultAt2","resultAt3","assertOk","assertEqual","assertDeepEqual"]}
1
+ {"version":3,"sources":["../../src/testing/features.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { after, before, describe, it } from 'node:test';\nimport type { EventStore } from '../eventStore';\nimport { assertDeepEqual, assertEqual, assertOk } from './assertions';\nimport {\n evolve,\n evolveWithMetadata,\n initialState,\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', async () => {\n let eventStore: EventStore<bigint>;\n const evolveTestCases = [\n {\n evolve,\n info: 'evolve with raw event',\n },\n { evolve: evolveWithMetadata, info: 'evolve with event and metadata' },\n ];\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 for (const testCase of evolveTestCases) {\n await it(`When called with 'to' allows time traveling using ${testCase.info}`, 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: testCase.evolve,\n initialState,\n read: { to: 1n },\n });\n const resultAt2 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 2n },\n });\n const resultAt3 = await eventStore.aggregateStream(shoppingCartId, {\n evolve: testCase.evolve,\n initialState,\n read: { to: 3n },\n });\n\n // then\n assertOk(resultAt1);\n assertOk(resultAt2);\n assertOk(resultAt3);\n\n assertEqual(resultAt1.currentStreamVersion, options.getInitialIndex());\n assertDeepEqual(resultAt1.state, {\n productItems: [productItem],\n totalAmount: 30,\n });\n\n assertEqual(\n resultAt2.currentStreamVersion,\n options.getInitialIndex() + 1n,\n );\n assertDeepEqual(resultAt2.state, {\n productItems: [productItem, productItem],\n totalAmount: 60,\n });\n\n assertEqual(\n resultAt3.currentStreamVersion,\n options.getInitialIndex() + 2n,\n );\n assertDeepEqual(resultAt3.state, {\n productItems: [productItem, productItem],\n totalAmount: 54,\n });\n });\n }\n });\n}\n"],"mappings":"sfAAA,OAAS,cAAAA,MAAkB,cAC3B,OAAS,SAAAC,EAAO,UAAAC,EAAQ,YAAAC,EAAU,MAAAC,MAAU,YAkB5C,eAAsBC,EACpBC,EACAC,EAAuB,CACrB,gBAAiB,IAAM,EACzB,EACA,CACA,OAAOC,EAAS,kBAAmB,SAAY,CAC7C,IAAIC,EACEC,EAAkB,CACtB,CACE,OAAAC,EACA,KAAM,uBACR,EACA,CAAE,OAAQC,EAAoB,KAAM,gCAAiC,CACvE,EAEAC,EAAO,SAAY,CACjBJ,EAAa,MAAMH,EAAkB,CACvC,CAAC,EAEDQ,EAAM,SAAY,CAChB,IAAMC,EAAeR,EAAQ,aACzBQ,GAAc,MAAMA,EAAa,CACvC,CAAC,EAED,QAAWC,KAAYN,EACrB,MAAMO,EAAG,qDAAqDD,EAAS,IAAI,GAAI,SAAY,CAEzF,IAAME,EAAiC,CACrC,UAAW,MACX,SAAU,GACV,MAAO,CACT,EACMC,EAAW,GACXC,EAAiBC,EAAW,EAElC,MAAMZ,EAAW,eAAkCW,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMT,EAAW,eAAkCW,EAAgB,CACjE,CAAE,KAAM,mBAAoB,KAAM,CAAE,YAAAF,CAAY,CAAE,CACpD,CAAC,EACD,MAAMT,EAAW,eAAkCW,EAAgB,CACjE,CAAE,KAAM,kBAAmB,KAAM,CAAE,QAASD,CAAS,CAAE,CACzD,CAAC,EAGD,IAAMG,EAAY,MAAMb,EAAW,gBAAgBW,EAAgB,CACjE,OAAQJ,EAAS,OACjB,aAAAO,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKC,EAAY,MAAMf,EAAW,gBAAgBW,EAAgB,CACjE,OAAQJ,EAAS,OACjB,aAAAO,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EACKE,EAAY,MAAMhB,EAAW,gBAAgBW,EAAgB,CACjE,OAAQJ,EAAS,OACjB,aAAAO,EACA,KAAM,CAAE,GAAI,EAAG,CACjB,CAAC,EAGDG,EAASJ,CAAS,EAClBI,EAASF,CAAS,EAClBE,EAASD,CAAS,EAElBE,EAAYL,EAAU,qBAAsBf,EAAQ,gBAAgB,CAAC,EACrEqB,EAAgBN,EAAU,MAAO,CAC/B,aAAc,CAACJ,CAAW,EAC1B,YAAa,EACf,CAAC,EAEDS,EACEH,EAAU,qBACVjB,EAAQ,gBAAgB,EAAI,EAC9B,EACAqB,EAAgBJ,EAAU,MAAO,CAC/B,aAAc,CAACN,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,EAEDS,EACEF,EAAU,qBACVlB,EAAQ,gBAAgB,EAAI,EAC9B,EACAqB,EAAgBH,EAAU,MAAO,CAC/B,aAAc,CAACP,EAAaA,CAAW,EACvC,YAAa,EACf,CAAC,CACH,CAAC,CAEL,CAAC,CACH","names":["randomUUID","after","before","describe","it","testAggregateStream","eventStoreFactory","options","describe","eventStore","evolveTestCases","evolve","evolveWithMetadata","before","after","teardownHook","testCase","it","productItem","discount","shoppingCartId","randomUUID","resultAt1","initialState","resultAt2","resultAt3","assertOk","assertEqual","assertDeepEqual"]}
@@ -1,4 +1,4 @@
1
- export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertTrue, isSubset, verifyThat } from './assertions.mjs';
1
+ export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertThrowsAsync, assertTrue, isSubset, verifyThat } from './assertions.mjs';
2
2
  export { DeciderSpecfication, DeciderSpecification, ThenThrows } from './deciderSpecification.mjs';
3
3
  export { TestEventStream, WrapEventStore } from './wrapEventStore.mjs';
4
4
  import '../errors/index.mjs';
@@ -1,4 +1,4 @@
1
- export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertTrue, isSubset, verifyThat } from './assertions.js';
1
+ export { ArgumentMatcher, AssertionError, MockedFunction, argMatches, argValue, assertDeepEqual, assertEqual, assertFails, assertFalse, assertIsNotNull, assertIsNull, assertMatches, assertNotEqual, assertOk, assertThat, assertThatArray, assertThrows, assertThrowsAsync, assertTrue, isSubset, verifyThat } from './assertions.js';
2
2
  export { DeciderSpecfication, DeciderSpecification, ThenThrows } from './deciderSpecification.js';
3
3
  export { TestEventStream, WrapEventStore } from './wrapEventStore.js';
4
4
  import '../errors/index.js';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-BNCTLP4B.js');var _chunkTNX525X5js = require('../chunk-TNX525X5.js');var _chunkOIDX2JMHjs = require('../chunk-OIDX2JMH.js');var _chunkVCCKNYOYjs = require('../chunk-VCCKNYOY.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');require('../chunk-ZLASBJGR.js');require('../chunk-MHB2JU4U.js');require('../chunk-7FJXUW3D.js');require('../chunk-5BGN2FV4.js');require('../chunk-KQAFRLJ2.js');require('../chunk-UFUSYJWU.js');require('../chunk-E7KI3V22.js');exports.AssertionError = _chunkVCCKNYOYjs.a; exports.DeciderSpecification = _chunkOIDX2JMHjs.a; exports.WrapEventStore = _chunkTNX525X5js.a; exports.argMatches = _chunkVCCKNYOYjs.p; exports.argValue = _chunkVCCKNYOYjs.o; exports.assertDeepEqual = _chunkVCCKNYOYjs.f; exports.assertEqual = _chunkVCCKNYOYjs.k; exports.assertFails = _chunkVCCKNYOYjs.c; exports.assertFalse = _chunkVCCKNYOYjs.h; exports.assertIsNotNull = _chunkVCCKNYOYjs.m; exports.assertIsNull = _chunkVCCKNYOYjs.n; exports.assertMatches = _chunkVCCKNYOYjs.e; exports.assertNotEqual = _chunkVCCKNYOYjs.l; exports.assertOk = _chunkVCCKNYOYjs.j; exports.assertThat = _chunkVCCKNYOYjs.g; exports.assertThatArray = _chunkVCCKNYOYjs.r; exports.assertThrows = _chunkVCCKNYOYjs.d; exports.assertTrue = _chunkVCCKNYOYjs.i; exports.isSubset = _chunkVCCKNYOYjs.b; exports.verifyThat = _chunkVCCKNYOYjs.q;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-BNCTLP4B.js');var _chunkTNX525X5js = require('../chunk-TNX525X5.js');var _chunkTGIGJCOUjs = require('../chunk-TGIGJCOU.js');var _chunkHXDPPPUAjs = require('../chunk-HXDPPPUA.js');require('../chunk-6IATZUYD.js');require('../chunk-PVFUNWT6.js');require('../chunk-FE73T2NS.js');require('../chunk-3JE5DUJ2.js');require('../chunk-ZLASBJGR.js');require('../chunk-MHB2JU4U.js');require('../chunk-7FJXUW3D.js');require('../chunk-5BGN2FV4.js');require('../chunk-KQAFRLJ2.js');require('../chunk-UFUSYJWU.js');require('../chunk-LOJ6A4AJ.js');require('../chunk-AU2WZCER.js');require('../chunk-MKHK5TRM.js');require('../chunk-E7KI3V22.js');exports.AssertionError = _chunkHXDPPPUAjs.a; exports.DeciderSpecification = _chunkTGIGJCOUjs.a; exports.WrapEventStore = _chunkTNX525X5js.a; exports.argMatches = _chunkHXDPPPUAjs.q; exports.argValue = _chunkHXDPPPUAjs.p; exports.assertDeepEqual = _chunkHXDPPPUAjs.g; exports.assertEqual = _chunkHXDPPPUAjs.l; exports.assertFails = _chunkHXDPPPUAjs.c; exports.assertFalse = _chunkHXDPPPUAjs.i; exports.assertIsNotNull = _chunkHXDPPPUAjs.n; exports.assertIsNull = _chunkHXDPPPUAjs.o; exports.assertMatches = _chunkHXDPPPUAjs.f; exports.assertNotEqual = _chunkHXDPPPUAjs.m; exports.assertOk = _chunkHXDPPPUAjs.k; exports.assertThat = _chunkHXDPPPUAjs.h; exports.assertThatArray = _chunkHXDPPPUAjs.s; exports.assertThrows = _chunkHXDPPPUAjs.e; exports.assertThrowsAsync = _chunkHXDPPPUAjs.d; exports.assertTrue = _chunkHXDPPPUAjs.j; exports.isSubset = _chunkHXDPPPUAjs.b; exports.verifyThat = _chunkHXDPPPUAjs.r;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import"../chunk-AHXBZPOE.mjs";import{a as t}from"../chunk-N6X7QWHP.mjs";import{a as s}from"../chunk-EYIJ7ZKY.mjs";import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"../chunk-ZFBWMZ55.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";import"../chunk-YWRV75GA.mjs";import"../chunk-JDYZZRJE.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-DOHUIBZQ.mjs";import"../chunk-YGYVF7JI.mjs";import"../chunk-GNUOGYD6.mjs";import"../chunk-KLLSLLHN.mjs";export{a as AssertionError,s as DeciderSpecification,t as WrapEventStore,p as argMatches,o as argValue,f as assertDeepEqual,k as assertEqual,c as assertFails,h as assertFalse,m as assertIsNotNull,n as assertIsNull,e as assertMatches,l as assertNotEqual,j as assertOk,g as assertThat,r as assertThatArray,d as assertThrows,i as assertTrue,b as isSubset,q as verifyThat};
1
+ import"../chunk-AHXBZPOE.mjs";import{a as u}from"../chunk-N6X7QWHP.mjs";import{a as t}from"../chunk-GWMVSXLN.mjs";import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s}from"../chunk-GNTBBARO.mjs";import"../chunk-3DH3DSMC.mjs";import"../chunk-B7NWWHCY.mjs";import"../chunk-OBA6MZMG.mjs";import"../chunk-YKFEDBH4.mjs";import"../chunk-YWRV75GA.mjs";import"../chunk-JDYZZRJE.mjs";import"../chunk-3LYVXI5R.mjs";import"../chunk-DOHUIBZQ.mjs";import"../chunk-YGYVF7JI.mjs";import"../chunk-GNUOGYD6.mjs";import"../chunk-DIW552TK.mjs";import"../chunk-7JLAVMM3.mjs";import"../chunk-S33YM44M.mjs";import"../chunk-KLLSLLHN.mjs";export{a as AssertionError,t as DeciderSpecification,u as WrapEventStore,q as argMatches,p as argValue,g as assertDeepEqual,l as assertEqual,c as assertFails,i as assertFalse,n as assertIsNotNull,o as assertIsNull,f as assertMatches,m as assertNotEqual,k as assertOk,h as assertThat,s as assertThatArray,e as assertThrows,d as assertThrowsAsync,j as assertTrue,b as isSubset,r as verifyThat};
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.11.2",
3
+ "version": "0.12.0",
4
4
  "description": "Emmett - Event Sourcing development made simple",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -1,2 +0,0 @@
1
- var a=class extends Error{constructor(r){super(`Cannot parse! ${r}`)}},p={stringify:(o,r)=>JSON.stringify(r?.map?r.map(o):o),parse:(o,r)=>{let e=JSON.parse(o,r?.reviver);if(r?.typeCheck&&!r?.typeCheck(e))throw new a(o);return r?.map?r.map(e):e}};export{a,p as b};
2
- //# sourceMappingURL=chunk-PKL7KGJ3.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/serialization/json/JSONParser.ts"],"sourcesContent":["export class ParseError extends Error {\n constructor(text: string) {\n super(`Cannot parse! ${text}`);\n }\n}\n\nexport type Mapper<From, To = From> =\n | ((value: unknown) => To)\n | ((value: Partial<From>) => To)\n | ((value: From) => To)\n | ((value: Partial<To>) => To)\n | ((value: To) => To)\n | ((value: Partial<To | From>) => To)\n | ((value: To | From) => To);\n\nexport type MapperArgs<From, To = From> = Partial<From> &\n From &\n Partial<To> &\n To;\n\nexport type ParseOptions<From, To = From> = {\n reviver?: (key: string, value: unknown) => unknown;\n map?: Mapper<From, To>;\n typeCheck?: <To>(value: unknown) => value is To;\n};\n\nexport type StringifyOptions<From, To = From> = {\n map?: Mapper<From, To>;\n};\n\nexport const JSONParser = {\n stringify: <From, To = From>(\n value: From,\n options?: StringifyOptions<From, To>,\n ) => {\n return JSON.stringify(\n options?.map ? options.map(value as MapperArgs<From, To>) : value,\n );\n },\n parse: <From, To = From>(\n text: string,\n options?: ParseOptions<From, To>,\n ): To | undefined => {\n const parsed: unknown = JSON.parse(text, options?.reviver);\n\n if (options?.typeCheck && !options?.typeCheck<To>(parsed))\n throw new ParseError(text);\n\n return options?.map\n ? options.map(parsed as MapperArgs<From, To>)\n : (parsed as To | undefined);\n },\n};\n"],"mappings":"AAAO,IAAMA,EAAN,cAAyB,KAAM,CACpC,YAAYC,EAAc,CACxB,MAAM,iBAAiBA,CAAI,EAAE,CAC/B,CACF,EA0BaC,EAAa,CACxB,UAAW,CACTC,EACAC,IAEO,KAAK,UACVA,GAAS,IAAMA,EAAQ,IAAID,CAA6B,EAAIA,CAC9D,EAEF,MAAO,CACLF,EACAG,IACmB,CACnB,IAAMC,EAAkB,KAAK,MAAMJ,EAAMG,GAAS,OAAO,EAEzD,GAAIA,GAAS,WAAa,CAACA,GAAS,UAAcC,CAAM,EACtD,MAAM,IAAIL,EAAWC,CAAI,EAE3B,OAAOG,GAAS,IACZA,EAAQ,IAAIC,CAA8B,EACzCA,CACP,CACF","names":["ParseError","text","JSONParser","value","options","parsed"]}
@@ -1,11 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkPVFUNWT6js = require('./chunk-PVFUNWT6.js');var r=class extends Error{constructor(e){super(e)}},a= exports.b =(n,e)=>{let t=n,s=e;return u(t),u(s),Object.keys(s).every(c=>typeof s[c]=="object"?a(t[c],s[c]):s[c]===t[c])},d= exports.c =()=>{throw new r("That should not ever happened, right?")},T= exports.d =(n,e)=>{try{throw n(),new r("Function didn't throw expected error")}catch(t){e&&o(e(t))}},k= exports.e =(n,e,t)=>{if(!a(n,e))throw new r(_nullishCoalesce(t, () => (`subObj:
2
- ${JSON.stringify(e)}
3
- is not subset of
4
- ${JSON.stringify(n)}`)))},f= exports.f =(n,e,t)=>{if(!_chunkPVFUNWT6js.a.call(void 0, n,e))throw new r(_nullishCoalesce(t, () => (`subObj:
5
- ${JSON.stringify(e)}
6
- is equals to
7
- ${JSON.stringify(n)}`)))},p= exports.g =n=>({isEqualTo:e=>o(_chunkPVFUNWT6js.a.call(void 0, n,e))});function g(n,e){if(n)throw new r(_nullishCoalesce(e, () => ("Condition is false")))}function o(n,e){if(!n)throw new r(_nullishCoalesce(e, () => ("Condition is false")))}function u(n,e){if(!n)throw new r(_nullishCoalesce(e, () => ("Condition is not truthy")))}function i(n,e,t){if(n!==e)throw new r(_nullishCoalesce(t, () => (`Objects are not equal:
8
- ${JSON.stringify(n)}
9
- compared:
10
- ${JSON.stringify(e)}`)))}function m(n,e,t){if(n===e)throw new r(_nullishCoalesce(t, () => (`Objects are equal: ${JSON.stringify(n)}`)))}function w(n){m(n,null),u(n)}function x(n){i(n,null)}var b=n=>e=>_chunkPVFUNWT6js.a.call(void 0, e,n),O= exports.p =n=>e=>n(e);function y(n){return{calledTimes:e=>{i(_optionalChain([n, 'access', _ => _.mock, 'optionalAccess', _2 => _2.calls, 'optionalAccess', _3 => _3.length]),e)},notCalled:()=>{i(_optionalChain([n, 'optionalAccess', _4 => _4.mock, 'optionalAccess', _5 => _5.calls, 'optionalAccess', _6 => _6.length]),0)},called:()=>{o(_optionalChain([n, 'access', _7 => _7.mock, 'optionalAccess', _8 => _8.calls, 'access', _9 => _9.length])!==void 0&&n.mock.calls.length>0)},calledWith:(...e)=>{o(_optionalChain([n, 'access', _10 => _10.mock, 'optionalAccess', _11 => _11.calls, 'access', _12 => _12.length])!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>_chunkPVFUNWT6js.a.call(void 0, t.arguments,e)))},calledOnceWith:(...e)=>{o(_optionalChain([n, 'access', _13 => _13.mock, 'optionalAccess', _14 => _14.calls, 'access', _15 => _15.length])!==void 0&&n.mock.calls.length===1&&n.mock.calls.some(t=>_chunkPVFUNWT6js.a.call(void 0, t.arguments,e)))},calledWithArgumentMatching:(...e)=>{o(_optionalChain([n, 'access', _16 => _16.mock, 'optionalAccess', _17 => _17.calls, 'access', _18 => _18.length])!==void 0&&n.mock.calls.length>=1),o(_optionalChain([n, 'access', _19 => _19.mock, 'optionalAccess', _20 => _20.calls, 'access', _21 => _21.length])!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>t.arguments&&t.arguments.length>=e.length&&e.every((s,c)=>s(t.arguments[c]))))},notCalledWithArgumentMatching:(...e)=>{g(_optionalChain([n, 'access', _22 => _22.mock, 'optionalAccess', _23 => _23.calls, 'access', _24 => _24.length])!==void 0&&n.mock.calls.length>=1&&n.mock.calls[0].arguments&&n.mock.calls[0].arguments.length>=e.length&&e.every((t,s)=>t(n.mock.calls[0].arguments[s])))}}}var E=n=>({isEmpty:()=>i(n.length,0),hasSize:e=>i(n.length,e),containsElements:(...e)=>{o(e.every(t=>e.some(s=>_chunkPVFUNWT6js.a.call(void 0, t,s))))},containsExactlyInAnyOrder:(...e)=>{i(n.length,e.length),o(n.every(t=>e.some(s=>_chunkPVFUNWT6js.a.call(void 0, t,s))))},containsExactlyInAnyOrderElementsOf:e=>{i(n.length,e.length),o(n.every(t=>e.some(s=>_chunkPVFUNWT6js.a.call(void 0, t,s))))},containsExactlyElementsOf:e=>{i(n.length,e.length);for(let t=0;t<n.length;t++)o(_chunkPVFUNWT6js.a.call(void 0, n[t],e[t]))},containsExactly:e=>{i(n.length,1),o(_chunkPVFUNWT6js.a.call(void 0, n[0],e))},contains:e=>{o(n.some(t=>_chunkPVFUNWT6js.a.call(void 0, t,e)))},containsOnlyOnceElementsOf:e=>{o(e.map(t=>n.filter(s=>_chunkPVFUNWT6js.a.call(void 0, s,t)).length).filter(t=>t===1).length===e.length)},containsAnyOf:(...e)=>{o(n.some(t=>e.some(s=>_chunkPVFUNWT6js.a.call(void 0, t,s))))},allMatch:e=>{o(n.every(e))},anyMatches:e=>{o(n.some(e))},allMatchAsync:async e=>{for(let t of n)o(await e(t))}});exports.a = r; exports.b = a; exports.c = d; exports.d = T; exports.e = k; exports.f = f; exports.g = p; exports.h = g; exports.i = o; exports.j = u; exports.k = i; exports.l = m; exports.m = w; exports.n = x; exports.o = b; exports.p = O; exports.q = y; exports.r = E;
11
- //# sourceMappingURL=chunk-VCCKNYOY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/testing/assertions.ts"],"names":["AssertionError","message","isSubset","superObj","subObj","sup","sub","assertOk","ele","assertFails","assertThrows","fun","errorCheck","error","assertTrue","assertMatches","actual","expected","assertDeepEqual","deepEquals","assertThat","item","other","assertFalse","condition","obj","assertEqual","assertNotEqual","assertIsNotNull","result","assertIsNull","argValue","value","arg","argMatches","matches","verifyThat","fn","times","args","call","match","index","assertThatArray","array","length","ts","o","i","elem","a"],"mappings":"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","sourcesContent":["import type { DefaultRecord } from '../typing';\nimport { deepEquals } from '../utils';\n\nexport class AssertionError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\nexport const isSubset = (superObj: unknown, subObj: unknown): boolean => {\n const sup = superObj as DefaultRecord;\n const sub = subObj as DefaultRecord;\n\n assertOk(sup);\n assertOk(sub);\n\n return Object.keys(sub).every((ele: string) => {\n if (typeof sub[ele] == 'object') {\n return isSubset(sup[ele], sub[ele]);\n }\n return sub[ele] === sup[ele];\n });\n};\n\nexport const assertFails = () => {\n throw new AssertionError('That should not ever happened, right?');\n};\n\nexport const assertThrows = (\n fun: () => void,\n errorCheck?: (error: Error) => boolean,\n) => {\n try {\n fun();\n throw new AssertionError(\"Function didn't throw expected error\");\n } catch (error) {\n if (errorCheck) assertTrue(errorCheck(error as Error));\n }\n};\n\nexport const assertMatches = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!isSubset(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSON.stringify(expected)}\\nis not subset of\\n${JSON.stringify(actual)}`,\n );\n};\n\nexport const assertDeepEqual = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!deepEquals(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSON.stringify(expected)}\\nis equals to\\n${JSON.stringify(actual)}`,\n );\n};\n\nexport const assertThat = <T>(item: T) => {\n return {\n isEqualTo: (other: T) => assertTrue(deepEquals(item, other)),\n };\n};\n\nexport function assertFalse(\n condition: boolean,\n message?: string,\n): asserts condition is false {\n if (condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertTrue(\n condition: boolean,\n message?: string,\n): asserts condition is true {\n if (!condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertOk<T>(\n obj: T | null | undefined,\n message?: string,\n): asserts obj is T {\n if (!obj) throw new AssertionError(message ?? `Condition is not truthy`);\n}\n\nexport function assertEqual<T>(\n obj: T | null | undefined,\n other: T | null | undefined,\n message?: string,\n): void {\n if (obj !== other)\n throw new AssertionError(\n message ??\n `Objects are not equal:\\n ${JSON.stringify(obj)}\\ncompared:\\n${JSON.stringify(other)}`,\n );\n}\n\nexport function assertNotEqual<T>(\n obj: T | null | undefined,\n other: T | null | undefined,\n message?: string,\n): void {\n if (obj === other)\n throw new AssertionError(\n message ?? `Objects are equal: ${JSON.stringify(obj)}`,\n );\n}\n\nexport function assertIsNotNull<T extends object>(\n result: T | null,\n): asserts result is T {\n assertNotEqual(result, null);\n assertOk(result);\n}\n\nexport function assertIsNull<T extends object>(\n result: T | null,\n): asserts result is null {\n assertEqual(result, null);\n}\n\ntype Call = {\n arguments: unknown[];\n result: unknown;\n target: unknown;\n this: unknown;\n};\n\nexport type ArgumentMatcher = (arg: unknown) => boolean;\n\nexport const argValue =\n <T>(value: T): ArgumentMatcher =>\n (arg) =>\n deepEquals(arg, value);\n\nexport const argMatches =\n <T>(matches: (arg: T) => boolean): ArgumentMatcher =>\n (arg) =>\n matches(arg as T);\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MockedFunction = Function & { mock?: { calls: Call[] } };\n\nexport function verifyThat(fn: MockedFunction) {\n return {\n calledTimes: (times: number) => {\n assertEqual(fn.mock?.calls?.length, times);\n },\n notCalled: () => {\n assertEqual(fn?.mock?.calls?.length, 0);\n },\n called: () => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length > 0,\n );\n },\n calledWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledOnceWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length === 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length >= 1,\n );\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some(\n (call) =>\n call.arguments &&\n call.arguments.length >= matches.length &&\n matches.every((match, index) => match(call.arguments[index])),\n ),\n );\n },\n notCalledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertFalse(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls[0]!.arguments &&\n fn.mock.calls[0]!.arguments.length >= matches.length &&\n matches.every((match, index) =>\n match(fn.mock!.calls[0]!.arguments[index]),\n ),\n );\n },\n };\n}\n\nexport const assertThatArray = <T>(array: T[]) => {\n return {\n isEmpty: () => assertEqual(array.length, 0),\n hasSize: (length: number) => assertEqual(array.length, length),\n containsElements: (...other: T[]) => {\n assertTrue(other.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrder: (...other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrderElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n for (let i = 0; i < array.length; i++) {\n assertTrue(deepEquals(array[i], other[i]));\n }\n },\n containsExactly: (elem: T) => {\n assertEqual(array.length, 1);\n assertTrue(deepEquals(array[0], elem));\n },\n contains: (elem: T) => {\n assertTrue(array.some((a) => deepEquals(a, elem)));\n },\n containsOnlyOnceElementsOf: (other: T[]) => {\n assertTrue(\n other\n .map((o) => array.filter((a) => deepEquals(a, o)).length)\n .filter((a) => a === 1).length === other.length,\n );\n },\n containsAnyOf: (...other: T[]) => {\n assertTrue(array.some((a) => other.some((o) => deepEquals(a, o))));\n },\n allMatch: (matches: (item: T) => boolean) => {\n assertTrue(array.every(matches));\n },\n anyMatches: (matches: (item: T) => boolean) => {\n assertTrue(array.some(matches));\n },\n allMatchAsync: async (\n matches: (item: T) => Promise<boolean>,\n ): Promise<void> => {\n for (const item of array) {\n assertTrue(await matches(item));\n }\n },\n };\n};\n"]}
@@ -1,11 +0,0 @@
1
- import{a as l}from"./chunk-B7NWWHCY.mjs";var r=class extends Error{constructor(e){super(e)}},a=(n,e)=>{let t=n,s=e;return u(t),u(s),Object.keys(s).every(c=>typeof s[c]=="object"?a(t[c],s[c]):s[c]===t[c])},d=()=>{throw new r("That should not ever happened, right?")},T=(n,e)=>{try{throw n(),new r("Function didn't throw expected error")}catch(t){e&&o(e(t))}},k=(n,e,t)=>{if(!a(n,e))throw new r(t??`subObj:
2
- ${JSON.stringify(e)}
3
- is not subset of
4
- ${JSON.stringify(n)}`)},f=(n,e,t)=>{if(!l(n,e))throw new r(t??`subObj:
5
- ${JSON.stringify(e)}
6
- is equals to
7
- ${JSON.stringify(n)}`)},p=n=>({isEqualTo:e=>o(l(n,e))});function g(n,e){if(n)throw new r(e??"Condition is false")}function o(n,e){if(!n)throw new r(e??"Condition is false")}function u(n,e){if(!n)throw new r(e??"Condition is not truthy")}function i(n,e,t){if(n!==e)throw new r(t??`Objects are not equal:
8
- ${JSON.stringify(n)}
9
- compared:
10
- ${JSON.stringify(e)}`)}function m(n,e,t){if(n===e)throw new r(t??`Objects are equal: ${JSON.stringify(n)}`)}function w(n){m(n,null),u(n)}function x(n){i(n,null)}var b=n=>e=>l(e,n),O=n=>e=>n(e);function y(n){return{calledTimes:e=>{i(n.mock?.calls?.length,e)},notCalled:()=>{i(n?.mock?.calls?.length,0)},called:()=>{o(n.mock?.calls.length!==void 0&&n.mock.calls.length>0)},calledWith:(...e)=>{o(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>l(t.arguments,e)))},calledOnceWith:(...e)=>{o(n.mock?.calls.length!==void 0&&n.mock.calls.length===1&&n.mock.calls.some(t=>l(t.arguments,e)))},calledWithArgumentMatching:(...e)=>{o(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1),o(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1&&n.mock.calls.some(t=>t.arguments&&t.arguments.length>=e.length&&e.every((s,c)=>s(t.arguments[c]))))},notCalledWithArgumentMatching:(...e)=>{g(n.mock?.calls.length!==void 0&&n.mock.calls.length>=1&&n.mock.calls[0].arguments&&n.mock.calls[0].arguments.length>=e.length&&e.every((t,s)=>t(n.mock.calls[0].arguments[s])))}}}var E=n=>({isEmpty:()=>i(n.length,0),hasSize:e=>i(n.length,e),containsElements:(...e)=>{o(e.every(t=>e.some(s=>l(t,s))))},containsExactlyInAnyOrder:(...e)=>{i(n.length,e.length),o(n.every(t=>e.some(s=>l(t,s))))},containsExactlyInAnyOrderElementsOf:e=>{i(n.length,e.length),o(n.every(t=>e.some(s=>l(t,s))))},containsExactlyElementsOf:e=>{i(n.length,e.length);for(let t=0;t<n.length;t++)o(l(n[t],e[t]))},containsExactly:e=>{i(n.length,1),o(l(n[0],e))},contains:e=>{o(n.some(t=>l(t,e)))},containsOnlyOnceElementsOf:e=>{o(e.map(t=>n.filter(s=>l(s,t)).length).filter(t=>t===1).length===e.length)},containsAnyOf:(...e)=>{o(n.some(t=>e.some(s=>l(t,s))))},allMatch:e=>{o(n.every(e))},anyMatches:e=>{o(n.some(e))},allMatchAsync:async e=>{for(let t of n)o(await e(t))}});export{r as a,a as b,d as c,T as d,k as e,f,p as g,g as h,o as i,u as j,i as k,m as l,w as m,x as n,b as o,O as p,y as q,E as r};
11
- //# sourceMappingURL=chunk-ZFBWMZ55.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/testing/assertions.ts"],"sourcesContent":["import type { DefaultRecord } from '../typing';\nimport { deepEquals } from '../utils';\n\nexport class AssertionError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\nexport const isSubset = (superObj: unknown, subObj: unknown): boolean => {\n const sup = superObj as DefaultRecord;\n const sub = subObj as DefaultRecord;\n\n assertOk(sup);\n assertOk(sub);\n\n return Object.keys(sub).every((ele: string) => {\n if (typeof sub[ele] == 'object') {\n return isSubset(sup[ele], sub[ele]);\n }\n return sub[ele] === sup[ele];\n });\n};\n\nexport const assertFails = () => {\n throw new AssertionError('That should not ever happened, right?');\n};\n\nexport const assertThrows = (\n fun: () => void,\n errorCheck?: (error: Error) => boolean,\n) => {\n try {\n fun();\n throw new AssertionError(\"Function didn't throw expected error\");\n } catch (error) {\n if (errorCheck) assertTrue(errorCheck(error as Error));\n }\n};\n\nexport const assertMatches = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!isSubset(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSON.stringify(expected)}\\nis not subset of\\n${JSON.stringify(actual)}`,\n );\n};\n\nexport const assertDeepEqual = (\n actual: unknown,\n expected: unknown,\n message?: string,\n) => {\n if (!deepEquals(actual, expected))\n throw new AssertionError(\n message ??\n `subObj:\\n${JSON.stringify(expected)}\\nis equals to\\n${JSON.stringify(actual)}`,\n );\n};\n\nexport const assertThat = <T>(item: T) => {\n return {\n isEqualTo: (other: T) => assertTrue(deepEquals(item, other)),\n };\n};\n\nexport function assertFalse(\n condition: boolean,\n message?: string,\n): asserts condition is false {\n if (condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertTrue(\n condition: boolean,\n message?: string,\n): asserts condition is true {\n if (!condition) throw new AssertionError(message ?? `Condition is false`);\n}\n\nexport function assertOk<T>(\n obj: T | null | undefined,\n message?: string,\n): asserts obj is T {\n if (!obj) throw new AssertionError(message ?? `Condition is not truthy`);\n}\n\nexport function assertEqual<T>(\n obj: T | null | undefined,\n other: T | null | undefined,\n message?: string,\n): void {\n if (obj !== other)\n throw new AssertionError(\n message ??\n `Objects are not equal:\\n ${JSON.stringify(obj)}\\ncompared:\\n${JSON.stringify(other)}`,\n );\n}\n\nexport function assertNotEqual<T>(\n obj: T | null | undefined,\n other: T | null | undefined,\n message?: string,\n): void {\n if (obj === other)\n throw new AssertionError(\n message ?? `Objects are equal: ${JSON.stringify(obj)}`,\n );\n}\n\nexport function assertIsNotNull<T extends object>(\n result: T | null,\n): asserts result is T {\n assertNotEqual(result, null);\n assertOk(result);\n}\n\nexport function assertIsNull<T extends object>(\n result: T | null,\n): asserts result is null {\n assertEqual(result, null);\n}\n\ntype Call = {\n arguments: unknown[];\n result: unknown;\n target: unknown;\n this: unknown;\n};\n\nexport type ArgumentMatcher = (arg: unknown) => boolean;\n\nexport const argValue =\n <T>(value: T): ArgumentMatcher =>\n (arg) =>\n deepEquals(arg, value);\n\nexport const argMatches =\n <T>(matches: (arg: T) => boolean): ArgumentMatcher =>\n (arg) =>\n matches(arg as T);\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MockedFunction = Function & { mock?: { calls: Call[] } };\n\nexport function verifyThat(fn: MockedFunction) {\n return {\n calledTimes: (times: number) => {\n assertEqual(fn.mock?.calls?.length, times);\n },\n notCalled: () => {\n assertEqual(fn?.mock?.calls?.length, 0);\n },\n called: () => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length > 0,\n );\n },\n calledWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledOnceWith: (...args: unknown[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length === 1 &&\n fn.mock.calls.some((call) => deepEquals(call.arguments, args)),\n );\n },\n calledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertTrue(\n fn.mock?.calls.length !== undefined && fn.mock.calls.length >= 1,\n );\n assertTrue(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls.some(\n (call) =>\n call.arguments &&\n call.arguments.length >= matches.length &&\n matches.every((match, index) => match(call.arguments[index])),\n ),\n );\n },\n notCalledWithArgumentMatching: (...matches: ArgumentMatcher[]) => {\n assertFalse(\n fn.mock?.calls.length !== undefined &&\n fn.mock.calls.length >= 1 &&\n fn.mock.calls[0]!.arguments &&\n fn.mock.calls[0]!.arguments.length >= matches.length &&\n matches.every((match, index) =>\n match(fn.mock!.calls[0]!.arguments[index]),\n ),\n );\n },\n };\n}\n\nexport const assertThatArray = <T>(array: T[]) => {\n return {\n isEmpty: () => assertEqual(array.length, 0),\n hasSize: (length: number) => assertEqual(array.length, length),\n containsElements: (...other: T[]) => {\n assertTrue(other.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrder: (...other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyInAnyOrderElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n assertTrue(array.every((ts) => other.some((o) => deepEquals(ts, o))));\n },\n containsExactlyElementsOf: (other: T[]) => {\n assertEqual(array.length, other.length);\n for (let i = 0; i < array.length; i++) {\n assertTrue(deepEquals(array[i], other[i]));\n }\n },\n containsExactly: (elem: T) => {\n assertEqual(array.length, 1);\n assertTrue(deepEquals(array[0], elem));\n },\n contains: (elem: T) => {\n assertTrue(array.some((a) => deepEquals(a, elem)));\n },\n containsOnlyOnceElementsOf: (other: T[]) => {\n assertTrue(\n other\n .map((o) => array.filter((a) => deepEquals(a, o)).length)\n .filter((a) => a === 1).length === other.length,\n );\n },\n containsAnyOf: (...other: T[]) => {\n assertTrue(array.some((a) => other.some((o) => deepEquals(a, o))));\n },\n allMatch: (matches: (item: T) => boolean) => {\n assertTrue(array.every(matches));\n },\n anyMatches: (matches: (item: T) => boolean) => {\n assertTrue(array.some(matches));\n },\n allMatchAsync: async (\n matches: (item: T) => Promise<boolean>,\n ): Promise<void> => {\n for (const item of array) {\n assertTrue(await matches(item));\n }\n },\n };\n};\n"],"mappings":"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","names":["AssertionError","message","isSubset","superObj","subObj","sup","sub","assertOk","ele","assertFails","assertThrows","fun","errorCheck","error","assertTrue","assertMatches","actual","expected","assertDeepEqual","deepEquals","assertThat","item","other","assertFalse","condition","obj","assertEqual","assertNotEqual","assertIsNotNull","result","assertIsNull","argValue","value","arg","argMatches","matches","verifyThat","fn","times","args","call","match","index","assertThatArray","array","length","ts","o","i","elem","a"]}