@optimystic/db-core 1.0.0-beta.2 → 1.0.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 (180) hide show
  1. package/dist/src/cluster/structs.d.ts +62 -16
  2. package/dist/src/cluster/structs.d.ts.map +1 -1
  3. package/dist/src/cluster/structs.js +5 -3
  4. package/dist/src/cluster/structs.js.map +1 -1
  5. package/dist/src/cohort-topic/antidos/bootstrap-evidence-envelope.d.ts +2 -1
  6. package/dist/src/cohort-topic/antidos/bootstrap-evidence-envelope.d.ts.map +1 -1
  7. package/dist/src/cohort-topic/antidos/bootstrap-evidence-envelope.js +10 -3
  8. package/dist/src/cohort-topic/antidos/bootstrap-evidence-envelope.js.map +1 -1
  9. package/dist/src/cohort-topic/wire/codec.d.ts.map +1 -1
  10. package/dist/src/cohort-topic/wire/codec.js +8 -2
  11. package/dist/src/cohort-topic/wire/codec.js.map +1 -1
  12. package/dist/src/collection/collection.d.ts +467 -35
  13. package/dist/src/collection/collection.d.ts.map +1 -1
  14. package/dist/src/collection/collection.js +879 -149
  15. package/dist/src/collection/collection.js.map +1 -1
  16. package/dist/src/collection/struct.d.ts +109 -4
  17. package/dist/src/collection/struct.d.ts.map +1 -1
  18. package/dist/src/collection/struct.js +88 -1
  19. package/dist/src/collection/struct.js.map +1 -1
  20. package/dist/src/collections/diary/diary.d.ts +6 -2
  21. package/dist/src/collections/diary/diary.d.ts.map +1 -1
  22. package/dist/src/collections/diary/diary.js +5 -2
  23. package/dist/src/collections/diary/diary.js.map +1 -1
  24. package/dist/src/collections/tree/struct.d.ts +192 -5
  25. package/dist/src/collections/tree/struct.d.ts.map +1 -1
  26. package/dist/src/collections/tree/struct.js +134 -0
  27. package/dist/src/collections/tree/struct.js.map +1 -1
  28. package/dist/src/collections/tree/tree.d.ts +13 -3
  29. package/dist/src/collections/tree/tree.d.ts.map +1 -1
  30. package/dist/src/collections/tree/tree.js +109 -6
  31. package/dist/src/collections/tree/tree.js.map +1 -1
  32. package/dist/src/index.d.ts +2 -1
  33. package/dist/src/index.d.ts.map +1 -1
  34. package/dist/src/index.js +2 -1
  35. package/dist/src/index.js.map +1 -1
  36. package/dist/src/logger-registry.d.ts +57 -0
  37. package/dist/src/logger-registry.d.ts.map +1 -0
  38. package/dist/src/logger-registry.js +168 -0
  39. package/dist/src/logger-registry.js.map +1 -0
  40. package/dist/src/logger.d.ts.map +1 -1
  41. package/dist/src/logger.js +3 -0
  42. package/dist/src/logger.js.map +1 -1
  43. package/dist/src/matchmaking/wire.d.ts.map +1 -1
  44. package/dist/src/matchmaking/wire.js +8 -2
  45. package/dist/src/matchmaking/wire.js.map +1 -1
  46. package/dist/src/network/durability.d.ts +45 -0
  47. package/dist/src/network/durability.d.ts.map +1 -0
  48. package/dist/src/network/durability.js +114 -0
  49. package/dist/src/network/durability.js.map +1 -0
  50. package/dist/src/network/i-key-network.d.ts +14 -6
  51. package/dist/src/network/i-key-network.d.ts.map +1 -1
  52. package/dist/src/network/index.d.ts +3 -0
  53. package/dist/src/network/index.d.ts.map +1 -1
  54. package/dist/src/network/index.js +3 -0
  55. package/dist/src/network/index.js.map +1 -1
  56. package/dist/src/network/lineage.d.ts +39 -0
  57. package/dist/src/network/lineage.d.ts.map +1 -0
  58. package/dist/src/network/lineage.js +61 -0
  59. package/dist/src/network/lineage.js.map +1 -0
  60. package/dist/src/network/routing-key.d.ts +24 -0
  61. package/dist/src/network/routing-key.d.ts.map +1 -0
  62. package/dist/src/network/routing-key.js +9 -0
  63. package/dist/src/network/routing-key.js.map +1 -0
  64. package/dist/src/network/stale-failure.d.ts +5 -1
  65. package/dist/src/network/stale-failure.d.ts.map +1 -1
  66. package/dist/src/network/stale-failure.js +5 -1
  67. package/dist/src/network/stale-failure.js.map +1 -1
  68. package/dist/src/network/struct.d.ts +151 -8
  69. package/dist/src/network/struct.d.ts.map +1 -1
  70. package/dist/src/network/struct.js.map +1 -1
  71. package/dist/src/reactivity/wire.d.ts.map +1 -1
  72. package/dist/src/reactivity/wire.js +8 -2
  73. package/dist/src/reactivity/wire.js.map +1 -1
  74. package/dist/src/testing/test-transactor.d.ts +64 -7
  75. package/dist/src/testing/test-transactor.d.ts.map +1 -1
  76. package/dist/src/testing/test-transactor.js +150 -23
  77. package/dist/src/testing/test-transactor.js.map +1 -1
  78. package/dist/src/transaction/coordinator.d.ts +141 -21
  79. package/dist/src/transaction/coordinator.d.ts.map +1 -1
  80. package/dist/src/transaction/coordinator.js +408 -122
  81. package/dist/src/transaction/coordinator.js.map +1 -1
  82. package/dist/src/transaction/errors.d.ts +39 -10
  83. package/dist/src/transaction/errors.d.ts.map +1 -1
  84. package/dist/src/transaction/errors.js +34 -9
  85. package/dist/src/transaction/errors.js.map +1 -1
  86. package/dist/src/transaction/index.d.ts +1 -0
  87. package/dist/src/transaction/index.d.ts.map +1 -1
  88. package/dist/src/transaction/index.js.map +1 -1
  89. package/dist/src/transactor/block-floors.d.ts +78 -0
  90. package/dist/src/transactor/block-floors.d.ts.map +1 -0
  91. package/dist/src/transactor/block-floors.js +62 -0
  92. package/dist/src/transactor/block-floors.js.map +1 -0
  93. package/dist/src/transactor/change-notifier.d.ts +43 -0
  94. package/dist/src/transactor/change-notifier.d.ts.map +1 -1
  95. package/dist/src/transactor/change-notifier.js +3 -0
  96. package/dist/src/transactor/change-notifier.js.map +1 -1
  97. package/dist/src/transactor/index.d.ts +1 -0
  98. package/dist/src/transactor/index.d.ts.map +1 -1
  99. package/dist/src/transactor/index.js +1 -0
  100. package/dist/src/transactor/index.js.map +1 -1
  101. package/dist/src/transactor/network-transactor.d.ts +43 -6
  102. package/dist/src/transactor/network-transactor.d.ts.map +1 -1
  103. package/dist/src/transactor/network-transactor.js +279 -81
  104. package/dist/src/transactor/network-transactor.js.map +1 -1
  105. package/dist/src/transactor/transactor-source.d.ts +94 -4
  106. package/dist/src/transactor/transactor-source.d.ts.map +1 -1
  107. package/dist/src/transactor/transactor-source.js +120 -42
  108. package/dist/src/transactor/transactor-source.js.map +1 -1
  109. package/dist/src/transactor/transactor.d.ts +14 -1
  110. package/dist/src/transactor/transactor.d.ts.map +1 -1
  111. package/dist/src/transform/atomic.d.ts.map +1 -1
  112. package/dist/src/transform/atomic.js +12 -9
  113. package/dist/src/transform/atomic.js.map +1 -1
  114. package/dist/src/transform/base-pins.d.ts +50 -17
  115. package/dist/src/transform/base-pins.d.ts.map +1 -1
  116. package/dist/src/transform/base-pins.js +58 -11
  117. package/dist/src/transform/base-pins.js.map +1 -1
  118. package/dist/src/transform/cache-source.d.ts +75 -11
  119. package/dist/src/transform/cache-source.d.ts.map +1 -1
  120. package/dist/src/transform/cache-source.js +162 -36
  121. package/dist/src/transform/cache-source.js.map +1 -1
  122. package/dist/src/transform/digest.d.ts +8 -1
  123. package/dist/src/transform/digest.d.ts.map +1 -1
  124. package/dist/src/transform/digest.js +19 -9
  125. package/dist/src/transform/digest.js.map +1 -1
  126. package/dist/src/transform/helpers.d.ts +6 -2
  127. package/dist/src/transform/helpers.d.ts.map +1 -1
  128. package/dist/src/transform/helpers.js +8 -3
  129. package/dist/src/transform/helpers.js.map +1 -1
  130. package/dist/src/transform/tracker.d.ts +94 -14
  131. package/dist/src/transform/tracker.d.ts.map +1 -1
  132. package/dist/src/transform/tracker.js +222 -68
  133. package/dist/src/transform/tracker.js.map +1 -1
  134. package/dist/src/utility/structural-equals.d.ts +38 -0
  135. package/dist/src/utility/structural-equals.d.ts.map +1 -0
  136. package/dist/src/utility/structural-equals.js +77 -0
  137. package/dist/src/utility/structural-equals.js.map +1 -0
  138. package/package.json +2 -2
  139. package/src/cluster/structs.ts +298 -255
  140. package/src/cohort-topic/antidos/bootstrap-evidence-envelope.ts +260 -253
  141. package/src/cohort-topic/wire/codec.ts +222 -216
  142. package/src/collection/collection.ts +996 -158
  143. package/src/collection/struct.ts +99 -4
  144. package/src/collections/diary/diary.ts +71 -68
  145. package/src/collections/tree/struct.ts +248 -26
  146. package/src/collections/tree/tree.ts +130 -9
  147. package/src/index.ts +2 -1
  148. package/src/logger-registry.ts +224 -0
  149. package/src/logger.ts +4 -0
  150. package/src/matchmaking/wire.ts +8 -2
  151. package/src/network/durability.ts +123 -0
  152. package/src/network/i-key-network.ts +60 -52
  153. package/src/network/index.ts +10 -7
  154. package/src/network/lineage.ts +80 -0
  155. package/src/network/routing-key.ts +27 -0
  156. package/src/network/stale-failure.ts +5 -1
  157. package/src/network/struct.ts +156 -8
  158. package/src/reactivity/wire.ts +230 -224
  159. package/src/testing/test-transactor.ts +152 -24
  160. package/src/transaction/coordinator.ts +470 -131
  161. package/src/transaction/errors.ts +34 -9
  162. package/src/transaction/index.ts +1 -0
  163. package/src/transactor/block-floors.ts +105 -0
  164. package/src/transactor/change-notifier.ts +129 -80
  165. package/src/transactor/index.ts +1 -0
  166. package/src/transactor/network-transactor.ts +297 -84
  167. package/src/transactor/transactor-source.ts +131 -42
  168. package/src/transactor/transactor.ts +13 -1
  169. package/src/transform/atomic.ts +25 -22
  170. package/src/transform/base-pins.ts +76 -18
  171. package/src/transform/cache-source.ts +327 -194
  172. package/src/transform/digest.ts +21 -10
  173. package/src/transform/helpers.ts +8 -3
  174. package/src/transform/tracker.ts +423 -270
  175. package/src/utility/structural-equals.ts +72 -0
  176. package/dist/src/utility/block-id-to-bytes.d.ts +0 -3
  177. package/dist/src/utility/block-id-to-bytes.d.ts.map +0 -1
  178. package/dist/src/utility/block-id-to-bytes.js +0 -7
  179. package/dist/src/utility/block-id-to-bytes.js.map +0 -1
  180. package/src/utility/block-id-to-bytes.ts +0 -8
