@optimystic/db-core 0.14.0 → 0.16.2

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 (301) hide show
  1. package/dist/src/blocks/block-store.d.ts +18 -1
  2. package/dist/src/blocks/block-store.d.ts.map +1 -1
  3. package/dist/src/blocks/helpers.d.ts +2 -2
  4. package/dist/src/blocks/helpers.d.ts.map +1 -1
  5. package/dist/src/blocks/helpers.js +2 -2
  6. package/dist/src/blocks/helpers.js.map +1 -1
  7. package/dist/src/btree/btree.d.ts +27 -6
  8. package/dist/src/btree/btree.d.ts.map +1 -1
  9. package/dist/src/btree/btree.js +104 -61
  10. package/dist/src/btree/btree.js.map +1 -1
  11. package/dist/src/chain/chain.d.ts.map +1 -1
  12. package/dist/src/chain/chain.js +11 -1
  13. package/dist/src/chain/chain.js.map +1 -1
  14. package/dist/src/cluster/index.d.ts +1 -0
  15. package/dist/src/cluster/index.d.ts.map +1 -1
  16. package/dist/src/cluster/index.js +1 -0
  17. package/dist/src/cluster/index.js.map +1 -1
  18. package/dist/src/cluster/membership.d.ts +49 -0
  19. package/dist/src/cluster/membership.d.ts.map +1 -0
  20. package/dist/src/cluster/membership.js +75 -0
  21. package/dist/src/cluster/membership.js.map +1 -0
  22. package/dist/src/cluster/structs.d.ts +50 -1
  23. package/dist/src/cluster/structs.d.ts.map +1 -1
  24. package/dist/src/cluster/structs.js +9 -1
  25. package/dist/src/cluster/structs.js.map +1 -1
  26. package/dist/src/cohort-topic/addressing.d.ts +8 -2
  27. package/dist/src/cohort-topic/addressing.d.ts.map +1 -1
  28. package/dist/src/cohort-topic/addressing.js +11 -3
  29. package/dist/src/cohort-topic/addressing.js.map +1 -1
  30. package/dist/src/cohort-topic/antidos/bootstrap-evidence.d.ts +13 -7
  31. package/dist/src/cohort-topic/antidos/bootstrap-evidence.d.ts.map +1 -1
  32. package/dist/src/cohort-topic/antidos/bootstrap-evidence.js +17 -6
  33. package/dist/src/cohort-topic/antidos/bootstrap-evidence.js.map +1 -1
  34. package/dist/src/cohort-topic/antidos/replay-guard.d.ts +17 -0
  35. package/dist/src/cohort-topic/antidos/replay-guard.d.ts.map +1 -1
  36. package/dist/src/cohort-topic/antidos/replay-guard.js +33 -0
  37. package/dist/src/cohort-topic/antidos/replay-guard.js.map +1 -1
  38. package/dist/src/cohort-topic/antidos/topic-budget.d.ts +7 -0
  39. package/dist/src/cohort-topic/antidos/topic-budget.d.ts.map +1 -1
  40. package/dist/src/cohort-topic/antidos/topic-budget.js +8 -2
  41. package/dist/src/cohort-topic/antidos/topic-budget.js.map +1 -1
  42. package/dist/src/cohort-topic/coldstart.d.ts +34 -14
  43. package/dist/src/cohort-topic/coldstart.d.ts.map +1 -1
  44. package/dist/src/cohort-topic/coldstart.js +25 -11
  45. package/dist/src/cohort-topic/coldstart.js.map +1 -1
  46. package/dist/src/cohort-topic/gossip/bus.d.ts +12 -1
  47. package/dist/src/cohort-topic/gossip/bus.d.ts.map +1 -1
  48. package/dist/src/cohort-topic/gossip/bus.js +27 -1
  49. package/dist/src/cohort-topic/gossip/bus.js.map +1 -1
  50. package/dist/src/cohort-topic/gossip/view.d.ts +8 -0
  51. package/dist/src/cohort-topic/gossip/view.d.ts.map +1 -1
  52. package/dist/src/cohort-topic/gossip/view.js +17 -1
  53. package/dist/src/cohort-topic/gossip/view.js.map +1 -1
  54. package/dist/src/cohort-topic/member-engine.d.ts +10 -3
  55. package/dist/src/cohort-topic/member-engine.d.ts.map +1 -1
  56. package/dist/src/cohort-topic/member-engine.js +29 -14
  57. package/dist/src/cohort-topic/member-engine.js.map +1 -1
  58. package/dist/src/cohort-topic/membership/publisher.d.ts +14 -7
  59. package/dist/src/cohort-topic/membership/publisher.d.ts.map +1 -1
  60. package/dist/src/cohort-topic/membership/publisher.js +15 -27
  61. package/dist/src/cohort-topic/membership/publisher.js.map +1 -1
  62. package/dist/src/cohort-topic/membership/verifier.d.ts +35 -0
  63. package/dist/src/cohort-topic/membership/verifier.d.ts.map +1 -1
  64. package/dist/src/cohort-topic/membership/verifier.js +88 -3
  65. package/dist/src/cohort-topic/membership/verifier.js.map +1 -1
  66. package/dist/src/cohort-topic/promotion.d.ts +7 -0
  67. package/dist/src/cohort-topic/promotion.d.ts.map +1 -1
  68. package/dist/src/cohort-topic/promotion.js +16 -2
  69. package/dist/src/cohort-topic/promotion.js.map +1 -1
  70. package/dist/src/cohort-topic/registration/renewal.d.ts +18 -0
  71. package/dist/src/cohort-topic/registration/renewal.d.ts.map +1 -1
  72. package/dist/src/cohort-topic/registration/renewal.js +54 -0
  73. package/dist/src/cohort-topic/registration/renewal.js.map +1 -1
  74. package/dist/src/cohort-topic/registration/types.d.ts +12 -0
  75. package/dist/src/cohort-topic/registration/types.d.ts.map +1 -1
  76. package/dist/src/cohort-topic/registration/types.js +14 -0
  77. package/dist/src/cohort-topic/registration/types.js.map +1 -1
  78. package/dist/src/cohort-topic/service.d.ts +4 -3
  79. package/dist/src/cohort-topic/service.d.ts.map +1 -1
  80. package/dist/src/cohort-topic/service.js +38 -12
  81. package/dist/src/cohort-topic/service.js.map +1 -1
  82. package/dist/src/cohort-topic/sig/payloads.d.ts +23 -7
  83. package/dist/src/cohort-topic/sig/payloads.d.ts.map +1 -1
  84. package/dist/src/cohort-topic/sig/payloads.js +22 -6
  85. package/dist/src/cohort-topic/sig/payloads.js.map +1 -1
  86. package/dist/src/cohort-topic/traffic.d.ts +6 -0
  87. package/dist/src/cohort-topic/traffic.d.ts.map +1 -1
  88. package/dist/src/cohort-topic/traffic.js +16 -1
  89. package/dist/src/cohort-topic/traffic.js.map +1 -1
  90. package/dist/src/cohort-topic/walk.d.ts +22 -7
  91. package/dist/src/cohort-topic/walk.d.ts.map +1 -1
  92. package/dist/src/cohort-topic/walk.js +78 -18
  93. package/dist/src/cohort-topic/walk.js.map +1 -1
  94. package/dist/src/cohort-topic/wire/codec.d.ts +3 -1
  95. package/dist/src/cohort-topic/wire/codec.d.ts.map +1 -1
  96. package/dist/src/cohort-topic/wire/codec.js +7 -1
  97. package/dist/src/cohort-topic/wire/codec.js.map +1 -1
  98. package/dist/src/cohort-topic/wire/index.d.ts +1 -1
  99. package/dist/src/cohort-topic/wire/index.d.ts.map +1 -1
  100. package/dist/src/cohort-topic/wire/index.js +1 -1
  101. package/dist/src/cohort-topic/wire/index.js.map +1 -1
  102. package/dist/src/cohort-topic/wire/payloads.d.ts +5 -4
  103. package/dist/src/cohort-topic/wire/payloads.d.ts.map +1 -1
  104. package/dist/src/cohort-topic/wire/payloads.js +14 -5
  105. package/dist/src/cohort-topic/wire/payloads.js.map +1 -1
  106. package/dist/src/cohort-topic/wire/primitives.d.ts +65 -0
  107. package/dist/src/cohort-topic/wire/primitives.d.ts.map +1 -0
  108. package/dist/src/cohort-topic/wire/primitives.js +173 -0
  109. package/dist/src/cohort-topic/wire/primitives.js.map +1 -0
  110. package/dist/src/cohort-topic/wire/types.d.ts +132 -5
  111. package/dist/src/cohort-topic/wire/types.d.ts.map +1 -1
  112. package/dist/src/cohort-topic/wire/validate.d.ts +15 -5
  113. package/dist/src/cohort-topic/wire/validate.d.ts.map +1 -1
  114. package/dist/src/cohort-topic/wire/validate.js +146 -123
  115. package/dist/src/cohort-topic/wire/validate.js.map +1 -1
  116. package/dist/src/collection/collection.d.ts +23 -12
  117. package/dist/src/collection/collection.d.ts.map +1 -1
  118. package/dist/src/collection/collection.js +111 -35
  119. package/dist/src/collection/collection.js.map +1 -1
  120. package/dist/src/collection/struct.d.ts +37 -2
  121. package/dist/src/collection/struct.d.ts.map +1 -1
  122. package/dist/src/collection/struct.js +16 -1
  123. package/dist/src/collection/struct.js.map +1 -1
  124. package/dist/src/collections/tree/tree.d.ts +18 -1
  125. package/dist/src/collections/tree/tree.d.ts.map +1 -1
  126. package/dist/src/collections/tree/tree.js +36 -6
  127. package/dist/src/collections/tree/tree.js.map +1 -1
  128. package/dist/src/index.d.ts +1 -0
  129. package/dist/src/index.d.ts.map +1 -1
  130. package/dist/src/index.js +1 -0
  131. package/dist/src/index.js.map +1 -1
  132. package/dist/src/log/log.d.ts +26 -3
  133. package/dist/src/log/log.d.ts.map +1 -1
  134. package/dist/src/log/log.js +34 -7
  135. package/dist/src/log/log.js.map +1 -1
  136. package/dist/src/log/struct.d.ts +5 -4
  137. package/dist/src/log/struct.d.ts.map +1 -1
  138. package/dist/src/log/struct.js.map +1 -1
  139. package/dist/src/matchmaking/wire.d.ts +2 -1
  140. package/dist/src/matchmaking/wire.d.ts.map +1 -1
  141. package/dist/src/matchmaking/wire.js +13 -92
  142. package/dist/src/matchmaking/wire.js.map +1 -1
  143. package/dist/src/network/i-key-network.d.ts +9 -0
  144. package/dist/src/network/i-key-network.d.ts.map +1 -1
  145. package/dist/src/network/i-repo.d.ts +8 -0
  146. package/dist/src/network/i-repo.d.ts.map +1 -1
  147. package/dist/src/network/struct.d.ts +10 -0
  148. package/dist/src/network/struct.d.ts.map +1 -1
  149. package/dist/src/reactivity/push-state.d.ts.map +1 -1
  150. package/dist/src/reactivity/push-state.js +4 -33
  151. package/dist/src/reactivity/push-state.js.map +1 -1
  152. package/dist/src/reactivity/wire-validate.d.ts +7 -22
  153. package/dist/src/reactivity/wire-validate.d.ts.map +1 -1
  154. package/dist/src/reactivity/wire-validate.js +7 -73
  155. package/dist/src/reactivity/wire-validate.js.map +1 -1
  156. package/dist/src/reactivity/wire.js +3 -3
  157. package/dist/src/reactivity/wire.js.map +1 -1
  158. package/dist/src/testing/async-wait.d.ts +23 -0
  159. package/dist/src/testing/async-wait.d.ts.map +1 -0
  160. package/dist/src/testing/async-wait.js +42 -0
  161. package/dist/src/testing/async-wait.js.map +1 -0
  162. package/dist/src/testing/index.d.ts +3 -0
  163. package/dist/src/testing/index.d.ts.map +1 -0
  164. package/dist/src/testing/index.js +3 -0
  165. package/dist/src/testing/index.js.map +1 -0
  166. package/dist/src/testing/test-transactor.d.ts +44 -0
  167. package/dist/src/testing/test-transactor.d.ts.map +1 -0
  168. package/dist/src/testing/test-transactor.js +423 -0
  169. package/dist/src/testing/test-transactor.js.map +1 -0
  170. package/dist/src/transaction/actions-engine.d.ts +6 -3
  171. package/dist/src/transaction/actions-engine.d.ts.map +1 -1
  172. package/dist/src/transaction/actions-engine.js +8 -7
  173. package/dist/src/transaction/actions-engine.js.map +1 -1
  174. package/dist/src/transaction/coordinator.d.ts +43 -22
  175. package/dist/src/transaction/coordinator.d.ts.map +1 -1
  176. package/dist/src/transaction/coordinator.js +443 -178
  177. package/dist/src/transaction/coordinator.js.map +1 -1
  178. package/dist/src/transaction/errors.d.ts +82 -0
  179. package/dist/src/transaction/errors.d.ts.map +1 -0
  180. package/dist/src/transaction/errors.js +93 -0
  181. package/dist/src/transaction/errors.js.map +1 -0
  182. package/dist/src/transaction/index.d.ts +6 -3
  183. package/dist/src/transaction/index.d.ts.map +1 -1
  184. package/dist/src/transaction/index.js +4 -2
  185. package/dist/src/transaction/index.js.map +1 -1
  186. package/dist/src/transaction/operations-hash.d.ts +119 -0
  187. package/dist/src/transaction/operations-hash.d.ts.map +1 -0
  188. package/dist/src/transaction/operations-hash.js +180 -0
  189. package/dist/src/transaction/operations-hash.js.map +1 -0
  190. package/dist/src/transaction/read-dependency-collector.d.ts +43 -0
  191. package/dist/src/transaction/read-dependency-collector.d.ts.map +1 -0
  192. package/dist/src/transaction/read-dependency-collector.js +69 -0
  193. package/dist/src/transaction/read-dependency-collector.js.map +1 -0
  194. package/dist/src/transaction/session.d.ts +12 -3
  195. package/dist/src/transaction/session.d.ts.map +1 -1
  196. package/dist/src/transaction/session.js +35 -9
  197. package/dist/src/transaction/session.js.map +1 -1
  198. package/dist/src/transaction/transaction.d.ts +162 -1
  199. package/dist/src/transaction/transaction.d.ts.map +1 -1
  200. package/dist/src/transaction/transaction.js +85 -3
  201. package/dist/src/transaction/transaction.js.map +1 -1
  202. package/dist/src/transaction/validator.d.ts +3 -11
  203. package/dist/src/transaction/validator.d.ts.map +1 -1
  204. package/dist/src/transaction/validator.js +69 -28
  205. package/dist/src/transaction/validator.js.map +1 -1
  206. package/dist/src/transactor/network-transactor.d.ts +35 -0
  207. package/dist/src/transactor/network-transactor.d.ts.map +1 -1
  208. package/dist/src/transactor/network-transactor.js +146 -40
  209. package/dist/src/transactor/network-transactor.js.map +1 -1
  210. package/dist/src/transactor/transactor-source.d.ts +19 -5
  211. package/dist/src/transactor/transactor-source.d.ts.map +1 -1
  212. package/dist/src/transactor/transactor-source.js +43 -11
  213. package/dist/src/transactor/transactor-source.js.map +1 -1
  214. package/dist/src/transform/atomic-proxy.d.ts +35 -5
  215. package/dist/src/transform/atomic-proxy.d.ts.map +1 -1
  216. package/dist/src/transform/atomic-proxy.js +39 -7
  217. package/dist/src/transform/atomic-proxy.js.map +1 -1
  218. package/dist/src/transform/cache-source.d.ts +36 -5
  219. package/dist/src/transform/cache-source.d.ts.map +1 -1
  220. package/dist/src/transform/cache-source.js +84 -8
  221. package/dist/src/transform/cache-source.js.map +1 -1
  222. package/dist/src/transform/helpers.d.ts.map +1 -1
  223. package/dist/src/transform/helpers.js +8 -2
  224. package/dist/src/transform/helpers.js.map +1 -1
  225. package/dist/src/transform/tracker.d.ts +17 -2
  226. package/dist/src/transform/tracker.d.ts.map +1 -1
  227. package/dist/src/transform/tracker.js +66 -11
  228. package/dist/src/transform/tracker.js.map +1 -1
  229. package/dist/src/utility/backoff.d.ts +48 -0
  230. package/dist/src/utility/backoff.d.ts.map +1 -0
  231. package/dist/src/utility/backoff.js +60 -0
  232. package/dist/src/utility/backoff.js.map +1 -0
  233. package/dist/src/utility/pending.d.ts +1 -0
  234. package/dist/src/utility/pending.d.ts.map +1 -1
  235. package/dist/src/utility/pending.js +3 -1
  236. package/dist/src/utility/pending.js.map +1 -1
  237. package/package.json +4 -4
  238. package/src/blocks/block-store.ts +19 -1
  239. package/src/blocks/helpers.ts +3 -3
  240. package/src/btree/btree.ts +108 -63
  241. package/src/chain/chain.ts +11 -1
  242. package/src/cluster/index.ts +1 -0
  243. package/src/cluster/membership.ts +85 -0
  244. package/src/cluster/structs.ts +51 -1
  245. package/src/cohort-topic/addressing.ts +12 -4
  246. package/src/cohort-topic/antidos/bootstrap-evidence.ts +21 -9
  247. package/src/cohort-topic/antidos/replay-guard.ts +37 -0
  248. package/src/cohort-topic/antidos/topic-budget.ts +17 -2
  249. package/src/cohort-topic/coldstart.ts +48 -15
  250. package/src/cohort-topic/gossip/bus.ts +39 -2
  251. package/src/cohort-topic/gossip/view.ts +26 -1
  252. package/src/cohort-topic/member-engine.ts +36 -15
  253. package/src/cohort-topic/membership/publisher.ts +25 -33
  254. package/src/cohort-topic/membership/verifier.ts +119 -3
  255. package/src/cohort-topic/promotion.ts +23 -2
  256. package/src/cohort-topic/registration/renewal.ts +73 -1
  257. package/src/cohort-topic/registration/types.ts +15 -0
  258. package/src/cohort-topic/service.ts +41 -15
  259. package/src/cohort-topic/sig/payloads.ts +29 -9
  260. package/src/cohort-topic/traffic.ts +23 -1
  261. package/src/cohort-topic/walk.ts +95 -24
  262. package/src/cohort-topic/wire/codec.ts +12 -0
  263. package/src/cohort-topic/wire/index.ts +2 -0
  264. package/src/cohort-topic/wire/payloads.ts +14 -5
  265. package/src/cohort-topic/wire/primitives.ts +188 -0
  266. package/src/cohort-topic/wire/types.ts +136 -4
  267. package/src/cohort-topic/wire/validate.ts +168 -134
  268. package/src/collection/collection.ts +123 -40
  269. package/src/collection/struct.ts +44 -2
  270. package/src/collections/tree/tree.ts +42 -5
  271. package/src/index.ts +1 -0
  272. package/src/log/log.ts +37 -9
  273. package/src/log/struct.ts +5 -4
  274. package/src/matchmaking/wire.ts +25 -102
  275. package/src/network/i-key-network.ts +10 -0
  276. package/src/network/i-repo.ts +8 -0
  277. package/src/network/struct.ts +10 -0
  278. package/src/reactivity/push-state.ts +4 -37
  279. package/src/reactivity/wire-validate.ts +7 -81
  280. package/src/reactivity/wire.ts +3 -3
  281. package/src/testing/async-wait.ts +65 -0
  282. package/src/testing/index.ts +2 -0
  283. package/src/testing/test-transactor.ts +468 -0
  284. package/src/transaction/actions-engine.ts +8 -6
  285. package/src/transaction/coordinator.ts +498 -229
  286. package/src/transaction/errors.ts +91 -0
  287. package/src/transaction/index.ts +23 -3
  288. package/src/transaction/operations-hash.ts +196 -0
  289. package/src/transaction/read-dependency-collector.ts +78 -0
  290. package/src/transaction/session.ts +37 -9
  291. package/src/transaction/transaction.ts +211 -4
  292. package/src/transaction/validator.ts +73 -48
  293. package/src/transactor/network-transactor.ts +164 -49
  294. package/src/transactor/transactor-source.ts +47 -12
  295. package/src/transform/atomic-proxy.ts +92 -49
  296. package/src/transform/cache-source.ts +87 -9
  297. package/src/transform/helpers.ts +8 -2
  298. package/src/transform/tracker.ts +69 -11
  299. package/src/utility/backoff.ts +95 -0
  300. package/src/utility/pending.ts +3 -1
  301. package/src/transaction/context.ts +0 -103
