@optimystic/db-core 0.22.0 → 0.24.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 (141) hide show
  1. package/README.md +336 -336
  2. package/dist/src/cluster/structs.d.ts +39 -1
  3. package/dist/src/cluster/structs.d.ts.map +1 -1
  4. package/dist/src/cluster/structs.js +24 -0
  5. package/dist/src/cluster/structs.js.map +1 -1
  6. package/dist/src/collection/collection.d.ts +17 -0
  7. package/dist/src/collection/collection.d.ts.map +1 -1
  8. package/dist/src/collection/collection.js +24 -2
  9. package/dist/src/collection/collection.js.map +1 -1
  10. package/dist/src/collections/tree/tree.d.ts +5 -0
  11. package/dist/src/collections/tree/tree.d.ts.map +1 -1
  12. package/dist/src/collections/tree/tree.js +7 -0
  13. package/dist/src/collections/tree/tree.js.map +1 -1
  14. package/dist/src/network/i-peer-network.d.ts +16 -0
  15. package/dist/src/network/i-peer-network.d.ts.map +1 -1
  16. package/dist/src/network/struct.d.ts +39 -2
  17. package/dist/src/network/struct.d.ts.map +1 -1
  18. package/dist/src/network/struct.js +18 -0
  19. package/dist/src/network/struct.js.map +1 -1
  20. package/dist/src/testing/test-transactor.d.ts +95 -8
  21. package/dist/src/testing/test-transactor.d.ts.map +1 -1
  22. package/dist/src/testing/test-transactor.js +121 -8
  23. package/dist/src/testing/test-transactor.js.map +1 -1
  24. package/dist/src/transaction/transaction.d.ts +1 -1
  25. package/dist/src/transaction/transaction.js +1 -1
  26. package/dist/src/transactor/network-transactor.d.ts.map +1 -1
  27. package/dist/src/transactor/network-transactor.js +48 -13
  28. package/dist/src/transactor/network-transactor.js.map +1 -1
  29. package/dist/src/transactor/transactor-source.d.ts.map +1 -1
  30. package/dist/src/transactor/transactor-source.js +25 -2
  31. package/dist/src/transactor/transactor-source.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/cluster/membership.ts +85 -85
  34. package/src/cluster/structs.ts +43 -4
  35. package/src/cohort-topic/addressing.ts +120 -120
  36. package/src/cohort-topic/antidos/bootstrap-evidence-envelope.ts +253 -253
  37. package/src/cohort-topic/antidos/bootstrap-evidence.ts +106 -106
  38. package/src/cohort-topic/antidos/index.ts +5 -5
  39. package/src/cohort-topic/antidos/rate-limiter.ts +210 -210
  40. package/src/cohort-topic/antidos/replay-guard.ts +146 -146
  41. package/src/cohort-topic/antidos/topic-budget.ts +160 -160
  42. package/src/cohort-topic/antiflood/index.ts +2 -2
  43. package/src/cohort-topic/antiflood/invariants.ts +108 -108
  44. package/src/cohort-topic/antiflood/jitter.ts +117 -117
  45. package/src/cohort-topic/coldstart.ts +237 -237
  46. package/src/cohort-topic/dmax.ts +88 -88
  47. package/src/cohort-topic/gossip/bus.ts +254 -254
  48. package/src/cohort-topic/gossip/index.ts +3 -3
  49. package/src/cohort-topic/gossip/records.ts +45 -45
  50. package/src/cohort-topic/gossip/view.ts +91 -91
  51. package/src/cohort-topic/index.ts +20 -20
  52. package/src/cohort-topic/load/barometer.ts +134 -134
  53. package/src/cohort-topic/load/index.ts +1 -1
  54. package/src/cohort-topic/member-engine.ts +430 -430
  55. package/src/cohort-topic/membership/index.ts +3 -3
  56. package/src/cohort-topic/membership/publisher.ts +163 -163
  57. package/src/cohort-topic/membership/source.ts +41 -41
  58. package/src/cohort-topic/membership/verifier.ts +461 -461
  59. package/src/cohort-topic/ports.ts +157 -157
  60. package/src/cohort-topic/promotion.ts +405 -405
  61. package/src/cohort-topic/registration/bytes.ts +37 -37
  62. package/src/cohort-topic/registration/handoff.ts +154 -154
  63. package/src/cohort-topic/registration/index.ts +6 -6
  64. package/src/cohort-topic/registration/renewal.ts +495 -495
  65. package/src/cohort-topic/registration/sharding.ts +61 -61
  66. package/src/cohort-topic/registration/store.ts +81 -81
  67. package/src/cohort-topic/registration/types.ts +91 -91
  68. package/src/cohort-topic/ring-hash.ts +50 -50
  69. package/src/cohort-topic/service.ts +416 -416
  70. package/src/cohort-topic/sig/index.ts +2 -2
  71. package/src/cohort-topic/sig/payloads.ts +59 -59
  72. package/src/cohort-topic/sig/threshold.ts +64 -64
  73. package/src/cohort-topic/tiers.ts +74 -74
  74. package/src/cohort-topic/traffic.ts +233 -233
  75. package/src/cohort-topic/walk.ts +326 -326
  76. package/src/cohort-topic/willingness.ts +237 -237
  77. package/src/cohort-topic/wire/codec.ts +216 -216
  78. package/src/cohort-topic/wire/index.ts +18 -18
  79. package/src/cohort-topic/wire/payloads.ts +126 -126
  80. package/src/cohort-topic/wire/primitives.ts +188 -188
  81. package/src/cohort-topic/wire/types.ts +475 -475
  82. package/src/cohort-topic/wire/validate.ts +512 -512
  83. package/src/collection/collection-type-registry.ts +37 -37
  84. package/src/collection/collection.ts +25 -2
  85. package/src/collections/diary/diary.ts +68 -68
  86. package/src/collections/tree/readme.md +4 -0
  87. package/src/collections/tree/tree.ts +320 -312
  88. package/src/matchmaking/capability-filter.ts +45 -45
  89. package/src/matchmaking/config.ts +98 -98
  90. package/src/matchmaking/index.ts +21 -21
  91. package/src/matchmaking/multi-cohort-seeker.ts +234 -234
  92. package/src/matchmaking/provider.ts +123 -123
  93. package/src/matchmaking/query-eval.ts +105 -105
  94. package/src/matchmaking/seeker-walk.ts +127 -127
  95. package/src/matchmaking/seeker.ts +86 -86
  96. package/src/matchmaking/topic-anchor.ts +90 -90
  97. package/src/matchmaking/voting-quorum.ts +394 -394
  98. package/src/matchmaking/wire.ts +603 -603
  99. package/src/network/i-peer-network.ts +17 -0
  100. package/src/network/stale-failure.ts +43 -43
  101. package/src/network/struct.ts +41 -2
  102. package/src/network/types.ts +37 -37
  103. package/src/reactivity/backfill.ts +220 -220
  104. package/src/reactivity/backpressure.ts +191 -191
  105. package/src/reactivity/checkpoint.ts +308 -308
  106. package/src/reactivity/config.ts +172 -172
  107. package/src/reactivity/dedupe.ts +132 -132
  108. package/src/reactivity/forwarder.ts +87 -87
  109. package/src/reactivity/index.ts +34 -34
  110. package/src/reactivity/notification.ts +123 -123
  111. package/src/reactivity/policy.ts +79 -79
  112. package/src/reactivity/push-state.ts +310 -310
  113. package/src/reactivity/recover.ts +153 -153
  114. package/src/reactivity/replay-buffer.ts +141 -141
  115. package/src/reactivity/resume.ts +549 -549
  116. package/src/reactivity/rotation.ts +415 -415
  117. package/src/reactivity/subscriber.ts +132 -132
  118. package/src/reactivity/subscription.ts +66 -66
  119. package/src/reactivity/topic-anchor.ts +71 -71
  120. package/src/reactivity/verify.ts +73 -73
  121. package/src/reactivity/wire-validate.ts +13 -13
  122. package/src/reactivity/wire.ts +224 -224
  123. package/src/testing/async-wait.ts +65 -65
  124. package/src/testing/index.ts +2 -2
  125. package/src/testing/test-transactor.ts +638 -502
  126. package/src/transaction/errors.ts +91 -91
  127. package/src/transaction/operations-hash.ts +196 -196
  128. package/src/transaction/read-dependency-collector.ts +78 -78
  129. package/src/transaction/transaction.ts +1 -1
  130. package/src/transactor/change-notifier.ts +80 -80
  131. package/src/transactor/index.ts +5 -5
  132. package/src/transactor/network-transactor.ts +49 -14
  133. package/src/transactor/transactor-source.ts +25 -2
  134. package/src/transform/atomic-proxy.ts +92 -92
  135. package/src/transform/helpers.ts +159 -159
  136. package/src/utility/backoff.ts +95 -95
  137. package/src/utility/batch-coordinator.ts +191 -191
  138. package/dist/src/transaction/context.d.ts +0 -60
  139. package/dist/src/transaction/context.d.ts.map +0 -1
  140. package/dist/src/transaction/context.js +0 -91
  141. package/dist/src/transaction/context.js.map +0 -1
