@kairos-es/core 1.0.0-alpha.4 → 1.0.0-alpha.6

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 (114) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/AppendCondition.js +1 -3
  3. package/dist/cjs/AppendCondition.js.map +1 -1
  4. package/dist/cjs/AppendIsOwned.js +6 -6
  5. package/dist/cjs/AppendIsOwned.js.map +1 -1
  6. package/dist/cjs/ContractStore.js +2 -2
  7. package/dist/cjs/ContractStore.js.map +1 -1
  8. package/dist/cjs/DcbEventStore.js +1 -1
  9. package/dist/cjs/DcbEventStore.js.map +1 -1
  10. package/dist/cjs/Event.js +29 -13
  11. package/dist/cjs/Event.js.map +1 -1
  12. package/dist/cjs/Query.js +1 -1
  13. package/dist/cjs/Query.js.map +1 -1
  14. package/dist/cjs/SubscribeMachine.js +158 -67
  15. package/dist/cjs/SubscribeMachine.js.map +1 -1
  16. package/dist/cjs/inMemory.js +4 -4
  17. package/dist/cjs/inMemory.js.map +1 -1
  18. package/dist/cjs/retryOnConflict.js +4 -10
  19. package/dist/cjs/retryOnConflict.js.map +1 -1
  20. package/dist/cjs/testing.js +2 -2
  21. package/dist/cjs/testing.js.map +1 -1
  22. package/dist/{dts → dts-cjs}/AppendCondition.d.ts +5 -7
  23. package/dist/{dts → dts-cjs}/AppendCondition.d.ts.map +1 -1
  24. package/dist/{dts → dts-cjs}/AppendIsOwned.d.ts +6 -6
  25. package/dist/{dts → dts-cjs}/AppendIsOwned.d.ts.map +1 -1
  26. package/dist/{dts → dts-cjs}/ContractStore.d.ts +3 -2
  27. package/dist/dts-cjs/ContractStore.d.ts.map +1 -0
  28. package/dist/{dts → dts-cjs}/DcbEventStore.d.ts +2 -2
  29. package/dist/{dts → dts-cjs}/DcbEventStore.d.ts.map +1 -1
  30. package/dist/{dts → dts-cjs}/Event.d.ts +31 -20
  31. package/dist/dts-cjs/Event.d.ts.map +1 -0
  32. package/dist/{dts → dts-cjs}/Query.d.ts +5 -5
  33. package/dist/dts-cjs/SubscribeMachine.d.ts +289 -0
  34. package/dist/dts-cjs/SubscribeMachine.d.ts.map +1 -0
  35. package/dist/{dts → dts-cjs}/inMemory.d.ts.map +1 -1
  36. package/dist/{dts → dts-cjs}/index.d.ts +1 -1
  37. package/dist/dts-cjs/package.json +3 -0
  38. package/dist/{dts → dts-cjs}/retryOnConflict.d.ts +1 -7
  39. package/dist/dts-cjs/retryOnConflict.d.ts.map +1 -0
  40. package/dist/{dts → dts-cjs}/testing.d.ts +1 -1
  41. package/dist/dts-esm/AppendCondition.d.ts +21 -0
  42. package/dist/dts-esm/AppendCondition.d.ts.map +1 -0
  43. package/dist/dts-esm/AppendIsOwned.d.ts +78 -0
  44. package/dist/dts-esm/AppendIsOwned.d.ts.map +1 -0
  45. package/dist/dts-esm/ContractStore.d.ts +62 -0
  46. package/dist/dts-esm/ContractStore.d.ts.map +1 -0
  47. package/dist/dts-esm/DcbEventStore.d.ts +64 -0
  48. package/dist/dts-esm/DcbEventStore.d.ts.map +1 -0
  49. package/dist/dts-esm/Event.d.ts +174 -0
  50. package/dist/dts-esm/Event.d.ts.map +1 -0
  51. package/dist/dts-esm/Projection.d.ts +124 -0
  52. package/dist/dts-esm/Projection.d.ts.map +1 -0
  53. package/dist/dts-esm/Query.d.ts +180 -0
  54. package/dist/dts-esm/Query.d.ts.map +1 -0
  55. package/dist/dts-esm/SubscribeMachine.d.ts +289 -0
  56. package/dist/dts-esm/SubscribeMachine.d.ts.map +1 -0
  57. package/dist/dts-esm/errors.d.ts +17 -0
  58. package/dist/dts-esm/errors.d.ts.map +1 -0
  59. package/dist/dts-esm/inMemory.d.ts +76 -0
  60. package/dist/dts-esm/inMemory.d.ts.map +1 -0
  61. package/dist/dts-esm/index.d.ts +40 -0
  62. package/dist/dts-esm/index.d.ts.map +1 -0
  63. package/dist/dts-esm/package.json +3 -0
  64. package/dist/dts-esm/retryOnConflict.d.ts +64 -0
  65. package/dist/dts-esm/retryOnConflict.d.ts.map +1 -0
  66. package/dist/dts-esm/testing.d.ts +39 -0
  67. package/dist/dts-esm/testing.d.ts.map +1 -0
  68. package/dist/esm/AppendCondition.js +1 -3
  69. package/dist/esm/AppendCondition.js.map +1 -1
  70. package/dist/esm/AppendIsOwned.js +6 -6
  71. package/dist/esm/AppendIsOwned.js.map +1 -1
  72. package/dist/esm/ContractStore.js +2 -2
  73. package/dist/esm/ContractStore.js.map +1 -1
  74. package/dist/esm/DcbEventStore.js +1 -1
  75. package/dist/esm/DcbEventStore.js.map +1 -1
  76. package/dist/esm/Event.js +30 -14
  77. package/dist/esm/Event.js.map +1 -1
  78. package/dist/esm/Query.js +1 -1
  79. package/dist/esm/Query.js.map +1 -1
  80. package/dist/esm/SubscribeMachine.js +157 -67
  81. package/dist/esm/SubscribeMachine.js.map +1 -1
  82. package/dist/esm/inMemory.js +5 -5
  83. package/dist/esm/inMemory.js.map +1 -1
  84. package/dist/esm/index.js +1 -1
  85. package/dist/esm/retryOnConflict.js +4 -10
  86. package/dist/esm/retryOnConflict.js.map +1 -1
  87. package/dist/esm/testing.js +2 -2
  88. package/dist/esm/testing.js.map +1 -1
  89. package/package.json +21 -11
  90. package/src/AppendCondition.ts +1 -1
  91. package/src/AppendIsOwned.ts +7 -7
  92. package/src/ContractStore.ts +5 -4
  93. package/src/DcbEventStore.ts +3 -3
  94. package/src/Event.ts +49 -14
  95. package/src/Query.ts +1 -1
  96. package/src/SubscribeMachine.ts +278 -96
  97. package/src/inMemory.ts +6 -6
  98. package/src/index.ts +1 -1
  99. package/src/retryOnConflict.ts +6 -11
  100. package/src/testing.ts +2 -2
  101. package/testing/package.json +1 -1
  102. package/dist/dts/ContractStore.d.ts.map +0 -1
  103. package/dist/dts/Event.d.ts.map +0 -1
  104. package/dist/dts/SubscribeMachine.d.ts +0 -179
  105. package/dist/dts/SubscribeMachine.d.ts.map +0 -1
  106. package/dist/dts/retryOnConflict.d.ts.map +0 -1
  107. /package/dist/{dts → dts-cjs}/Projection.d.ts +0 -0
  108. /package/dist/{dts → dts-cjs}/Projection.d.ts.map +0 -0
  109. /package/dist/{dts → dts-cjs}/Query.d.ts.map +0 -0
  110. /package/dist/{dts → dts-cjs}/errors.d.ts +0 -0
  111. /package/dist/{dts → dts-cjs}/errors.d.ts.map +0 -0
  112. /package/dist/{dts → dts-cjs}/inMemory.d.ts +0 -0
  113. /package/dist/{dts → dts-cjs}/index.d.ts.map +0 -0
  114. /package/dist/{dts → dts-cjs}/testing.d.ts.map +0 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * `retryOnConflict` — the decider-level retry for `AppendConditionFailed`