@@ -7,121 +7,36 @@
7
7
  * as base64url, or an out-of-range numeric. Validators never return partial data — they either
8
8
  * narrow cleanly or throw.
9
9
  */
10
- import { b64urlToBytes } from "./codec.js";
11
- /** Thrown for any malformed, oversized, or structurally invalid cohort-topic frame. */
12
- export class CohortWireError extends Error {
13
- constructor(message) {
14
- super(message);
15
- this.name = "CohortWireError";
16
- }
17
- }
18
- function fail(message) {
19
- throw new CohortWireError(message);
20
- }
21
- /** Set `obj[key]` only when `value` is defined — keeps absent optionals off the decoded object. */
22
- function assignDefined(obj, key, value) {
23
- if (value !== undefined) {
24
- obj[key] = value;
25
- }
26
- }
27
- function asObject(value, what) {
28
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
29
- fail(`${what}: expected an object`);
30
- }
31
- return value;
32
- }
33
- function requireV1(obj, what) {
34
- if (obj["v"] !== 1) {
35
- fail(`${what}: expected v === 1, got ${JSON.stringify(obj["v"])}`);
36
- }
37
- }
38
- function reqString(obj, key, what) {
39
- const value = obj[key];
40
- if (typeof value !== "string") {
41
- fail(`${what}: field "${key}" must be a string`);
42
- }
43
- return value;
44
- }
45
- function optString(obj, key, what) {
46
- const value = obj[key];
47
- if (value === undefined) {
48
- return undefined;
49
- }
50
- if (typeof value !== "string") {
51
- fail(`${what}: field "${key}" must be a string when present`);
52
- }
53
- return value;
54
- }
55
- function reqFiniteNumber(obj, key, what) {
56
- const value = obj[key];
57
- if (typeof value !== "number" || !Number.isFinite(value)) {
58
- fail(`${what}: field "${key}" must be a finite number`);
59
- }
60
- return value;
61
- }
62
- function optFiniteNumber(obj, key, what) {
63
- const value = obj[key];
64
- if (value === undefined) {
65
- return undefined;
66
- }
67
- if (typeof value !== "number" || !Number.isFinite(value)) {
68
- fail(`${what}: field "${key}" must be a finite number when present`);
69
- }
70
- return value;
71
- }
72
- function reqBool(obj, key, what) {
73
- const value = obj[key];
74
- if (typeof value !== "boolean") {
75
- fail(`${what}: field "${key}" must be a boolean`);
76
- }
77
- return value;
78
- }
79
- function optBool(obj, key, what) {
80
- const value = obj[key];
81
- if (value === undefined) {
82
- return undefined;
83
- }
84
- if (typeof value !== "boolean") {
85
- fail(`${what}: field "${key}" must be a boolean when present`);
86
- }
87
- return value;
88
- }
89
- function reqStringArray(obj, key, what) {
90
- const value = obj[key];
91
- if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) {
92
- fail(`${what}: field "${key}" must be an array of strings`);
93
- }
94
- return value;
95
- }
96
- function optStringArray(obj, key, what) {
97
- if (obj[key] === undefined) {
98
- return undefined;
99
- }
100
- return reqStringArray(obj, key, what);
101
- }
10
+ import { DEFAULT_D_MAX_CAP } from "../dmax.js";
11
+ import { assignDefined, asObject, b64urlField, b64urlFixedLen, failWire as fail, optBool, optFiniteNumber, optString, optStringArray, reqBool, reqEnum, reqFiniteNumber, reqString, reqStringArray, requireV1, } from "./primitives.js";
12
+ // The generic structural-validation primitives (`fail`/`asObject`/`req*`/`opt*`/`b64url*`/`reqEnum`/…)
13
+ // live in ./primitives.js and are imported above; only the cohort-topic domain validators and the
14
+ // tier-semantics helpers below stay local. `CohortWireError` is re-exported here so existing importers
15
+ // of this module (codec, wire/index, matchmaking, reactivity) are unaffected by the move.
16
+ export { CohortWireError } from "./primitives.js";
102
17
  function tier(value, what) {
103
18
  if (!Number.isInteger(value) || value < 0 || value > 3) {
104
19
  fail(`${what}: tier must be an integer in 0..3, got ${value}`);
105
20
  }
106
21
  return value;
107
22
  }