package/dist/src/index.js CHANGED
@@ -6,6 +6,7 @@ export * from "./cohort-topic/index.js";
6
6
  export * from "./collection/index.js";
7
7
  export * from "./collections/index.js";
8
8
  export * from "./log/index.js";
9
+ export * from "./logger-registry.js";
9
10
  export * from "./matchmaking/index.js";
10
11
  export * from "./network/index.js";
11
12
  export * from "./reactivity/index.js";
@@ -17,9 +18,9 @@ export * from "./utility/groupby.js";
17
18
  export * from "./utility/hash-string.js";
18
19
  export * from "./utility/latches.js";
19
20
  export * from "./utility/nameof.js";
21
+ export * from "./utility/structural-equals.js";
20
22
  export * from "./utility/ensured.js";
21
23
  export * from "./utility/pending.js";
22
- export * from "./utility/block-id-to-bytes.js";
23
24
  export * from "./utility/lru-map.js";
24
25
  export * from "./utility/backoff.js";
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,57 @@
1
+ /** The slice of a `debug` module this registry drives. Structural, so db-core never type-imports a particular copy. */
2
+ export interface DebugModule {
3
+ enable(namespaces: string): void;
4
+ /** `debug` 4.x returns the namespaces that were active. */
5
+ disable(): string;
6
+ log: (...args: any[]) => any;
7
+ /**
8
+ * `debug`'s persistence hook, which `enable` calls with every new set: it writes
9
+ * `process.env.DEBUG` on Node and `localStorage.debug` in the browser build. Suppressed around
10
+ * every call this registry makes — see `withoutPersisting`. Optional so a test double need not
11
+ * supply one, and because `@types/debug` does not declare it.
12
+ */
13
+ save?: (namespaces: string) => void;
14
+ }
15
+ /** Where log lines go — the same shape as `debug`'s own `log` property. */
16
+ export type LogSink = (...args: unknown[]) => void;
17
+ export interface OptimysticLoggingOptions {
18
+ /**
19
+ * Where log lines go. Default: leave each copy's own sink (stderr on Node; `console.debug` in the
20
+ * browser/RN build). Pass one when the platform hides that sink (e.g. a device log filtered above
21
+ * debug level) or to collect a capture in memory.
22
+ */
23
+ log?: LogSink;
24
+ }
25
+ export interface OptimysticLoggingReport {
26
+ /** The Optimystic contribution, comma-joined — empty when the call enabled nothing. */
27
+ namespaces: string;
28
+ /** One entry per distinct `debug` copy: the packages that registered it. */
29
+ copies: string[][];
30
+ }
31
+ /**
32
+ * Called once from each package's `src/logger.ts` at module load, with the `debug` module that file
33
+ * imported. Idempotent per (owner, module); several owners sharing one copy are one entry.
34
+ *
35
+ * With no prior `enableOptimysticLogging` call this touches nothing, so `DEBUG=` on Node behaves
36
+ * exactly as it always has. After one, the arriving copy gets the same namespaces and sink at once
37
+ * (its own baseline captured first), silently — the enable call already confirmed.
38
+ */
39
+ export declare function registerDebugModule(owner: string, module: DebugModule): void;
40
+ /**
41
+ * Turn on the given namespaces on every registered `debug` copy, now and for copies that register
42
+ * later — the way to enable Optimystic logging on any runtime, React Native included, without
43
+ * environment variables.
44
+ *
45
+ * Adds to each copy's existing namespaces rather than replacing them, so an app's own channels
46
+ * sharing a copy stay on. A second call replaces the first call's namespaces and `log`, and does not
47
+ * accumulate. An empty list enables nothing of ours (and is not an error).
48
+ *
49
+ * Always writes one confirmation line — through `options.log` if given, else the first registered
50
+ * copy's sink, else `console.log` — because silence is exactly what cannot be told apart from "the
51
+ * code never ran". No line: this was not called, or the sink is swallowed. A line and no events: the
52
+ * code did not run, or the filter does not match. Events: it works.
53
+ */
54
+ export declare function enableOptimysticLogging(namespaces: string | readonly string[], options?: OptimysticLoggingOptions): OptimysticLoggingReport;
55
+ /** Undo it: every copy goes back to what it had enabled before the first enable call, and its original sink. Safe to call when nothing is enabled. */
56
+ export declare function disableOptimysticLogging(): void;
57
+ //# sourceMappingURL=logger-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-registry.d.ts","sourceRoot":"","sources":["../../src/logger-registry.ts"],"names":[],"mappings":"AAkBA,uHAAuH;AACvH,MAAM,WAAW,WAAW;IAC3B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,2DAA2D;IAC3D,OAAO,IAAI,MAAM,CAAC;IAClB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAEnD,MAAM,WAAW,wBAAwB;IACxC;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACvC,uFAAuF;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;CACnB;AA4GD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAU5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACtC,UAAU,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACtC,OAAO,CAAC,EAAE,wBAAwB,GAChC,uBAAuB,CAqBzB;AAED,sJAAsJ;AACtJ,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C"}
@@ -0,0 +1,168 @@
1
+ /*
2
+ * One switch for every `optimystic:*` log channel, whichever copy of `debug` it lives on.
3
+ *
4
+ * Why this exists. `debug` turns namespaces on only from `process.env.DEBUG` (Node) or
5
+ * `localStorage.debug` (its browser build, which is the one Metro bundles). React Native has
6
+ * neither, so every channel is silently off there — and an empty capture reads exactly like "that
7
+ * code never ran". Calling `debug.enable(...)` from app code does not fix it reliably either: it
8
+ * reaches only the copy of `debug` the caller resolved, and each Optimystic package may resolve its
9
+ * own (this repo's install, `nmHoistingLimits: workspaces`, gives every package a separate copy).
10
+ *
11
+ * So each package's `src/logger.ts` registers the copy IT imported, and `enableOptimysticLogging`
12
+ * drives all of them. Coverage follows from every package registering, not from how the install
13
+ * happened to be laid out. `docs/debugging.md` § "Turning logging on" is the user-facing statement.
14
+ *
15
+ * This module imports nothing. It sits below every logger in the package, and
16
+ * `test/barrel-import-cycle.spec.ts` holds registry modules to zero runtime imports.
17
+ */
18
+ /*
19
+ * NOTE: the state lives on `globalThis`, not in module scope, so a bundle that ends up with two
20
+ * copies of db-core still has ONE registry — a copy of a package that registered with the other
21
+ * db-core would otherwise be unreachable. The cost: two DIFFERENT db-core versions in one bundle
22
+ * share this object, so change its shape only additively.
23
+ */
24
+ const REGISTRY_KEY = Symbol.for('@optimystic/logger-registry');
25
+ function registry() {
26
+ const holder = globalThis;
27
+ return holder[REGISTRY_KEY] ??= { entries: [] };
28
+ }
29
+ /**
30
+ * Run `fn` with the copy's `save` hook stubbed out, so what we enable changes this process only.
31
+ *
32
+ * Without this, on Node every `enable` would write `process.env.DEBUG` — and a copy of `debug` that
33
+ * loads LATER reads that variable as its own starting set, so it would arrive with our namespaces
34
+ * baked into what `disableOptimysticLogging` later treats as its baseline (they could never be
35
+ * turned off on that copy). Capturing a baseline via `disable()` would also delete the user's
36
+ * `DEBUG`. In a browser, it would persist our namespaces into `localStorage.debug`, leaving logging
37
+ * on after a reload even without this call.
38
+ */
39
+ function withoutPersisting(module, fn) {
40
+ const save = module.save;
41
+ if (save)
42
+ module.save = () => { };
43
+ try {
44
+ fn();
45
+ }
46
+ finally {
47
+ if (save)
48
+ module.save = save;
49
+ }
50
+ }
51
+ /**
52
+ * Bring one copy in line with `pending`: its baseline (captured on first touch) plus ours, and
53
+ * `pending.log` or its original sink.
54
+ *
55
+ * NOTE: ours is appended, so a `-optimystic:…` skip already in the copy's baseline (say
56
+ * `DEBUG='*,-optimystic:*'`) still wins — `debug` checks skips first. That is the user's explicit
57
+ * exclusion, so it is left alone; if it ever confuses someone, have the confirmation line name the
58
+ * conflicting skip rather than overriding it.
59
+ *
60
+ * NOTE: the baseline is captured once per enable/disable cycle, so an app that calls
61
+ * `debug.enable(...)` on a shared copy while ours are on has that change overwritten by our next
62
+ * enable or disable. Fine while apps set their channels once at start-up; if one ever toggles them
63
+ * at run time, re-derive the baseline from the copy's live set minus our contribution instead.
64
+ */
65
+ function apply(entry, pending) {
66
+ const module = entry.module;
67
+ if (!entry.original) {
68
+ let namespaces = '';
69
+ withoutPersisting(module, () => { namespaces = module.disable(); });
70
+ entry.original = { namespaces, log: module.log };
71
+ }
72
+ const combined = [entry.original.namespaces, pending.namespaces].filter(Boolean).join(',');
73
+ withoutPersisting(module, () => module.enable(combined));
74
+ module.log = pending.log ?? entry.original.log;
75
+ }
76
+ function restore(entry) {
77
+ const original = entry.original;
78
+ if (!original)
79
+ return;
80
+ withoutPersisting(entry.module, () => entry.module.enable(original.namespaces));
81
+ entry.module.log = original.log;
82
+ entry.original = undefined;
83
+ }
84
+ /** Comma-join, trimming each entry and dropping empty ones. A string may already hold a list. */
85
+ function normalizeNamespaces(namespaces) {
86
+ const parts = typeof namespaces === 'string' ? [namespaces] : namespaces;
87
+ return parts
88
+ .flatMap(part => part.split(','))
89
+ .map(part => part.trim())
90
+ .filter(Boolean)
91
+ .join(',');
92
+ }
93
+ function confirmationLine(report) {
94
+ const what = report.namespaces ? `"${report.namespaces}"` : 'nothing (empty namespace list)';
95
+ const trailer = 'libp2p:* is separate, see docs/debugging.md';
96
+ if (report.copies.length === 0) {
97
+ return `optimystic logging on: ${what}; no debug copies registered yet, namespaces will apply as Optimystic packages load; ${trailer}`;
98
+ }
99
+ const count = report.copies.length;
100
+ const groups = report.copies.map(owners => owners.join(', ')).join(' | ');
101
+ return `optimystic logging on: ${what} across ${count} debug ${count === 1 ? 'copy' : 'copies'} [${groups}]; ${trailer}`;
102
+ }
103
+ /**
104
+ * Called once from each package's `src/logger.ts` at module load, with the `debug` module that file
105
+ * imported. Idempotent per (owner, module); several owners sharing one copy are one entry.
106
+ *
107
+ * With no prior `enableOptimysticLogging` call this touches nothing, so `DEBUG=` on Node behaves
108
+ * exactly as it always has. After one, the arriving copy gets the same namespaces and sink at once
109
+ * (its own baseline captured first), silently — the enable call already confirmed.
110
+ */
111
+ export function registerDebugModule(owner, module) {
112
+ const state = registry();
113
+ const existing = state.entries.find(entry => entry.module === module);
114
+ if (existing) {
115
+ if (!existing.owners.includes(owner))
116
+ existing.owners.push(owner);
117
+ return;
118
+ }
119
+ const entry = { module, owners: [owner] };
120
+ state.entries.push(entry);
121
+ if (state.pending)
122
+ apply(entry, state.pending);
123
+ }
124
+ /**
125
+ * Turn on the given namespaces on every registered `debug` copy, now and for copies that register
126
+ * later — the way to enable Optimystic logging on any runtime, React Native included, without
127
+ * environment variables.
128
+ *
129
+ * Adds to each copy's existing namespaces rather than replacing them, so an app's own channels
130
+ * sharing a copy stay on. A second call replaces the first call's namespaces and `log`, and does not
131
+ * accumulate. An empty list enables nothing of ours (and is not an error).
132
+ *
133
+ * Always writes one confirmation line — through `options.log` if given, else the first registered
134
+ * copy's sink, else `console.log` — because silence is exactly what cannot be told apart from "the
135
+ * code never ran". No line: this was not called, or the sink is swallowed. A line and no events: the
136
+ * code did not run, or the filter does not match. Events: it works.
137
+ */
138
+ export function enableOptimysticLogging(namespaces, options) {
139
+ const state = registry();
140
+ const pending = { namespaces: normalizeNamespaces(namespaces), log: options?.log };
141
+ state.pending = pending;
142
+ for (const entry of state.entries)
143
+ apply(entry, pending);
144
+ const report = {
145
+ namespaces: pending.namespaces,
146
+ copies: state.entries.map(entry => [...entry.owners]),
147
+ };
148
+ const line = confirmationLine(report);
149
+ const sink = options?.log ?? state.entries[0]?.module.log;
150
+ if (sink) {
151
+ sink(line);
152
+ }
153
+ else {
154
+ // No Optimystic package has loaded yet, so there is no debug sink to write through — and the
155
+ // confirmation line must never be skipped (see above).
156
+ // eslint-disable-next-line no-console
157
+ console.log(line);
158
+ }
159
+ return report;
160
+ }
161
+ /** Undo it: every copy goes back to what it had enabled before the first enable call, and its original sink. Safe to call when nothing is enabled. */
162
+ export function disableOptimysticLogging() {
163
+ const state = registry();
164
+ for (const entry of state.entries)
165
+ restore(entry);
166
+ state.pending = undefined;
167
+ }
168
+ //# sourceMappingURL=logger-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-registry.js","sourceRoot":"","sources":["../../src/logger-registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAEjE;AAED,eAAO,MAAM,OAAO,SACqE,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAEjE;AAED,eAAO,MAAM,OAAO,SACqE,CAAC"}
@@ -1,5 +1,8 @@
1
1
  import debug from 'debug';