3
+ * (ADR-0008).
4
+ *
5
+ * `append` surfaces a conflict as a SIGNAL only: a tagged `AppendConditionFailed`
6
+ * flattened to the tripped condition, carrying no conflicting position,
7
+ * deliberately so that a retry cannot resume from a stale conflict point. A
8
+ * correct DCB retry must therefore re-derive its append-condition lower bound
9
+ * from a FRESH READ to the current head — which means re-running the whole
10
+ * read-decide-append cycle, not re-submitting the same events.
11
+ *
12
+ * That is why this is a combinator over a command and NOT a `Layer` decorating
13
+ * `DcbEventStore.append`. A decorator sees only the events and the condition; it
14
+ * cannot re-read the log and it cannot re-decide, so it is STRUCTURALLY incapable
15
+ * of a correct DCB retry — the only thing it could do is re-submit against a
16
+ * condition that is already known to be stale, which either fails again forever
17
+ * or, worse, succeeds against a boundary the decision was never made under. No
18
+ * retrying `Layer` is shipped, and if a production command-runner service ever
19
+ * emerges, a `Layer` over THAT (a whole cycle) is the shape to add.
20
+ *
21
+ * It lives HERE, in `@kairos-es/core`, because conflict retry is a WRITE-side
22
+ * concern and core is where the write side is defined: core declares the `append`
23
+ * contract, defines the `AppendConditionFailed` this combinator matches, and
24
+ * already peers `effect` for `Schedule`, so the move costs nothing and adds no
25
+ * dependency in either direction. It shipped from `@kairos-es/read` first on the
26
+ * argument that it added no peer surface there either — true, but an argument for
27
+ * where it MAY live, not where it SHOULD. What that home actually cost was a
28
+ * write-only consumer having to depend on the READ package to retry its own
29
+ * appends, for a combinator that touches no projection, no checkpoint and no view
30
+ * (ADR-0008, homing amended).
31
+ *
32
+ * Core stays pure with it here. `Schedule`'s driver reads the time through
33
+ * `Clock.currentTimeMillis` and sleeps through `Clock.sleep`, both resolved from
34
+ * the fibre's default services, so `TestClock` still governs every delay; the
35
+ * jitter draws from `Random.next`, a default service on the same footing as the
36
+ * clock rather than a host `Math.random`. No `node:*`, no wall-clock reading, no
37
+ * ungoverned RNG.
38
+ */
39
+ import { Effect, Schedule } from 'effect';
40
+ import type { AppendConditionFailed } from './errors.js';
41
+ /**
42
+ * Retry `command` while — and only while — it fails `AppendConditionFailed`.
43
+ *
44
+ * `command` must be the WHOLE read-decide-append cycle (read a decision model to
45
+ * the current head, decide, append under that read's condition), because each
46
+ * retry's correctness comes from the re-read: the fresh read re-derives the
47
+ * append condition's `after` from the new head, so the retried append is judged
48
+ * against the boundary the retried decision was actually made under. Wrapping only
49
+ * the `append` re-submits a stale condition and is wrong.
50
+ *
51
+ * A non-conflict `E` is preserved on the error channel and escapes IMMEDIATELY
52
+ * with zero retries: the `while` predicate is false for it, so a domain rejection
53
+ * ("course is full") never pays a backoff and never retries into a decision the
54
+ * log has already refused. `A`, the non-conflict `E`, and `R` all pass through
55
+ * untouched.
56
+ *
57
+ * The predicate matches on the `_tag` rather than `instanceof`. The tag is the
58
+ * error's identity across module realms, and a published package ships dual
59
+ * ESM/CJS, so an `instanceof` check can see two distinct classes for the same
60
+ * error when a consumer's graph loads both builds — a conflict would then escape
61
+ * unretried and silently.
62
+ */
63
+ export declare const retryOnConflict: <A, E, R>(command: Effect.Effect<A, AppendConditionFailed | E, R>, schedule?: Schedule.Schedule<unknown, AppendConditionFailed | E, never, R>) => Effect.Effect<A, AppendConditionFailed | E, R>;
64
+ //# sourceMappingURL=retryOnConflict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryOnConflict.d.ts","sourceRoot":"","sources":["../../src/retryOnConflict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,MAAM,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAqBrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACrC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,CAAC,EACvD,WAAU,QAAQ,CAAC,QAAQ,CACzB,OAAO,EACP,qBAAqB,GAAG,CAAC,EACzB,KAAK,EACL,CAAC,CACgB,KAClB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,CAI5C,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Deterministic test-support utilities, shared across every kairos-es suite via
3
+ * the published `@kairos-es/core/testing` subpath.
4
+ *
5
+ * WHY a published subpath rather than a test-only package: three suites (core's
6
+ * own tests, the store contract suite, and the codec's `UuidTest` layer) each
7
+ * carried a byte-identical copy of the same counter-based uuid scheme and the
8
+ * `EPOCH` domain time. Copies drift. The one place every consumer already
9
+ * depends on is `@kairos-es/core`, so the single source of truth lives here as a
10
+ * *published* subpath — never a runtime dependency from a published package onto
11
+ * an unpublished/test-only one, which would create a packaging cycle.
12
+ *
13
+ * Everything here is PURE and DETERMINISTIC: no RNG, no wall-clock. That is the
14
+ * whole point — suites must produce the same bytes and positions on every run,
15
+ * so `data`/`uuid`/`occurredAt` never introduce nondeterminism into assertions.
16
+ */
17
+ import { DateTime } from 'effect';
18
+ /**
19
+ * A fixed domain time (`DateTime` at the Unix epoch) for test events.
20
+ *
21
+ * Ordering in the log is by `position` alone, so an event's `occurredAt` is
22
+ * informational; pinning it to the epoch keeps serialised bytes and comparisons
23
+ * stable across runs. Built via `DateTime.makeUnsafe(0)` (the value is a
24
+ * compile-time constant, not read from the host clock).
25
+ */
26
+ export declare const EPOCH: DateTime.Utc;
27
+ /**
28
+ * Build a fresh, deterministic uuid generator: a zero-based counter producing
29
+ * RFC-4122 v4-shaped ids `00000000-0000-4000-8000-<counter as 12 hex digits>`,
30
+ * starting at `...000000000000` and incrementing on each call.
31
+ *
32
+ * A *factory* (not a shared singleton) so each layer/suite instance owns its own
33
+ * counter and the sequence is repeatable in isolation — two independent suites
34
+ * do not interfere, yet each is stable on its own. No RNG: the ids are
35
+ * comparable and predictable, which is what assertions need, while still being
36
+ * distinct enough to tell events apart.
37
+ */
38
+ export declare const makeSequentialUuid: () => (() => string);
39
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,cAAyB,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,QAAO,CAAC,MAAM,MAAM,CAOlD,CAAA"}
@@ -12,8 +12,6 @@ import { Position } from "./Event.js";
12
12
  import { Query } from "./Query.js";
13
13
  export const AppendCondition = /*#__PURE__*/Schema.Struct({
14
14
  failIfEventsMatch: Query,
15
- after: /*#__PURE__*/Schema.optionalWith(Position, {
16
- exact: true
17
- })
15
+ after: /*#__PURE__*/Schema.optionalKey(Position)
18
16
  });
19
17
  //# sourceMappingURL=AppendCondition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppendCondition.js","names":["Schema","Position","Query","AppendCondition","Struct","failIfEventsMatch","after","optionalWith","exact"],"sources":["../../src/AppendCondition.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;AASA,SAASA,MAAM,QAAQ,QAAQ;AAC/B,SAASC,QAAQ,QAAQ,YAAS;AAClC,SAASC,KAAK,QAAQ,YAAS;AAE/B,OAAO,MAAMC,eAAe,gBAAGH,MAAM,CAACI,MAAM,CAAC;EAC3CC,iBAAiB,EAAEH,KAAK;EACxBI,KAAK,eAAEN,MAAM,CAACO,YAAY,CAACN,QAAQ,EAAE;IAAEO,KAAK,EAAE;EAAI,CAAE;CACrD,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"AppendCondition.js","names":["Schema","Position","Query","AppendCondition","Struct","failIfEventsMatch","after","optionalKey"],"sources":["../../src/AppendCondition.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;AASA,SAASA,MAAM,QAAQ,QAAQ;AAC/B,SAASC,QAAQ,QAAQ,YAAS;AAClC,SAASC,KAAK,QAAQ,YAAS;AAE/B,OAAO,MAAMC,eAAe,gBAAGH,MAAM,CAACI,MAAM,CAAC;EAC3CC,iBAAiB,EAAEH,KAAK;EACxBI,KAAK,eAAEN,MAAM,CAACO,WAAW,CAACN,QAAQ;CACnC,CAAC","ignoreList":[]}
@@ -30,15 +30,15 @@
30
30
  *
31
31
  * ## Present means refused, so a sanctioned append REMOVES the marker
32
32
  *
33
- * The check reads the tag through `Effect.serviceOption`, so its ABSENCE is the
33
+ * The check reads the service through `Effect.serviceOption`, so its ABSENCE is the
34
34
  * normal case and costs the `append` signature nothing — `DcbEventStore.append`
35
35
  * keeps `R = never` and no caller provides anything. Presence is what refuses.
36
36
  *
37
37
  * That shape decides how the two legitimate appends inside a bracket get through,
38
38
  * and there is only one route: run with the marker STRIPPED from the context
39
- * (`Effect.mapInputContext` over `Context.omit(AppendIsOwned)`). The bracket's own
39
+ * (`Effect.updateContext` over `Context.omit(AppendIsOwned)`). The bracket's own
40
40
  * closing append is issued outside the scope it provided the marker in, and the
41
- * codec's escape hatch strips it explicitly. Neither needs a second tag, a
41
+ * codec's escape hatch strips it explicitly. Neither needs a second service, a
42
42
  * sanctioning flag or a mutable cell, and there is no way to be exempt by
43
43
  * accident: an append is either lexically outside the marked region or it says in
44
44
  * as many words that it is removing the marker.
@@ -49,10 +49,10 @@ import { Context, Effect } from 'effect';
49
49
  * owns it.
50
50
  *
51
51
  * `by` is a human-readable owner name and exists for the defect message alone —
52
- * the refusal is decided by the tag's PRESENCE, never by this value, so nothing
52
+ * the refusal is decided by the service's PRESENCE, never by this value, so nothing
53
53
  * branches on it and no caller need agree on a vocabulary for it.
54
54
  */
55
- export class AppendIsOwned extends /*#__PURE__*/Context.Tag('@kairos-es/core/AppendIsOwned')() {}
55
+ export class AppendIsOwned extends /*#__PURE__*/Context.Service()('@kairos-es/core/AppendIsOwned') {}
56
56
  /**
57
57
  * Die if an append is already owned here; do nothing otherwise.
58
58
  *
@@ -65,7 +65,7 @@ export class AppendIsOwned extends /*#__PURE__*/Context.Tag('@kairos-es/core/App
65
65
  * its escape hatch for a deliberate second append — which is what makes a defect
66
66
  * affordable here.
67
67
  *
68
- * `Effect.serviceOption` is what keeps this free: it reads the tag if present and
68
+ * `Effect.serviceOption` is what keeps this free: it reads the service if present and
69
69
  * adds NOTHING to the requirement channel, so every existing append is unchanged
70
70
  * and unprovisioned.
71
71
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AppendIsOwned.js","names":["Context","Effect","AppendIsOwned","Tag","assertAppendNotOwned","flatMap","serviceOption","owner","_tag","void","die","Error","value","by"],"sources":["../../src/AppendIsOwned.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,SAASA,OAAO,EAAEC,MAAM,QAAQ,QAAQ;AAExC;;;;;;;;AAQA,OAAM,MAAOC,aAAc,sBAAQF,OAAO,CAACG,GAAG,CAAC,+BAA+B,CAAC,EAG5E;AAEH;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAMC,oBAAoB,gBAAwBH,MAAM,CAACI,OAAO,cACrEJ,MAAM,CAACK,aAAa,CAACJ,aAAa,CAAC,EAClCK,KAAK,IACJA,KAAK,CAACC,IAAI,KAAK,MAAM,GACjBP,MAAM,CAACQ,IAAI,GACXR,MAAM,CAACS,GAAG,CACR,IAAIC,KAAK,CACP,kEAAkEJ,KAAK,CAACK,KAAK,CAACC,EAAE,MAAM,GACpF,4EAA4E,GAC5E,0EAA0E,GAC1E,4EAA4E,GAC5E,0EAA0E,GAC1E,sEAAsE,CACzE,CACF,CACR","ignoreList":[]}
1
+ {"version":3,"file":"AppendIsOwned.js","names":["Context","Effect","AppendIsOwned","Service","assertAppendNotOwned","flatMap","serviceOption","owner","_tag","void","die","Error","value","by"],"sources":["../../src/AppendIsOwned.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,SAASA,OAAO,EAAEC,MAAM,QAAQ,QAAQ;AAExC;;;;;;;;AAQA,OAAM,MAAOC,aAAc,sBAAQF,OAAO,CAACG,OAAO,EAG/C,CAAC,+BAA+B,CAAC;AAEpC;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAMC,oBAAoB,gBAAwBH,MAAM,CAACI,OAAO,cACrEJ,MAAM,CAACK,aAAa,CAACJ,aAAa,CAAC,EAClCK,KAAK,IACJA,KAAK,CAACC,IAAI,KAAK,MAAM,GACjBP,MAAM,CAACQ,IAAI,GACXR,MAAM,CAACS,GAAG,CACR,IAAIC,KAAK,CACP,kEAAkEJ,KAAK,CAACK,KAAK,CAACC,EAAE,MAAM,GACpF,4EAA4E,GAC5E,0EAA0E,GAC1E,4EAA4E,GAC5E,0EAA0E,GAC1E,sEAAsE,CACzE,CACF,CACR","ignoreList":[]}
@@ -22,7 +22,7 @@ export const makeContractStore = raw => ({
22
22
  append: (events, condition) =>
23
23
  // The ownership refusal runs FIRST and sits OUTSIDE the suspend, because it is
24
24
  // the only one of append's checks that is EFFECTFUL: it consults a
25
- // `Context.Tag` rather than inspecting the arguments. `Effect.flatMap` over an
25
+ // `Context.Service` rather than inspecting the arguments. `Effect.flatMap` over an
26
26
  // already-lazy effect defers it exactly as the suspend defers the throws below,
27
27
  // so nothing runs at the call site either way; what it buys is that the
28
28
  // "you are inside a bracket" defect arrives before any argument is judged, which
@@ -77,7 +77,7 @@ export const makeContractStore = raw => ({
77
77
  // engine's channel simply answers false and dies as it should. It also
78
78
  // narrows the raw `AppendConditionFailed | E` to the contract's single
79
79
  // error, which is what keeps `append` at `E = AppendConditionFailed`.
80
- return Effect.catchAll(raw.append(events, condition), error => Predicate.isTagged('AppendConditionFailed')(error) ? Effect.fail(error) : Effect.die(error));
80
+ return Effect.catch(raw.append(events, condition), error => Predicate.isTagged('AppendConditionFailed')(error) ? Effect.fail(error) : Effect.die(error));
81
81
  })),
82
82
  subscribe: (query, after) =>
83
83
  // `Effect.sync` runs when the stream is executed; a throw from
@@ -1 +1 @@
1
- {"version":3,"file":"ContractStore.js","names":["Effect","Predicate","Schema","Stream","AppendCondition","assertAppendNotOwned","ReadLimit","assertServableQuery","decodeReadLimit","decodeUnknownSync","makeContractStore","raw","read","query","options","suspend","limit","undefined","orDie","append","events","condition","flatMap","length","Error","unknown","Object","keys","find","key","hasOwn","fields","JSON","stringify","failIfEventsMatch","catchAll","error","isTagged","fail","die","subscribe","after","unwrap","sync"],"sources":["../../src/ContractStore.ts"],"sourcesContent":[null],"mappings":"AAqCA,SAASA,MAAM,EAAEC,SAAS,EAAEC,MAAM,EAAEC,MAAM,QAAQ,QAAQ;AAC1D,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,oBAAoB,QAAQ,oBAAiB;AAGtD,SAASC,SAAS,QAAQ,YAAS;AAEnC,SAASC,mBAAmB,QAAoB,YAAS;AAEzD;AACA,MAAMC,eAAe,gBAAGN,MAAM,CAACO,iBAAiB,CAACH,SAAS,CAAC;AAwB3D;;;;AAIA,OAAO,MAAMI,iBAAiB,GAC5BC,GAAwB,KACG;EAC3BC,IAAI,EAAEA,CAACC,KAAK,EAAEC,OAAO,KACnBd,MAAM,CAACe,OAAO,CAAC,MAAK;IAClB;IACAR,mBAAmB,CAACM,KAAK,CAAC;IAC1B,IAAIC,OAAO,EAAEE,KAAK,KAAKC,SAAS,EAAE;MAChCT,eAAe,CAACM,OAAO,CAACE,KAAK,CAAC;IAChC;IACA;IACA,OAAOhB,MAAM,CAACkB,KAAK,CAACP,GAAG,CAACC,IAAI,CAACC,KAAK,EAAEC,OAAO,CAAC,CAAC;EAC/C,CAAC,CAAC;EAEJK,MAAM,EAAEA,CAACC,MAAM,EAAEC,SAAS;EACxB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACArB,MAAM,CAACsB,OAAO,CAACjB,oBAAoB,EAAE,MACnCL,MAAM,CAACe,OAAO,CAAC,MAAK;IAClB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAIK,MAAM,CAACG,MAAM,KAAK,CAAC,EAAE;MACvB,MAAM,IAAIC,KAAK,CACb,uEAAuE,GACrE,oEAAoE,GACpE,kEAAkE,CACrE;IACH;IACA;IACA;IACA;IACA;IACA;IACA,IAAIH,SAAS,KAAKJ,SAAS,EAAE;MAC3B,MAAMQ,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACN,SAAS,CAAC,CAACO,IAAI,CACxCC,GAAG,IAAK,CAACH,MAAM,CAACI,MAAM,CAAC1B,eAAe,CAAC2B,MAAM,EAAEF,GAAG,CAAC,CACrD;MACD,IAAIJ,OAAO,KAAKR,SAAS,EAAE;QACzB,MAAM,IAAIO,KAAK,CACb,kEAAkEQ,IAAI,CAACC,SAAS,CAACR,OAAO,CAAC,IAAI,GAC3F,mEAAmE,GACnE,yEAAyE,CAC5E;MACH;MACAlB,mBAAmB,CAACc,SAAS,CAACa,iBAAiB,CAAC;IAClD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,OAAOlC,MAAM,CAACmC,QAAQ,CAACxB,GAAG,CAACQ,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,EAAGe,KAAK,IAC1DnC,SAAS,CAACoC,QAAQ,CAAC,uBAAuB,CAAC,CAACD,KAAK,CAAC,GAC9CpC,MAAM,CAACsC,IAAI,CAACF,KAAK,CAAC,GAClBpC,MAAM,CAACuC,GAAG,CAACH,KAAK,CAAC,CACtB;EACH,CAAC,CAAC,CACH;EAEHI,SAAS,EAAEA,CAAC3B,KAAK,EAAE4B,KAAK;EACtB;EACA;EACA;EACA;EACAtC,MAAM,CAACuC,MAAM,CACX1C,MAAM,CAAC2C,IAAI,CAAC,MAAK;IACfpC,mBAAmB,CAACM,KAAK,CAAC;IAC1B,OAAOV,MAAM,CAACe,KAAK,CAACP,GAAG,CAAC6B,SAAS,CAAC3B,KAAK,EAAE4B,KAAK,CAAC,CAAC;EAClD,CAAC,CAAC;CAEP,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"ContractStore.js","names":["Effect","Predicate","Schema","Stream","AppendCondition","assertAppendNotOwned","ReadLimit","assertServableQuery","decodeReadLimit","decodeUnknownSync","makeContractStore","raw","read","query","options","suspend","limit","undefined","orDie","append","events","condition","flatMap","length","Error","unknown","Object","keys","find","key","hasOwn","fields","JSON","stringify","failIfEventsMatch","catch","error","isTagged","fail","die","subscribe","after","unwrap","sync"],"sources":["../../src/ContractStore.ts"],"sourcesContent":[null],"mappings":"AAsCA,SAASA,MAAM,EAAEC,SAAS,EAAEC,MAAM,EAAEC,MAAM,QAAQ,QAAQ;AAC1D,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,oBAAoB,QAAQ,oBAAiB;AAGtD,SAASC,SAAS,QAAQ,YAAS;AAEnC,SAASC,mBAAmB,QAAoB,YAAS;AAEzD;AACA,MAAMC,eAAe,gBAAGN,MAAM,CAACO,iBAAiB,CAACH,SAAS,CAAC;AAwB3D;;;;AAIA,OAAO,MAAMI,iBAAiB,GAC5BC,GAAwB,KACM;EAC9BC,IAAI,EAAEA,CAACC,KAAK,EAAEC,OAAO,KACnBd,MAAM,CAACe,OAAO,CAAC,MAAK;IAClB;IACAR,mBAAmB,CAACM,KAAK,CAAC;IAC1B,IAAIC,OAAO,EAAEE,KAAK,KAAKC,SAAS,EAAE;MAChCT,eAAe,CAACM,OAAO,CAACE,KAAK,CAAC;IAChC;IACA;IACA,OAAOhB,MAAM,CAACkB,KAAK,CAACP,GAAG,CAACC,IAAI,CAACC,KAAK,EAAEC,OAAO,CAAC,CAAC;EAC/C,CAAC,CAAC;EAEJK,MAAM,EAAEA,CAACC,MAAM,EAAEC,SAAS;EACxB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACArB,MAAM,CAACsB,OAAO,CAACjB,oBAAoB,EAAE,MACnCL,MAAM,CAACe,OAAO,CAAC,MAAK;IAClB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAIK,MAAM,CAACG,MAAM,KAAK,CAAC,EAAE;MACvB,MAAM,IAAIC,KAAK,CACb,uEAAuE,GACrE,oEAAoE,GACpE,kEAAkE,CACrE;IACH;IACA;IACA;IACA;IACA;IACA;IACA,IAAIH,SAAS,KAAKJ,SAAS,EAAE;MAC3B,MAAMQ,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACN,SAAS,CAAC,CAACO,IAAI,CACxCC,GAAG,IAAK,CAACH,MAAM,CAACI,MAAM,CAAC1B,eAAe,CAAC2B,MAAM,EAAEF,GAAG,CAAC,CACrD;MACD,IAAIJ,OAAO,KAAKR,SAAS,EAAE;QACzB,MAAM,IAAIO,KAAK,CACb,kEAAkEQ,IAAI,CAACC,SAAS,CAACR,OAAO,CAAC,IAAI,GAC3F,mEAAmE,GACnE,yEAAyE,CAC5E;MACH;MACAlB,mBAAmB,CAACc,SAAS,CAACa,iBAAiB,CAAC;IAClD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,OAAOlC,MAAM,CAACmC,KAAK,CAACxB,GAAG,CAACQ,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,EAAGe,KAAK,IACvDnC,SAAS,CAACoC,QAAQ,CAAC,uBAAuB,CAAC,CAACD,KAAK,CAAC,GAC9CpC,MAAM,CAACsC,IAAI,CAACF,KAAK,CAAC,GAClBpC,MAAM,CAACuC,GAAG,CAACH,KAAK,CAAC,CACtB;EACH,CAAC,CAAC,CACH;EAEHI,SAAS,EAAEA,CAAC3B,KAAK,EAAE4B,KAAK;EACtB;EACA;EACA;EACA;EACAtC,MAAM,CAACuC,MAAM,CACX1C,MAAM,CAAC2C,IAAI,CAAC,MAAK;IACfpC,mBAAmB,CAACM,KAAK,CAAC;IAC1B,OAAOV,MAAM,CAACe,KAAK,CAACP,GAAG,CAAC6B,SAAS,CAAC3B,KAAK,EAAE4B,KAAK,CAAC,CAAC;EAClD,CAAC,CAAC;CAEP,CAAC","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import { Context } from 'effect';
2
- export class DcbEventStore extends /*#__PURE__*/Context.Tag('@kairos-es/core/DcbEventStore')() {}
2
+ export class DcbEventStore extends /*#__PURE__*/Context.Service()('@kairos-es/core/DcbEventStore') {}
3
3
  //# sourceMappingURL=DcbEventStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DcbEventStore.js","names":["Context","DcbEventStore","Tag"],"sources":["../../src/DcbEventStore.ts"],"sourcesContent":[null],"mappings":"AAiBA,SAASA,OAAO,QAAQ,QAAQ;AA2BhC,OAAM,MAAOC,aAAc,sBAAQD,OAAO,CAACE,GAAG,CAAC,+BAA+B,CAAC,EAgC5E","ignoreList":[]}
1
+ {"version":3,"file":"DcbEventStore.js","names":["Context","DcbEventStore","Service"],"sources":["../../src/DcbEventStore.ts"],"sourcesContent":[null],"mappings":"AAiBA,SAASA,OAAO,QAAQ,QAAQ;AA2BhC,OAAM,MAAOC,aAAc,sBAAQD,OAAO,CAACE,OAAO,EAgC/C,CAAC,+BAA+B,CAAC","ignoreList":[]}
package/dist/esm/Event.js CHANGED
@@ -6,17 +6,34 @@
6
6
  * payloads into these bytes. Ordering is by `position` alone; `occurredAt` is
7
7
  * producer-supplied domain time and is informational only.
8
8
  */
9
- import { Schema } from 'effect';
9
+ import { BigInt as BigInt_, Effect, Option, Schema, SchemaIssue, SchemaTransformation } from 'effect';
10
10
  /**
11
11
  * A position in the single global event log: a branded, non-negative `bigint`.
12
12
  *
13
13
  * The log is 64-bit (`bigserial` in Postgres) and exceeds JS `number` safety at
14
14
  * 2^53, so positions are a `bigint`. They are compared, never arithmetic'd.
15
- * `Schema.BigInt` encodes to a decimal string (JSON-safe) and decodes to
15
+ * Encoded, a position is a decimal string (JSON-safe, `String(b)`); decoded, a
16
16
  * `bigint`. `0n` is the "before the first event" sentinel used by `after` and by
17
17
  * an empty store's head.
18
+ *
19
+ * The string-to-`bigint` step is hand-built rather than Effect 4's
20
+ * `Schema.BigIntFromString`, because that schema accepts only `^-?\d+$` and so
21
+ * refuses inputs the encoded side has always admitted — `" 5"`, `"+5"`,
22
+ * `"0x10"`. The decode here is the global `BigInt(s)` behind a blank-string
23
+ * refusal, which is `BigInt.fromString` and is exactly what Effect 3's
24
+ * `Schema.BigInt` ran, so a position string any earlier release decoded still
25
+ * decodes to the same value. The non-negative check then runs on the `bigint`,
26
+ * as it always did.
18
27
  */
19
- export const Position = /*#__PURE__*/Schema.BigInt.pipe(/*#__PURE__*/Schema.nonNegativeBigInt(), /*#__PURE__*/Schema.brand('Position'));
28
+ export const Position = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.decodeTo(Schema.BigInt, /*#__PURE__*/SchemaTransformation.transformEffect({
29
+ decode: (s, options) => Option.match(BigInt_.fromString(s), {
30
+ onNone: () => Effect.fail(new SchemaIssue.InvalidValue({
31
+ message: `Unable to decode ${JSON.stringify(s)} into a bigint`
32
+ }, s, options)),
33
+ onSome: Effect.succeed
34
+ }),
35
+ encode: b => Effect.succeed(String(b))
36
+ })), /*#__PURE__*/Schema.check(/*#__PURE__*/Schema.isGreaterThanOrEqualToBigInt(0n)), /*#__PURE__*/Schema.brand('Position'));
20
37
  /** The sentinel position meaning "before the first event". */
21
38
  export const ORIGIN = /*#__PURE__*/Position.make(0n);
22
39
  /**
@@ -25,9 +42,9 @@ export const ORIGIN = /*#__PURE__*/Position.make(0n);
25
42
  * event sourcing; a query matches an event when the event carries all of an
26
43
  * item's tags (superset test).
27
44
  */
28
- export const Tag = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.pattern(/^[^:]+:.+/, {
45
+ export const Tag = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.check(/*#__PURE__*/Schema.isPattern(/^[^:]+:.+/, {
29
46
  identifier: 'Tag'
30
- }), /*#__PURE__*/Schema.brand('Tag'));
47
+ })), /*#__PURE__*/Schema.brand('Tag'));
31
48
  export const tagIdentity = key => {
32
49
  if (key.length === 0 || key.includes(':')) {
33
50
  throw new Error(`tagIdentity: key must be non-empty and contain no ':' (got ${JSON.stringify(key)})`);
@@ -52,12 +69,12 @@ export const tagIdentity = key => {
52
69
  * error channel (`read` keeps `E = never`). Constructed at call sites with
53
70
  * `ReadLimit.make(n)`.
54
71
  */
55
- export const ReadLimit = /*#__PURE__*/Schema.Int.pipe(/*#__PURE__*/Schema.greaterThanOrEqualTo(0), /*#__PURE__*/Schema.brand('ReadLimit'));
72
+ export const ReadLimit = /*#__PURE__*/Schema.Int.pipe(/*#__PURE__*/Schema.check(/*#__PURE__*/Schema.isGreaterThanOrEqualTo(0)), /*#__PURE__*/Schema.brand('ReadLimit'));
56
73
  /**
57
74
  * An event type name, a branded non-empty string. Versioning is by convention
58
75
  * in the name (e.g. `course-registered.v2`); only non-emptiness is enforced.
59
76
  */
60
- export const EventType = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.nonEmptyString(), /*#__PURE__*/Schema.brand('EventType'));
77
+ export const EventType = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.check(/*#__PURE__*/Schema.isNonEmpty()), /*#__PURE__*/Schema.brand('EventType'));
61
78
  /**
62
79
  * An event's metadata: a flat bag of strings carrying the circumstances under
63
80
  * which the event was RECORDED, never anything the business asserts (ADR-0017).
@@ -107,10 +124,7 @@ export const EventType = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.non
107
124
  * alone: it would make an event the store accepted unreadable for ever, so a
108
125
  * value check belongs at write or nowhere.
109
126
  */
110
- export const Metadata = /*#__PURE__*/Schema.Record({
111
- key: Schema.String,
112
- value: Schema.String
113
- });
127
+ export const Metadata = /*#__PURE__*/Schema.Record(Schema.String, Schema.String);
114
128
  /**
115
129
  * An event as stored: an opaque payload plus its type, tags, a
116
130
  * producer-supplied `uuid`, producer-supplied `occurredAt` domain time, and its
@@ -118,6 +132,8 @@ export const Metadata = /*#__PURE__*/Schema.Record({
118
132
  *
119
133
  * `data` is `Uint8Array` (opaque bytes); the store does not interpret it.
120
134
  * `uuid` is producer-supplied to keep `core` deterministic (no RNG in core).
135
+ * It is checked for UUID SHAPE only (`isGUID`), not for a version nibble: a
136
+ * stricter check would refuse ids an existing log already holds.
121
137
  * `occurredAt` is informational only; ordering is by position alone.
122
138
  * `metadata` mirrors `tags` rather than `data`: REQUIRED, with an empty bag
123
139
  * legal. Required because an absent-versus-empty divergence between engines is
@@ -127,10 +143,10 @@ export const Metadata = /*#__PURE__*/Schema.Record({
127
143
  */
128
144
  export const DcbEvent = /*#__PURE__*/Schema.Struct({
129
145
  type: EventType,
130
- data: Schema.Uint8ArrayFromSelf,
146
+ data: Schema.Uint8Array,
131
147
  tags: /*#__PURE__*/Schema.Array(Tag),
132
- uuid: Schema.UUID,
133
- occurredAt: Schema.DateTimeUtc,
148
+ uuid: /*#__PURE__*/Schema.String.check(/*#__PURE__*/Schema.isGUID()),
149
+ occurredAt: Schema.DateTimeUtcFromString,
134
150
  metadata: Metadata
135
151
  });
136
152
  /** A persisted event: the event together with the position it was written at. */
@@ -1 +1 @@
1
- {"version":3,"file":"Event.js","names":["Schema","Position","BigInt","pipe","nonNegativeBigInt","brand","ORIGIN","make","Tag","String","pattern","identifier","tagIdentity","key","length","includes","Error","JSON","stringify","value","ReadLimit","Int","greaterThanOrEqualTo","EventType","nonEmptyString","Metadata","Record","DcbEvent","Struct","type","data","Uint8ArrayFromSelf","tags","Array","uuid","UUID","occurredAt","DateTimeUtc","metadata","SequencedEvent","event","position"],"sources":["../../src/Event.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;AAQA,SAASA,MAAM,QAAQ,QAAQ;AAE/B;;;;;;;;;AASA,OAAO,MAAMC,QAAQ,gBAAGD,MAAM,CAACE,MAAM,CAACC,IAAI,cACxCH,MAAM,CAACI,iBAAiB,EAAE,eAC1BJ,MAAM,CAACK,KAAK,CAAC,UAAU,CAAC,CACzB;AAGD;AACA,OAAO,MAAMC,MAAM,gBAAaL,QAAQ,CAACM,IAAI,CAAC,EAAE,CAAC;AAEjD;;;;;;AAMA,OAAO,MAAMC,GAAG,gBAAGR,MAAM,CAACS,MAAM,CAACN,IAAI,cACnCH,MAAM,CAACU,OAAO,CAAC,WAAW,EAAE;EAAEC,UAAU,EAAE;AAAK,CAAE,CAAC,eAClDX,MAAM,CAACK,KAAK,CAAC,KAAK,CAAC,CACpB;AA8BD,OAAO,MAAMO,WAAW,GAAIC,GAAW,IAAiB;EACtD,IAAIA,GAAG,CAACC,MAAM,KAAK,CAAC,IAAID,GAAG,CAACE,QAAQ,CAAC,GAAG,CAAC,EAAE;IACzC,MAAM,IAAIC,KAAK,CACb,8DAA8DC,IAAI,CAACC,SAAS,CAACL,GAAG,CAAC,GAAG,CACrF;EACH;EACA,OAAO;IACLA,GAAG;IACHN,IAAI,EAAGY,KAAK,IAAI;MACd,IAAIA,KAAK,CAACL,MAAM,KAAK,CAAC,IAAIK,KAAK,CAACJ,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC7C,MAAM,IAAIC,KAAK,CACb,eAAeC,IAAI,CAACC,SAAS,CAACL,GAAG,CAAC,2DAA2DI,IAAI,CAACC,SAAS,CAACC,KAAK,CAAC,GAAG,CACtH;MACH;MACA,OAAOX,GAAG,CAACD,IAAI,CAAC,GAAGM,GAAG,IAAIM,KAAK,EAAE,CAAC;IACpC;GACD;AACH,CAAC;AAED;;;;;;;;;;AAUA,OAAO,MAAMC,SAAS,gBAAGpB,MAAM,CAACqB,GAAG,CAAClB,IAAI,cACtCH,MAAM,CAACsB,oBAAoB,CAAC,CAAC,CAAC,eAC9BtB,MAAM,CAACK,KAAK,CAAC,WAAW,CAAC,CAC1B;AAGD;;;;AAIA,OAAO,MAAMkB,SAAS,gBAAGvB,MAAM,CAACS,MAAM,CAACN,IAAI,cACzCH,MAAM,CAACwB,cAAc,EAAE,eACvBxB,MAAM,CAACK,KAAK,CAAC,WAAW,CAAC,CAC1B;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,OAAO,MAAMoB,QAAQ,gBAAGzB,MAAM,CAAC0B,MAAM,CAAC;EACpCb,GAAG,EAAEb,MAAM,CAACS,MAAM;EAClBU,KAAK,EAAEnB,MAAM,CAACS;CACf,CAAC;AAGF;;;;;;;;;;;;;;AAcA,OAAO,MAAMkB,QAAQ,gBAAG3B,MAAM,CAAC4B,MAAM,CAAC;EACpCC,IAAI,EAAEN,SAAS;EACfO,IAAI,EAAE9B,MAAM,CAAC+B,kBAAkB;EAC/BC,IAAI,eAAEhC,MAAM,CAACiC,KAAK,CAACzB,GAAG,CAAC;EACvB0B,IAAI,EAAElC,MAAM,CAACmC,IAAI;EACjBC,UAAU,EAAEpC,MAAM,CAACqC,WAAW;EAC9BC,QAAQ,EAAEb;CACX,CAAC;AAGF;AACA,OAAO,MAAMc,cAAc,gBAAGvC,MAAM,CAAC4B,MAAM,CAAC;EAC1CY,KAAK,EAAEb,QAAQ;EACfc,QAAQ,EAAExC;CACX,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Event.js","names":["BigInt","BigInt_","Effect","Option","Schema","SchemaIssue","SchemaTransformation","Position","String","pipe","decodeTo","transformEffect","decode","s","options","match","fromString","onNone","fail","InvalidValue","message","JSON","stringify","onSome","succeed","encode","b","check","isGreaterThanOrEqualToBigInt","brand","ORIGIN","make","Tag","isPattern","identifier","tagIdentity","key","length","includes","Error","value","ReadLimit","Int","isGreaterThanOrEqualTo","EventType","isNonEmpty","Metadata","Record","DcbEvent","Struct","type","data","Uint8Array","tags","Array","uuid","isGUID","occurredAt","DateTimeUtcFromString","metadata","SequencedEvent","event","position"],"sources":["../../src/Event.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/Query.js CHANGED
@@ -225,7 +225,7 @@ export const classifyServableQuery = query => {
225
225
  }
226
226
  const only = query.items.length === 1 ? query.items[0] : undefined;
227
227
  if (only !== undefined && only.tags.length === 0) {
228
- return Arr.isNonEmptyReadonlyArray(only.types) ? {
228
+ return Arr.isReadonlyArrayNonEmpty(only.types) ? {
229
229
  kind: 'typeOnly',
230
230
  types: only.types
231
231
  } : {
@@ -1 +1 @@
1
- {"version":3,"file":"Query.js","names":["Array","Arr","Schema","EventType","Tag","QueryItem","Struct","types","tags","Query","items","matchesQueryItem","event","item","typeOk","length","includes","type","eventTags","Set","every","tag","has","matchesQuery","query","some","matchesSequenced","sequenced","assertServableQuery","fault","servableQueryFault","undefined","Error","unknownKeyFault","where","value","schemaFields","unknown","Object","keys","find","key","hasOwn","JSON","stringify","unknownQueryKeyFault","fields","reduce","unknownKey","classifyServableQuery","kind","only","isNonEmptyReadonlyArray","all","or"],"sources":["../../src/Query.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Query.js","names":["Array","Arr","Schema","EventType","Tag","QueryItem","Struct","types","tags","Query","items","matchesQueryItem","event","item","typeOk","length","includes","type","eventTags","Set","every","tag","has","matchesQuery","query","some","matchesSequenced","sequenced","assertServableQuery","fault","servableQueryFault","undefined","Error","unknownKeyFault","where","value","schemaFields","unknown","Object","keys","find","key","hasOwn","JSON","stringify","unknownQueryKeyFault","fields","reduce","unknownKey","classifyServableQuery","kind","only","isReadonlyArrayNonEmpty","all","or"],"sources":["../../src/Query.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}