@@ -1,65 +1,65 @@
1
- export interface WaitForOptions {
2
- // NOTE: default is tuned for in-process settles; integration callers over real libp2p
3
- // pass explicit 10k–90k bounds. A new caller that omits timeoutMs gets 2s — fine for
4
- // fast local conditions, but if a slow CI machine flakes on a legitimately-slow wait,
5
- // give that call site an explicit timeoutMs rather than raising this default.
6
- /** Upper bound before the poll gives up. Default 2_000. */
7
- timeoutMs?: number;
8
- /** Poll cadence. Default 10. */
9
- intervalMs?: number;
10
- /** Included in the thrown message so a failure says WHAT never became true. */
11
- description?: string;
12
- }
13
-
14
- /** Real-time sleep. Retain ONLY for residual cases a condition poll cannot cover. */
15
- export const delay = (ms: number): Promise<void> =>
16
- new Promise((resolve) => setTimeout(resolve, ms));
17
-
18
- /**
19
- * Poll `predicate` until it returns true or `timeoutMs` elapses; throws on timeout.
20
- * `predicate` may be sync or async; a thrown/rejected predicate propagates immediately.
21
- * `undefined` is treated as `false` (not ready yet).
22
- */
23
- export async function waitFor(
24
- predicate: () => boolean | Promise<boolean>,
25
- opts?: WaitForOptions,
26
- ): Promise<void> {
27
- const { timeoutMs = 2_000, intervalMs = 10, description } = opts ?? {};
28
- const deadline = Date.now() + timeoutMs;
29
- for (;;) {
30
- if (await predicate()) return;
31
- if (Date.now() >= deadline) {
32
- throw new Error(
33
- description
34
- ? `waitFor timed out after ${timeoutMs}ms: ${description}`
35
- : `waitFor timed out after ${timeoutMs}ms`,
36
- );
37
- }
38
- await delay(intervalMs);
39
- }
40
- }
41
-
42
- /**
43
- * Poll `fn` until it returns a non-undefined value or `timeoutMs` elapses; throws on timeout.
44
- * `undefined` means "not ready yet" — callers needing to wait for an actual `undefined`
45
- * should use `waitFor` on a separate flag.
46
- */
47
- export async function waitForValue<T>(
48
- fn: () => T | undefined | Promise<T | undefined>,
49
- opts?: WaitForOptions,
50
- ): Promise<T> {
51
- const { timeoutMs = 2_000, intervalMs = 10, description } = opts ?? {};
52
- const deadline = Date.now() + timeoutMs;
53
- for (;;) {
54
- const value = await fn();
55
- if (value !== undefined) return value;
56
- if (Date.now() >= deadline) {
57
- throw new Error(
58
- description
59
- ? `waitForValue timed out after ${timeoutMs}ms: ${description}`
60
- : `waitForValue timed out after ${timeoutMs}ms`,
61
- );
62
- }
63
- await delay(intervalMs);
64
- }
65
- }
1
+ export interface WaitForOptions {
2
+ // NOTE: default is tuned for in-process settles; integration callers over real libp2p
3
+ // pass explicit 10k–90k bounds. A new caller that omits timeoutMs gets 2s — fine for
4
+ // fast local conditions, but if a slow CI machine flakes on a legitimately-slow wait,
5
+ // give that call site an explicit timeoutMs rather than raising this default.
6
+ /** Upper bound before the poll gives up. Default 2_000. */
7
+ timeoutMs?: number;
8
+ /** Poll cadence. Default 10. */
9
+ intervalMs?: number;
10
+ /** Included in the thrown message so a failure says WHAT never became true. */
11
+ description?: string;
12
+ }
13
+
14
+ /** Real-time sleep. Retain ONLY for residual cases a condition poll cannot cover. */
15
+ export const delay = (ms: number): Promise<void> =>
16
+ new Promise((resolve) => setTimeout(resolve, ms));
17
+
18
+ /**
19
+ * Poll `predicate` until it returns true or `timeoutMs` elapses; throws on timeout.
20
+ * `predicate` may be sync or async; a thrown/rejected predicate propagates immediately.
21
+ * `undefined` is treated as `false` (not ready yet).
22
+ */
23
+ export async function waitFor(
24
+ predicate: () => boolean | Promise<boolean>,
25
+ opts?: WaitForOptions,
26
+ ): Promise<void> {
27
+ const { timeoutMs = 2_000, intervalMs = 10, description } = opts ?? {};
28
+ const deadline = Date.now() + timeoutMs;
29
+ for (;;) {
30
+ if (await predicate()) return;
31
+ if (Date.now() >= deadline) {
32
+ throw new Error(
33
+ description
34
+ ? `waitFor timed out after ${timeoutMs}ms: ${description}`
35
+ : `waitFor timed out after ${timeoutMs}ms`,
36
+ );
37
+ }
38
+ await delay(intervalMs);
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Poll `fn` until it returns a non-undefined value or `timeoutMs` elapses; throws on timeout.
44
+ * `undefined` means "not ready yet" — callers needing to wait for an actual `undefined`
45
+ * should use `waitFor` on a separate flag.
46
+ */
47
+ export async function waitForValue<T>(
48
+ fn: () => T | undefined | Promise<T | undefined>,
49
+ opts?: WaitForOptions,
50
+ ): Promise<T> {
51
+ const { timeoutMs = 2_000, intervalMs = 10, description } = opts ?? {};
52
+ const deadline = Date.now() + timeoutMs;
53
+ for (;;) {
54
+ const value = await fn();
55
+ if (value !== undefined) return value;
56
+ if (Date.now() >= deadline) {
57
+ throw new Error(
58
+ description
59
+ ? `waitForValue timed out after ${timeoutMs}ms: ${description}`
60
+ : `waitForValue timed out after ${timeoutMs}ms`,
61
+ );
62
+ }
63
+ await delay(intervalMs);
64
+ }
65
+ }
@@ -1,2 +1,2 @@
1
- export * from './test-transactor.js';
2
- export * from './async-wait.js';
1
+ export * from './test-transactor.js';
2
+ export * from './async-wait.js';