2
+ import { registerDebugModule } from './logger-registry.js';
2
3
  const BASE_NAMESPACE = 'optimystic:db-core';
4
+ // So `enableOptimysticLogging` reaches this package's copy of `debug`, which may be no one else's.
5
+ registerDebugModule('db-core', debug);
3
6
  export function createLogger(subNamespace) {
4
7
  return debug(`${BASE_NAMESPACE}:${subNamespace}`);
5
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,cAAc,GAAG,oBAAoB,CAAA;AAE3C,MAAM,UAAU,YAAY,CAAC,YAAoB;IAChD,OAAO,KAAK,CAAC,GAAG,cAAc,IAAI,YAAY,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,WAAW;OACjD,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,cAAc,GAAG,oBAAoB,CAAA;AAE3C,mGAAmG;AACnG,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAErC,MAAM,UAAU,YAAY,CAAC,YAAoB;IAChD,OAAO,KAAK,CAAC,GAAG,cAAc,IAAI,YAAY,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,WAAW;OACjD,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/matchmaking/wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAwBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAKpE,0GAA0G;AAC1G,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,gBAAgB,CAAC;IACvB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,sGAAsG;AACtG,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAChC,qCAAqC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,qCAAqC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,4EAA4E;AAC5E,MAAM,WAAW,OAAO;IACvB,CAAC,EAAE,CAAC,CAAC;IACL,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,oGAAoG;AACpG,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,YAAY,EAAE,cAAc,CAAC;IAC7B,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC/B,cAAc;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC7B,cAAc;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,eAAe,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAChC,CAAC,EAAE,CAAC,CAAC;IACL,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,4FAA4F;IAC5F,SAAS,EAAE,MAAM,CAAC;IAClB,8FAA8F;IAC9F,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;CACd;AAOD,uFAAuF;AACvF,eAAO,MAAM,6BAA6B,QAAY,CAAC;AAiBvD,8FAA8F;AAC9F,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAkBjF;AAED,4FAA4F;AAC5F,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAoB7E;AAED,2GAA2G;AAC3G,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,UAAU,CAElF;AAED,oGAAoG;AACpG,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,GAAE,MAAsC,GAAG,oBAAoB,CAElI;AAED,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,CAE9E;AAED,kGAAkG;AAClG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,GAAE,MAAsC,GAAG,kBAAkB,CAE9H;AAED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,GAAE,MAAsC,GAAG,iBAAiB,CAU5H;AAsBD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAkBvD;AAsCD,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAwBjE;AAYD,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAoBzE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,GAAE,MAAkC,GAAG,UAAU,CAE3G;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAElF;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,GAAE,MAAkC,GAAG,UAAU,CAErH;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,YAAY,CAE5F;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,GAAE,MAAkC,GAAG,UAAU,CAE7H;AAED,+DAA+D;AAC/D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAEpG;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,UAAU,CAO/H;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAMvF;AAID;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC;AAEzG;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAQlH;AAED,4HAA4H;AAC5H,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAQ9G;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,UAAU,CAgB3F;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,UAAU,CAWlH"}
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/matchmaking/wire.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,10 @@ import { asObject, b64urlField, b64urlFixedLen, COORD_BYTES, failWire as fail, o
26
26
  import { QUERY_LIMIT_MAX } from "./config.js";
27
27
  // --- matchmaking-local wire state (generic validation primitives live in cohort-topic/wire/primitives.js) ---
28
28
  const utf8Encoder = new TextEncoder();
29
- const utf8Decoder = new TextDecoder("utf-8", { fatal: true });
29
+ // Built on first use, not at module load: Hermes (React Native) has no native `TextDecoder`, so a
30
+ // module-scope construction fails the import itself whenever it runs ahead of the host's polyfill.
31
+ let utf8DecoderInstance;
32
+ const utf8Decoder = () => utf8DecoderInstance ??= new TextDecoder("utf-8", { fatal: true });
30
33
  /** Ceiling for an opaque app payload (provider/seeker), guarding decode allocation. */
31
34
  export const DEFAULT_MAX_APP_PAYLOAD_BYTES = 64 * 1024;
32
35
  function validateCapabilityFilter(value, what) {
@@ -123,9 +126,12 @@ function parseJsonBytes(bytes, maxBytes, what) {
123
126
  if (bytes.length > maxBytes) {
124
127
  fail(`${what}: payload ${bytes.length} exceeds max ${maxBytes} bytes`);
125
128
  }
129
+ // Fetched outside the try, so a missing `TextDecoder` polyfill surfaces as itself rather than as
130
+ // "not valid UTF-8".
131
+ const decoder = utf8Decoder();
126
132
  let text;
127
133
  try {
128
- text = utf8Decoder.decode(bytes);
134
+ text = decoder.decode(bytes);
129
135
  }
130
136
  catch {
131
137
  fail(`${what}: payload is not valid UTF-8`);
@@ -1 +1 @@
1
- {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/matchmaking/wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACN,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,QAAQ,EACR,WAAW,EACX,cAAc,EACd,WAAW,EACX,QAAQ,IAAI,IAAI,EAChB,OAAO,EACP,eAAe,EACf,OAAO,EACP,eAAe,EACf,aAAa,EACb,SAAS,EACT,cAAc,EACd,SAAS,GACT,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAwI9C,+GAA+G;AAE/G,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9D,uFAAuF;AACvF,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD,SAAS,wBAAwB,CAAC,KAAc,EAAE,IAAY;IAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAqB;QAC7B,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;QACvC,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;KAC7C,CAAC;IACF,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,8EAA8E;AAE9E,8FAA8F;AAC9F,MAAM,UAAU,4BAA4B,CAAC,KAAc;IAC1D,MAAM,IAAI,GAAG,sBAAsB,CAAC;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,iDAAiD,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,GAAG,GAAyB;QACjC,IAAI,EAAE,gBAAgB;QACtB,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC;QACvD,cAAc,EAAE,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC;QAChD,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC;KAC5E,CAAC;IACF,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAChE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACxD,MAAM,IAAI,GAAG,oBAAoB,CAAC;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,IAAI,+CAA+C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAuB;QAC/B,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC;QAChD,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC;KAC5E,CAAC;IACF,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,wBAAwB,CAAC,OAA6B;IACrE,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,wBAAwB,CAAC,KAAiB,EAAE,WAAmB,6BAA6B;IAC3G,OAAO,4BAA4B,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,sBAAsB,CAAC,OAA2B;IACjE,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,sBAAsB,CAAC,KAAiB,EAAE,WAAmB,6BAA6B;IACzG,OAAO,0BAA0B,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC1F,CAAC;AAKD;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiB,EAAE,WAAmB,6BAA6B;IACxG,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACtC,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,cAAc,EAAE,CAAC;QACpC,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,mFAAmF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACxH,CAAC;AAED,6FAA6F;AAC7F,SAAS,cAAc,CAAC,KAAiB,EAAE,QAAgB,EAAE,IAAY;IACxE,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,IAAI,aAAa,KAAK,CAAC,MAAM,gBAAgB,QAAQ,QAAQ,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACR,IAAI,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACR,IAAI,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IAC5C,CAAC;AACF,CAAC;AAED,uDAAuD;AAEvD,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,KAAc;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC;IACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,MAAM,GAAG,GAAY;QACpB,CAAC,EAAE,CAAC;QACJ,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC;QACtE,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,CAAC;QACxD,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC;QACpD,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,CAAC;QAC5D,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC;QAChD,SAAS,EAAE,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC;QAClD,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC;KAC5E,CAAC;IACF,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,IAAY;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO;QACN,aAAa,EAAE,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC;QAC1D,cAAc,EAAE,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC;QAC5D,aAAa,EAAE,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC;QAC1D,kBAAkB,EAAE,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,CAAC;QACpE,gBAAgB,EAAE,eAAe,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,CAAC;KAChE,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC9C,MAAM,IAAI,GAAG,iBAAiB,CAAC;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO;QACN,aAAa,EAAE,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC;QACpD,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC;QACvD,cAAc,EAAE,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC;QAChD,UAAU,EAAE,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC;QACpD,eAAe,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC;KAC9F,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC5C,MAAM,IAAI,GAAG,eAAe,CAAC;IAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO;QACN,aAAa,EAAE,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC;QACpD,SAAS,EAAE,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC;QAChD,UAAU,EAAE,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC;QACpD,eAAe,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC;KAC9F,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,oBAAoB,CAAC,KAAc;IAClD,MAAM,IAAI,GAAG,cAAc,CAAC;IAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,MAAM,GAAG,GAAiB;QACzB,CAAC,EAAE,CAAC;QACJ,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC;QAC1C,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC;QAClG,YAAY,EAAE,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,eAAe,CAAC;QACjF,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC;KAC5E,CAAC;IACF,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,IAAI,mDAAmD,CAAC,CAAC;QAClE,CAAC;QACD,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,IAAI,iDAAiD,CAAC,CAAC;QAChE,CAAC;QACD,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAChD,MAAM,IAAI,GAAG,mBAAmB,CAAC;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO;QACN,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAC3C,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACtD,MAAM,IAAI,GAAG,kBAAkB,CAAC;IAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,IAAI,yCAAyC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,GAAG,IAAI,+CAA+C,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO;QACN,CAAC,EAAE,CAAC;QACJ,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC;QACtE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACpD,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC;QAC5E,OAAO,EAAG,OAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnF,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC;KAClG,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,kBAA0B,yBAAyB;IAC9F,OAAO,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AACnE,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,KAAiB,EAAE,eAAwB;IACxE,OAAO,eAAe,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,GAAiB,EAAE,kBAA0B,yBAAyB;IACxG,OAAO,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,kBAAkB,CAAC,KAAiB,EAAE,eAAwB;IAC7E,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,GAAqB,EAAE,kBAA0B,yBAAyB;IAChH,OAAO,mBAAmB,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AAC5E,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,sBAAsB,CAAC,KAAiB,EAAE,eAAwB;IACjF,OAAO,wBAAwB,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,uFAAuF;AAEvF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAmB,EAAE,YAA+B,EAAE,cAAsB;IAClH,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACxC,sBAAsB;QACtB,aAAa,CAAC,OAAO,CAAC;QACtB,CAAC,GAAG,YAAY,CAAC;QACjB,cAAc;KACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAmB,EAAE,SAAiB;IAC1E,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACxC,oBAAoB;QACpB,aAAa,CAAC,OAAO,CAAC;QACtB,SAAS;KACT,CAAC,CAAC,CAAC;AACL,CAAC;AAYD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmB,EAAE,KAAsB,EAAE,MAAwB;IACxG,IAAI,GAAe,CAAC;IACpB,IAAI,CAAC;QACJ,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;AACpH,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,iBAAiB,CAAC,OAAmB,EAAE,KAAoB,EAAE,MAAwB;IACpG,IAAI,GAAe,CAAC;IACpB,IAAI,CAAC;QACJ,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAsC;IAC9E,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACxC,cAAc;QACd,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,WAAW;QACjB,KAAK,CAAC,SAAS;QACf;YACC,KAAK,CAAC,YAAY,CAAC,aAAa;YAChC,KAAK,CAAC,YAAY,CAAC,cAAc;YACjC,KAAK,CAAC,YAAY,CAAC,aAAa;YAChC,KAAK,CAAC,YAAY,CAAC,kBAAkB;YACrC,KAAK,CAAC,YAAY,CAAC,gBAAgB;SACnC;QACD,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACnD,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;KACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AAEjG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC;IACV,CAAC;IACD,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAyD;IACrG,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;SACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;SAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACxC,kBAAkB;QAClB,QAAQ,CAAC,CAAC;QACV,QAAQ,CAAC,OAAO;QAChB,QAAQ,CAAC,WAAW;QACpB,OAAO;KACP,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/matchmaking/wire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { BlockId } from "../index.js";
2
+ import type { DurabilityQuorum, WriteDurability } from "./struct.js";
3
+ /**
4
+ * The ONLY "this write is completely saved" test. `quorum === 'full'` alone is not enough: a torn
5
+ * action can have a fully-held tail and blocks that were abandoned and cancelled (`torn`), and a
6
+ * consumer that compared the class by hand would show such a write as saved. Every place that wants
7
+ * to present a change as saved calls this rather than reading the fields.
8
+ */
9
+ export declare function isFullyDurable(d: WriteDurability): boolean;
10
+ /** Total order on quorum classes: unrouted < local < majority < full. */
11
+ export declare function durabilityRank(q: DurabilityQuorum): number;
12
+ /**
13
+ * Merge per-cohort reports into one action-level report: the weakest becomes the scalar answer and
14
+ * the rest become `otherCohorts`, so a consumer that reads only the scalar fields is reading the
15
+ * binding constraint. `torn` is the union across the inputs — an abandoned block is abandoned
16
+ * whichever cohort it ran on. Reports that already carry `otherCohorts` are flattened first, so
17
+ * merging a merge is the same as merging its inputs. Identical reports collapse to one: a commit
18
+ * sends the tail and the sweep as separate batches, so ONE cohort routinely answers twice for one
19
+ * action, and without this a healthy single-cohort commit would list its own cohort under
20
+ * `otherCohorts`.
21
+ * NOTE: only structurally identical reports collapse. One cohort answering differently for two
22
+ * batches (a member confirmed one block and not the other) appears twice, once per answer, which
23
+ * is the truthful shape. If a consumer ever needs exactly one entry per cohort, fold same-cohort
24
+ * reports here by unioning `unconfirmed`; do not dedupe by `cohortPeerIds` alone.
25
+ *
26
+ * THROWS on an empty input: an action always ran on at least one cohort, and fabricating an answer
27
+ * for one that ran on none is exactly the plain-success ambiguity the durability field removes.
28
+ */
29
+ export declare function mergeDurability(reports: readonly WriteDurability[]): WriteDurability;
30
+ /**
31
+ * Clamp an action-level report below `full` when the action abandoned blocks. A cohort can hold
32
+ * every block it was asked to commit and the action still be incomplete — the blocks the sweep
33
+ * never reached are on nobody. Never raises the class; a report already below `full` keeps it.
34
+ * Idempotent, and a no-op for an empty `torn`.
35
+ */
36
+ export declare function withTornBlocks(d: WriteDurability, torn: readonly BlockId[]): WriteDurability;
37
+ /** The single-node answer: this node holds it and knows nothing about a cohort beyond itself. */
38
+ export declare function localDurability(selfPeerId?: string): WriteDurability;
39
+ /**
40
+ * The no-cohort answer: this node holds it and could not establish where it belongs. Takes no
41
+ * reason on purpose: the producing site logs WHY the cohort did not resolve (`CohortResolution.reason`),
42
+ * and the result says only `unrouted`, so no consumer is tempted to branch on prose.
43
+ */
44
+ export declare function unroutedDurability(): WriteDurability;
45
+ //# sourceMappingURL=durability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durability.d.ts","sourceRoot":"","sources":["../../../src/network/durability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAE1D;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAO1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,eAAe,CAgBpF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,eAAe,CAQ5F;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAOpE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * The ONLY "this write is completely saved" test. `quorum === 'full'` alone is not enough: a torn
3
+ * action can have a fully-held tail and blocks that were abandoned and cancelled (`torn`), and a
4
+ * consumer that compared the class by hand would show such a write as saved. Every place that wants
5
+ * to present a change as saved calls this rather than reading the fields.
6
+ */
7
+ export function isFullyDurable(d) {
8
+ return d.quorum === 'full' && (d.torn === undefined || d.torn.length === 0);
9
+ }
10
+ /** Total order on quorum classes: unrouted < local < majority < full. */
11
+ export function durabilityRank(q) {
12
+ switch (q) {
13
+ case 'unrouted': return 0;
14
+ case 'local': return 1;
15
+ case 'majority': return 2;
16
+ case 'full': return 3;
17
+ }
18
+ }
19
+ /**
20
+ * Merge per-cohort reports into one action-level report: the weakest becomes the scalar answer and
21
+ * the rest become `otherCohorts`, so a consumer that reads only the scalar fields is reading the
22
+ * binding constraint. `torn` is the union across the inputs — an abandoned block is abandoned
23
+ * whichever cohort it ran on. Reports that already carry `otherCohorts` are flattened first, so
24
+ * merging a merge is the same as merging its inputs. Identical reports collapse to one: a commit
25
+ * sends the tail and the sweep as separate batches, so ONE cohort routinely answers twice for one
26
+ * action, and without this a healthy single-cohort commit would list its own cohort under
27
+ * `otherCohorts`.
28
+ * NOTE: only structurally identical reports collapse. One cohort answering differently for two
29
+ * batches (a member confirmed one block and not the other) appears twice, once per answer, which
30
+ * is the truthful shape. If a consumer ever needs exactly one entry per cohort, fold same-cohort
31
+ * reports here by unioning `unconfirmed`; do not dedupe by `cohortPeerIds` alone.
32
+ *
33
+ * THROWS on an empty input: an action always ran on at least one cohort, and fabricating an answer
34
+ * for one that ran on none is exactly the plain-success ambiguity the durability field removes.
35
+ */
36
+ export function mergeDurability(reports) {
37
+ const flat = distinctReports(reports.flatMap(flattenDurability));
38
+ if (flat.length === 0) {
39
+ throw new Error('mergeDurability: no durability reports to merge — an action always ran on at least one cohort');
40
+ }
41
+ const ranked = [...flat].sort((a, b) => durabilityRank(a.quorum) - durabilityRank(b.quorum));
42
+ const weakest = ranked[0];
43
+ const others = ranked.slice(1);
44
+ // Over the ORIGINAL reports: flattening strips `torn` (it is action-level), so the union must
45
+ // be taken before that or a torn input merges to an untorn answer.
46
+ const torn = unionTorn(reports);
47
+ return {
48
+ ...stripMergedFields(weakest),
49
+ ...(others.length === 0 ? {} : { otherCohorts: others.map(stripMergedFields) }),
50
+ ...(torn.length === 0 ? {} : { torn })
51
+ };
52
+ }
53
+ /**
54
+ * Clamp an action-level report below `full` when the action abandoned blocks. A cohort can hold
55
+ * every block it was asked to commit and the action still be incomplete — the blocks the sweep
56
+ * never reached are on nobody. Never raises the class; a report already below `full` keeps it.
57
+ * Idempotent, and a no-op for an empty `torn`.
58
+ */
59
+ export function withTornBlocks(d, torn) {
60
+ if (torn.length === 0)
61
+ return d;
62
+ const allTorn = Array.from(new Set([...(d.torn ?? []), ...torn]));
63
+ return {
64
+ ...d,
65
+ quorum: d.quorum === 'full' ? 'majority' : d.quorum,
66
+ torn: allTorn
67
+ };
68
+ }
69
+ /** The single-node answer: this node holds it and knows nothing about a cohort beyond itself. */
70
+ export function localDurability(selfPeerId) {
71
+ return {
72
+ quorum: 'local',
73
+ confirmed: 1,
74
+ cohort: 1,
75
+ ...(selfPeerId === undefined ? {} : { unconfirmed: [], cohortPeerIds: [selfPeerId] })
76
+ };
77
+ }
78
+ /**
79
+ * The no-cohort answer: this node holds it and could not establish where it belongs. Takes no
80
+ * reason on purpose: the producing site logs WHY the cohort did not resolve (`CohortResolution.reason`),
81
+ * and the result says only `unrouted`, so no consumer is tempted to branch on prose.
82
+ */
83
+ export function unroutedDurability() {
84
+ return { quorum: 'unrouted', confirmed: 1, cohort: 0 };
85
+ }
86
+ /** A merged report's own scalar view plus every `otherCohorts` entry, each as a standalone report. */
87
+ function flattenDurability(d) {
88
+ return [stripMergedFields(d), ...(d.otherCohorts ?? [])];
89
+ }
90
+ /** The per-cohort fields only — `otherCohorts` and `torn` are action-level and re-derived by the merge. */
91
+ function stripMergedFields(d) {
92
+ const { otherCohorts: _otherCohorts, torn: _torn, ...cohortReport } = d;
93
+ return cohortReport;
94
+ }
95
+ /**
96
+ * First occurrence of each structurally identical per-cohort report, input order kept. Peer lists
97
+ * compare as SETS: `findCluster` orders a cohort by routing distance to the block's key, so one
98
+ * cohort answering for two blocks lists the same members in two orders.
99
+ */
100
+ function distinctReports(reports) {
101
+ const seen = new Set();
102
+ const sorted = (ids) => ids === undefined ? null : [...ids].sort();
103
+ return reports.filter(r => {
104
+ const key = JSON.stringify([r.quorum, r.confirmed, r.cohort, sorted(r.unconfirmed), sorted(r.cohortPeerIds)]);
105
+ if (seen.has(key))
106
+ return false;
107
+ seen.add(key);
108
+ return true;
109
+ });
110
+ }
111
+ function unionTorn(reports) {
112
+ return Array.from(new Set(reports.flatMap(r => r.torn ?? [])));
113
+ }
114
+ //# sourceMappingURL=durability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durability.js","sourceRoot":"","sources":["../../../src/network/durability.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { PeerId } from "./types.js";
2
2
  import type { ClusterPeers } from "../cluster/structs.js";
3
+ import type { RoutingKey } from "./routing-key.js";
3
4
  /**
4
5
  * What a caller intends to do with the coordinator it is asking for.
5
6
  *
@@ -21,27 +22,34 @@ export type FindCoordinatorOptions = {
21
22
  */
22
23
  intent?: CoordinatorIntent;
23
24
  };
25
+ /**
26
+ * Maps a block to the peers responsible for it.
27
+ *
28
+ * Every key is a {@link RoutingKey} minted by `routingKeyForBlock`. Implementations hash it into a ring
29
+ * coordinate themselves, so a caller must never pre-hash: the writer and the servers agree on a
30
+ * block's cohort only because both hand over the same bytes and exactly one hash is applied to them.
31
+ */
24
32
  export type IKeyNetwork = {
25
33
  /**
26
34
  * Find a coordinator node responsible for a given key and establish connection
27
- * @param key The key to find coordinator for
35
+ * @param key The block's routing key
28
36
  * @returns Promise resolving to ID of coordinator node
29
37
  */
30
- findCoordinator(key: Uint8Array, options?: Partial<FindCoordinatorOptions>): Promise<PeerId>;
38
+ findCoordinator(key: RoutingKey, options?: Partial<FindCoordinatorOptions>): Promise<PeerId>;
31
39
  /**
32
40
  * Find the peers in the cluster responsible for a given key
33
- * @param key The key to find peers for
41
+ * @param key The block's routing key
34
42
  * @returns Promise resolving to the peers in the cluster
35
43
  */
36
- findCluster(key: Uint8Array): Promise<ClusterPeers>;
44
+ findCluster(key: RoutingKey): Promise<ClusterPeers>;
37
45
  /**
38
46
  * Optionally cache a resolved coordinator for a key, so a follow-up operation
39
47
  * (e.g. commit after pend) reuses the same peer. Implementations that don't
40
48
  * cache coordinators simply omit this. `ttlMs` bounds how long the hint lives.
41
- * @param key The key the coordinator was resolved for
49
+ * @param key The routing key the coordinator was resolved for — the same key a later `findCoordinator` looks it up by
42
50
  * @param peerId The coordinating peer
43
51
  * @param ttlMs Optional time-to-live for the cached hint, in ms
44
52
  */
45
- recordCoordinator?(key: Uint8Array, peerId: PeerId, ttlMs?: number): void;
53
+ recordCoordinator?(key: RoutingKey, peerId: PeerId, ttlMs?: number): void;
46
54
  };
47
55
  //# sourceMappingURL=i-key-network.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i-key-network.d.ts","sourceRoot":"","sources":["../../../src/network/i-key-network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG;IACpC,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG;IACzB;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7F;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEpD;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1E,CAAA"}
1
+ {"version":3,"file":"i-key-network.d.ts","sourceRoot":"","sources":["../../../src/network/i-key-network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG;IACpC,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAGF;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7F;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEpD;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1E,CAAA"}