108
- /** Assert a base64url string decodes cleanly; returns it unchanged. */
109
- function b64urlField(value, key, what) {
110
- try {
111
- b64urlToBytes(value);
112
- }
113
- catch {
114
- fail(`${what}: field "${key}" is not valid base64url`);
115
- }
116
- return value;
117
- }
118
- function reqEnum(obj, key, allowed, what) {
119
- const value = obj[key];
120
- if (typeof value !== "string" || !allowed.includes(value)) {
121
- fail(`${what}: field "${key}" must be one of ${allowed.join(" | ")}`);
23
+ /**
24
+ * Validate a `treeTier` (the walk-toward-root start tier `d` a register/redirect targets): an integer in
25
+ * `0..DEFAULT_D_MAX_CAP`. `d_max_cap` (60) is the substrate's own ceiling on useful walk depth, so a
26
+ * `treeTier` above it cannot correspond to a real walk position. Rejecting here keeps an out-of-range value
27
+ * from reaching `addressing.coord()` downstream — whose `coordD` throws a raw `RangeError` for a
28
+ * non-integer / negative / `> 255` tier, an unclassified crash rather than a clean malformed-frame rejection.
29
+ */
30
+ function treeTier(value, what) {
31
+ if (!Number.isInteger(value) || value < 0 || value > DEFAULT_D_MAX_CAP) {
32
+ fail(`${what}: treeTier must be an integer in 0..${DEFAULT_D_MAX_CAP}, got ${value}`);
122
33
  }
123
34
  return value;
124
35
  }
36
+ /** Ring-coord / topic-id / epoch byte width (SHA-256 truncated to the ring width). */
37
+ const COORD_BYTES = 32;
38
+ /** Correlation-id byte width (a 16-byte nonce minted per walk probe / renew). */
39
+ const CORRELATION_BYTES = 16;
125
40
  const REGISTER_RESULTS = [
126
41
  "accepted",
127
42
  "no_state",
@@ -135,13 +50,13 @@ export function validateRegisterV1(value) {
135
50
  requireV1(obj, what);
136
51
  const out = {
137
52
  v: 1,
138
- topicId: b64urlField(reqString(obj, "topicId", what), "topicId", what),
53
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
139
54
  tier: tier(reqFiniteNumber(obj, "tier", what), what),
140
- treeTier: reqFiniteNumber(obj, "treeTier", what),
55
+ treeTier: treeTier(reqFiniteNumber(obj, "treeTier", what), what),
141
56
  participantCoord: b64urlField(reqString(obj, "participantCoord", what), "participantCoord", what),
142
57
  ttl: reqFiniteNumber(obj, "ttl", what),
143
58
  timestamp: reqFiniteNumber(obj, "timestamp", what),
144
- correlationId: b64urlField(reqString(obj, "correlationId", what), "correlationId", what),
59
+ correlationId: b64urlFixedLen(reqString(obj, "correlationId", what), "correlationId", CORRELATION_BYTES, what),
145
60
  signature: b64urlField(reqString(obj, "signature", what), "signature", what),
146
61
  };
147
62
  const bootstrap = optBool(obj, "bootstrap", what);
@@ -152,6 +67,21 @@ export function validateRegisterV1(value) {
152
67
  if (probe !== undefined) {
153
68
  out.probe = probe;
154
69
  }
70
+ const followOn = optBool(obj, "followOn", what);
71
+ if (followOn !== undefined) {
72
+ out.followOn = followOn;
73
+ }
74
+ // `bootstrap`, `followOn`, and `probe` are pairwise mutually exclusive — the walk sets at most one
75
+ // (bootstrap only at the tier-0 root re-issue, followOn only at a `treeTier >= 1` redirect target,
76
+ // probe never instantiates). A frame that sets more than one is malformed / adversarial.
77
+ if ([bootstrap, followOn, probe].filter((flag) => flag === true).length > 1) {
78
+ fail(`${what}: at most one of bootstrap, followOn, probe may be set`);
79
+ }
80
+ // A follow-on is by definition a deeper-than-root growth point, so `treeTier >= 1`. A `followOn: true`
81
+ // at the root (treeTier 0) would be a bootstrap, not a follow-on — reject it as malformed.
82
+ if (followOn === true && out.treeTier < 1) {
83
+ fail(`${what}: followOn requires treeTier >= 1, got ${out.treeTier}`);
84
+ }
155
85
  const appPayload = optString(obj, "appPayload", what);
156
86
  if (appPayload !== undefined) {
157
87
  out.appPayload = b64urlField(appPayload, "appPayload", what);
@@ -188,12 +118,17 @@ export function validateRegisterReplyV1(value) {
188
118
  assignDefined(out, "backups", optStringArray(obj, "backups", what));
189
119
  const cohortEpoch = optString(obj, "cohortEpoch", what);
190
120
  if (cohortEpoch !== undefined) {
121
+ // NOTE: cohortEpoch is NOT length-pinned though real epochs are a 32-byte SHA-256 — several
122
+ // test fixtures (db-core reactivity + db-p2p) feed 1-byte synthetic epochs. Pinning is tracked
123
+ // by debt-cohort-topic-pin-cohort-epoch. See b64urlField's note.
191
124
  out.cohortEpoch = b64urlField(cohortEpoch, "cohortEpoch", what);
192
125
  }
193
126
  assignDefined(out, "cohortMembers", optStringArray(obj, "cohortMembers", what));
194
127
  if (obj["topicTraffic"] !== undefined) {
195
128
  out.topicTraffic = validateTopicTrafficV1(obj["topicTraffic"]);
196
129
  }
130
+ // NOTE: `targetTier` is range-checked in the walk loop (walk.ts, case "promoted"), not here — an
131
+ // out-of-range redirect must surface as a `retry_later` outcome, not a decode-time throw.
197
132
  assignDefined(out, "targetTier", optFiniteNumber(obj, "targetTier", what));
198
133
  assignDefined(out, "candidateMembers", optStringArray(obj, "candidateMembers", what));
199
134
  assignDefined(out, "retryAfterMs", optFiniteNumber(obj, "retryAfterMs", what));
@@ -206,9 +141,9 @@ export function validateRenewV1(value) {
206
141
  requireV1(obj, what);
207
142
  const out = {
208
143
  v: 1,
209
- topicId: b64urlField(reqString(obj, "topicId", what), "topicId", what),
144
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
210
145
  participantId: reqString(obj, "participantId", what),
211
- correlationId: b64urlField(reqString(obj, "correlationId", what), "correlationId", what),
146
+ correlationId: b64urlFixedLen(reqString(obj, "correlationId", what), "correlationId", CORRELATION_BYTES, what),
212
147
  timestamp: reqFiniteNumber(obj, "timestamp", what),
213
148
  signature: b64urlField(reqString(obj, "signature", what), "signature", what),
214
149
  };
@@ -228,6 +163,8 @@ export function validateRenewReplyV1(value) {
228
163
  assignDefined(out, "newBackups", optStringArray(obj, "newBackups", what));
229
164
  const cohortEpoch = optString(obj, "cohortEpoch", what);
230
165
  if (cohortEpoch !== undefined) {
166
+ // NOTE: cohortEpoch is NOT length-pinned — see validateRegisterReplyV1's note and
167
+ // debt-cohort-topic-pin-cohort-epoch.
231
168
  out.cohortEpoch = b64urlField(cohortEpoch, "cohortEpoch", what);
232
169
  }
233
170
  return out;
@@ -236,11 +173,17 @@ export function validatePromotionNoticeV1(value) {
236
173
  const what = "PromotionNoticeV1";
237
174
  const obj = asObject(value, what);
238
175
  requireV1(obj, what);
176
+ const fromTier = treeTier(reqFiniteNumber(obj, "fromTier", what), what);
177
+ const toTier = treeTier(reqFiniteNumber(obj, "toTier", what), what);
178
+ if (toTier !== fromTier + 1) {
179
+ fail(`${what}: toTier must equal fromTier + 1, got fromTier=${fromTier} toTier=${toTier}`);
180
+ }
239
181
  return {
240
182
  v: 1,
241
- topicId: b64urlField(reqString(obj, "topicId", what), "topicId", what),
242
- fromTier: tier(reqFiniteNumber(obj, "fromTier", what), what),
243
- toTier: tier(reqFiniteNumber(obj, "toTier", what), what),
183
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
184
+ fromTier,
185
+ toTier,
186
+ cohortCoord: b64urlFixedLen(reqString(obj, "cohortCoord", what), "cohortCoord", COORD_BYTES, what),
244
187
  effectiveAt: reqFiniteNumber(obj, "effectiveAt", what),
245
188
  thresholdSig: b64urlField(reqString(obj, "thresholdSig", what), "thresholdSig", what),
246
189
  signers: reqStringArray(obj, "signers", what),
@@ -253,15 +196,64 @@ export function validateDemotionNoticeV1(value) {
253
196
  requireV1(obj, what);
254
197
  return {
255
198
  v: 1,
256
- topicId: b64urlField(reqString(obj, "topicId", what), "topicId", what),
257
- tier: tier(reqFiniteNumber(obj, "tier", what), what),
258
- parentCohortCoord: b64urlField(reqString(obj, "parentCohortCoord", what), "parentCohortCoord", what),
199
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
200
+ tier: treeTier(reqFiniteNumber(obj, "tier", what), what),
201
+ parentCohortCoord: b64urlFixedLen(reqString(obj, "parentCohortCoord", what), "parentCohortCoord", COORD_BYTES, what),
202
+ cohortCoord: b64urlFixedLen(reqString(obj, "cohortCoord", what), "cohortCoord", COORD_BYTES, what),
259
203
  effectiveAt: reqFiniteNumber(obj, "effectiveAt", what),
260
204
  thresholdSig: b64urlField(reqString(obj, "thresholdSig", what), "thresholdSig", what),
261
205
  signers: reqStringArray(obj, "signers", what),
262
206
  cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
263
207
  };
264
208
  }
209
+ /**
210
+ * Validate a {@link ChildLinkV1}. Enforces `childTier >= 1` (the root never links), `tier` in 0..3, and
211
+ * well-formed base64url on every byte field. The hash-derived fields (`topicId` / `childCohortCoord` /
212
+ * `cohortEpoch`) are additionally length-checked to exactly 32 bytes (each is a SHA-256 truncation); the
213
+ * `childParticipantCoord` follows the lenient `RegisterV1` convention (base64url only — a participant
214
+ * coord is not always 32 raw bytes, e.g. a multihash-encoded peer id in tests). When `minSigs`
215
+ * is supplied AND the frame carries a threshold signature (`thresholdSig` non-empty), `signers.length` must
216
+ * be `>= minSigs`; a key-less-interim frame carries neither, so that cross-field bound is skipped. `minSigs`
217
+ * is optional so a bare structural decode (no quorum context) still narrows the frame.
218
+ */
219
+ export function validateChildLinkV1(value, minSigs) {
220
+ const what = "ChildLinkV1";
221
+ const obj = asObject(value, what);
222
+ requireV1(obj, what);
223
+ const childTier = reqFiniteNumber(obj, "childTier", what);
224
+ if (!Number.isInteger(childTier) || childTier < 1) {
225
+ fail(`${what}: childTier must be an integer >= 1, got ${childTier}`);
226
+ }
227
+ const thresholdSig = b64urlField(reqString(obj, "thresholdSig", what), "thresholdSig", what);
228
+ const signers = reqStringArray(obj, "signers", what).map((s) => b64urlField(s, "signers", what));
229
+ if (minSigs !== undefined && thresholdSig.length > 0 && signers.length < minSigs) {
230
+ fail(`${what}: a signed child-link needs signers.length >= ${minSigs}, got ${signers.length}`);
231
+ }
232
+ return {
233
+ v: 1,
234
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
235
+ childCohortCoord: b64urlFixedLen(reqString(obj, "childCohortCoord", what), "childCohortCoord", COORD_BYTES, what),
236
+ childParticipantCoord: b64urlField(reqString(obj, "childParticipantCoord", what), "childParticipantCoord", what),
237
+ childTier,
238
+ tier: tier(reqFiniteNumber(obj, "tier", what), what),
239
+ effectiveAt: reqFiniteNumber(obj, "effectiveAt", what),
240
+ thresholdSig,
241
+ signers,
242
+ cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
243
+ };
244
+ }
245
+ /** Validate a {@link ChildLinkReplyV1}: `result` in `linked | rejected`, optional human-readable `reason`. */
246
+ export function validateChildLinkReplyV1(value) {
247
+ const what = "ChildLinkReplyV1";
248
+ const obj = asObject(value, what);
249
+ requireV1(obj, what);
250
+ const out = {
251
+ v: 1,
252
+ result: reqEnum(obj, "result", ["linked", "rejected"], what),
253
+ };
254
+ assignDefined(out, "reason", optString(obj, "reason", what));
255
+ return out;
256
+ }
265
257
  function validateCohortTopicSummary(value) {
266
258
  const what = "CohortTopicSummary";
267
259
  const obj = asObject(value, what);
@@ -279,7 +271,7 @@ function validateGossipRecordV1(value) {
279
271
  const what = "GossipRecordV1";
280
272
  const obj = asObject(value, what);
281
273
  const out = {
282
- topicId: b64urlField(reqString(obj, "topicId", what), "topicId", what),
274
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
283
275
  participantId: b64urlField(reqString(obj, "participantId", what), "participantId", what),
284
276
  tier: tier(reqFiniteNumber(obj, "tier", what), what),
285
277
  primary: b64urlField(reqString(obj, "primary", what), "primary", what),
@@ -298,8 +290,18 @@ function validateGossipRecordRefV1(value) {
298
290
  const what = "GossipRecordRefV1";
299
291
  const obj = asObject(value, what);
300
292
  return {
301
- topicId: b64urlField(reqString(obj, "topicId", what), "topicId", what),
293
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
302
294
  participantId: b64urlField(reqString(obj, "participantId", what), "participantId", what),
295
+ lastPing: reqFiniteNumber(obj, "lastPing", what),
296
+ };
297
+ }
298
+ function validateChildLinkRefV1(value) {
299
+ const what = "ChildLinkRefV1";
300
+ const obj = asObject(value, what);
301
+ return {
302
+ topicId: b64urlFixedLen(reqString(obj, "topicId", what), "topicId", COORD_BYTES, what),
303
+ childCohortCoord: b64urlField(reqString(obj, "childCohortCoord", what), "childCohortCoord", what),
304
+ effectiveAt: reqFiniteNumber(obj, "effectiveAt", what),
303
305
  };
304
306
  }
305
307
  /** `willingnessBits` carries exactly 4 bits (T0..T3) as a single hex nibble. */
@@ -325,11 +327,16 @@ export function validateCohortGossipV1(value) {
325
327
  if (!Array.isArray(summaries)) {
326
328
  fail(`${what}: field "topicSummaries" must be an array`);
327
329
  }
330
+ const treeTier = reqFiniteNumber(obj, "treeTier", what);
331
+ if (!Number.isInteger(treeTier) || treeTier < 0) {
332
+ fail(`${what}: field "treeTier" must be a non-negative integer, got ${treeTier}`);
333
+ }
328
334
  const out = {
329
335
  v: 1,
330
336
  fromMember: reqString(obj, "fromMember", what),
331
- coord: b64urlField(reqString(obj, "coord", what), "coord", what),
337
+ coord: b64urlFixedLen(reqString(obj, "coord", what), "coord", COORD_BYTES, what),
332
338
  cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
339
+ treeTier,
333
340
  willingnessBits,
334
341
  loadBuckets: loadBuckets,
335
342
  windowSeconds: reqFiniteNumber(obj, "windowSeconds", what),
@@ -351,9 +358,23 @@ export function validateCohortGossipV1(value) {
351
358
  }
352
359
  out.evicted = evicted.map(validateGossipRecordRefV1);
353
360
  }
361
+ const childLinks = obj["childLinks"];
362
+ if (childLinks !== undefined) {
363
+ if (!Array.isArray(childLinks)) {
364
+ fail(`${what}: field "childLinks" must be an array when present`);
365
+ }
366
+ out.childLinks = childLinks.map(validateChildLinkRefV1);
367
+ }
368
+ const childUnlinks = obj["childUnlinks"];
369
+ if (childUnlinks !== undefined) {
370
+ if (!Array.isArray(childUnlinks)) {
371
+ fail(`${what}: field "childUnlinks" must be an array when present`);
372
+ }
373
+ out.childUnlinks = childUnlinks.map(validateChildLinkRefV1);
374
+ }
354
375
  return out;
355
376
  }
356
- const SIGN_KINDS = ["membership", "promotion", "demotion", "rotation"];
377
+ const SIGN_KINDS = ["membership", "promotion", "demotion", "rotation", "childlink"];
357
378
  export function validateSignRequestV1(value) {
358
379
  const what = "SignRequestV1";
359
380
  const obj = asObject(value, what);
@@ -361,7 +382,7 @@ export function validateSignRequestV1(value) {
361
382
  return {
362
383
  v: 1,
363
384
  kind: reqEnum(obj, "kind", SIGN_KINDS, what),
364
- coord: b64urlField(reqString(obj, "coord", what), "coord", what),
385
+ coord: b64urlFixedLen(reqString(obj, "coord", what), "coord", COORD_BYTES, what),
365
386
  cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
366
387
  payload: b64urlField(reqString(obj, "payload", what), "payload", what),
367
388
  };
@@ -389,7 +410,7 @@ export function validateMembershipCertV1(value) {
389
410
  requireV1(obj, what);
390
411
  const out = {
391
412
  v: 1,
392
- cohortCoord: b64urlField(reqString(obj, "cohortCoord", what), "cohortCoord", what),
413
+ cohortCoord: b64urlFixedLen(reqString(obj, "cohortCoord", what), "cohortCoord", COORD_BYTES, what),
393
414
  cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
394
415
  members: reqStringArray(obj, "members", what),
395
416
  stabilizedAt: reqFiniteNumber(obj, "stabilizedAt", what),
@@ -420,6 +441,8 @@ function validateRotationAttestation(obj, out, what) {
420
441
  if (presentCount !== 3) {
421
442
  fail(`${what}: rotation attestation requires all of prevEpoch, rotationSig, rotationSigners — or none`);
422
443
  }
444
+ // prevEpoch is a prior cohortEpoch, so it inherits cohortEpoch's leniency (see the b64urlField note
445
+ // and debt-cohort-topic-pin-cohort-epoch).
423
446
  out.prevEpoch = b64urlField(prevEpoch, "prevEpoch", what);
424
447
  out.rotationSig = b64urlField(rotationSig, "rotationSig", what);
425
448
  out.rotationSigners = rotationSigners;
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/validate.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,16 @@
1
- import type { IBlock, Action, ActionType, ActionHandler, BlockId, ITransactor, BlockStore, Transforms } from "../index.js";
1
+ import type { IBlock, Action, ActionType, ActionHandler, BlockId, ITransactor, BlockStore, Transforms, ActionId } from "../index.js";
2
2
  import { Tracker, CacheSource, TransactorSource } from "../index.js";
3
- import type { CollectionId, ICollection } from "./index.js";
3
+ import type { CollectionId, ICollection, SyncOptions } from "./index.js";
4
4
  import type { ReadDependency } from "../transaction/transaction.js";
5
5
  export type CollectionInitOptions<TAction> = {
6
6
  modules: Record<ActionType, ActionHandler<TAction>>;
7
7
  createHeaderBlock: (id: BlockId, store: BlockStore<IBlock>) => IBlock;
8
8
  /** Called for each local action that is potentially in conflict with a remote action.
9
9
  * @param action - The local action to check
10
- * @param potential - The remote action that is potentially in conflict
11
- * @returns The original action, a replacement action (return a new instance; will be
12
- * applied through act()), or undefined to discard this action
10
+ * @param potential - The remote actions that are potentially in conflict
11
+ * @returns The original action (return the same instance to keep it as-is), a replacement
12
+ * action (return a new instance to apply instead of the original — it is re-staged via
13
+ * the conflict replay), or undefined to discard this action
13
14
  */
14
15
  filterConflict?: (action: Action<TAction>, potential: Action<TAction>[]) => Action<TAction> | undefined;
15
16
  };
@@ -92,22 +93,32 @@ export declare class Collection<TAction> implements ICollection<TAction> {
92
93
  * this, a collection that already had committed state (e.g. a pre-synced index
93
94
  * tree, or any collection on its second commit) keeps serving the stale prior
94
95
  * revision because {@link update} sees its rev is already current and refetches
95
- * nothing. Call BEFORE resetting the tracker (the transforms are read live). */
96
- applyCommittedToCache(transforms: Transforms): void;
96
+ * nothing. Call BEFORE resetting the tracker (the transforms are read live).
97
+ *
98
+ * @param revision - the committed revision these transforms land at (from
99
+ * {@link recordCommitted}), so cached read-dependency revisions advance to it. */
100
+ applyCommittedToCache(transforms: Transforms, revision: number): void;
101
+ /** Next revision this collection would commit at (current committed rev + 1). */
102
+ getNextRev(): number;
103
+ /** Record a just-committed action: append its ActionRev to the committed list
104
+ * and advance the revision. Returns the new revision. Mirrors the inline bump
105
+ * in {@link syncInternal}. */
106
+ recordCommitted(actionId: ActionId): number;
97
107
  /** Push our pending actions to the transactor */
98
- sync(): Promise<void>;
108
+ sync(options?: SyncOptions): Promise<void>;
99
109
  private syncInternal;
100
- updateAndSync(): Promise<void>;
110
+ updateAndSync(options?: SyncOptions): Promise<void>;
101
111
  selectLog(forward?: boolean): AsyncIterableIterator<Action<TAction>>;
102
112
  private replayActions;
103
113
  getReadDependencies(): ReadDependency[];
104
114
  clearReadDependencies(): void;
105
115
  /** Called for each local action that may be in conflict with a remote action (always called under latch).
106
116
  * @param action - The local action to check
107
- * @param potential - The remote action that is potentially in conflict
108
- * @returns true if the action should be kept, false to discard it
117
+ * @param potential - The remote actions that are potentially in conflict
118
+ * @returns The effective action to keep: the original (unchanged), a replacement
119
+ * instance (applied instead of the original), or undefined to discard it.
109
120
  */
110
- protected doFilterConflict(action: Action<TAction>, potential: Action<TAction>[]): boolean;
121
+ protected doFilterConflict(action: Action<TAction>, potential: Action<TAction>[]): Action<TAction> | undefined;
111
122
  /** Bootstrap ActionContext from the committed tail block's state.
112
123
  * The tail is always committed first (commit protocol guarantee), so it's readable
113
124
  * with context=undefined. Its state.latest contains the ActionRev of the most recent
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../../src/collection/collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../../src/collection/collection.ts"],"names":[],"mappings":"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"}