@enbox/dwn-sdk-js 0.3.9 → 0.4.1

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 (525) hide show
  1. package/README.md +4 -4
  2. package/dist/browser.mjs +11 -11
  3. package/dist/browser.mjs.map +4 -4
  4. package/dist/esm/generated/precompiled-validators.js +783 -1206
  5. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  6. package/dist/esm/src/core/dwn-constant.js +5 -0
  7. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  8. package/dist/esm/src/core/dwn-error.js +13 -7
  9. package/dist/esm/src/core/dwn-error.js.map +1 -1
  10. package/dist/esm/src/core/grant-authorization.js +9 -18
  11. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  12. package/dist/esm/src/core/message-reply.js.map +1 -1
  13. package/dist/esm/src/core/messages-grant-authorization.js +28 -61
  14. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/protocol-authorization-action.js +25 -27
  16. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -1
  17. package/dist/esm/src/core/protocol-authorization-validation.js +31 -69
  18. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
  19. package/dist/esm/src/core/protocol-authorization.js +44 -118
  20. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  21. package/dist/esm/src/core/protocols-grant-authorization.js +5 -5
  22. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  23. package/dist/esm/src/core/recording-validation-state-reader.js +84 -0
  24. package/dist/esm/src/core/recording-validation-state-reader.js.map +1 -0
  25. package/dist/esm/src/core/records-grant-authorization.js +11 -11
  26. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  27. package/dist/esm/src/core/replication-apply.js +295 -0
  28. package/dist/esm/src/core/replication-apply.js.map +1 -0
  29. package/dist/esm/src/core/resumable-task-manager.js +5 -4
  30. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  31. package/dist/esm/src/core/validation-state-reader.js +237 -0
  32. package/dist/esm/src/core/validation-state-reader.js.map +1 -0
  33. package/dist/esm/src/dwn.js +261 -16
  34. package/dist/esm/src/dwn.js.map +1 -1
  35. package/dist/esm/src/enums/dwn-interface-method.js +0 -1
  36. package/dist/esm/src/enums/dwn-interface-method.js.map +1 -1
  37. package/dist/esm/src/event-stream/durable-event-log.js +365 -0
  38. package/dist/esm/src/event-stream/durable-event-log.js.map +1 -0
  39. package/dist/esm/src/event-stream/event-emitter-wake-publisher.js +25 -0
  40. package/dist/esm/src/event-stream/event-emitter-wake-publisher.js.map +1 -0
  41. package/dist/esm/src/handlers/messages-query.js +159 -0
  42. package/dist/esm/src/handlers/messages-query.js.map +1 -0
  43. package/dist/esm/src/handlers/messages-read.js +5 -5
  44. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  45. package/dist/esm/src/handlers/messages-subscribe.js +8 -8
  46. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  47. package/dist/esm/src/handlers/protocols-configure.js +30 -49
  48. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  49. package/dist/esm/src/handlers/protocols-query.js +1 -1
  50. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  51. package/dist/esm/src/handlers/records-count.js +20 -11
  52. package/dist/esm/src/handlers/records-count.js.map +1 -1
  53. package/dist/esm/src/handlers/records-delete.js +20 -16
  54. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  55. package/dist/esm/src/handlers/records-query.js +35 -11
  56. package/dist/esm/src/handlers/records-query.js.map +1 -1
  57. package/dist/esm/src/handlers/records-read.js +52 -42
  58. package/dist/esm/src/handlers/records-read.js.map +1 -1
  59. package/dist/esm/src/handlers/records-subscribe.js +107 -11
  60. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  61. package/dist/esm/src/handlers/records-write.js +62 -116
  62. package/dist/esm/src/handlers/records-write.js.map +1 -1
  63. package/dist/esm/src/index.js +7 -8
  64. package/dist/esm/src/index.js.map +1 -1
  65. package/dist/esm/src/interfaces/messages-query.js +49 -0
  66. package/dist/esm/src/interfaces/messages-query.js.map +1 -0
  67. package/dist/esm/src/interfaces/protocols-configure.js +7 -3
  68. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  69. package/dist/esm/src/interfaces/protocols-query.js +3 -4
  70. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  71. package/dist/esm/src/interfaces/records-count.js +4 -3
  72. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  73. package/dist/esm/src/interfaces/records-delete.js +21 -4
  74. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  75. package/dist/esm/src/interfaces/records-query.js +4 -3
  76. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-read.js +3 -3
  78. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-subscribe.js +4 -3
  80. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-write.js +27 -13
  82. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  83. package/dist/esm/src/protocols/permissions.js +27 -34
  84. package/dist/esm/src/protocols/permissions.js.map +1 -1
  85. package/dist/esm/src/store/index-level.js +24 -9
  86. package/dist/esm/src/store/index-level.js.map +1 -1
  87. package/dist/esm/src/store/level-wrapper.js +7 -0
  88. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  89. package/dist/esm/src/store/message-store-level.js +536 -42
  90. package/dist/esm/src/store/message-store-level.js.map +1 -1
  91. package/dist/esm/src/store/storage-controller.js +58 -49
  92. package/dist/esm/src/store/storage-controller.js.map +1 -1
  93. package/dist/esm/src/types/message-types.js.map +1 -1
  94. package/dist/esm/src/types/validation-state-reader.js +2 -0
  95. package/dist/esm/src/types/validation-state-reader.js.map +1 -0
  96. package/dist/esm/src/utils/messages.js +17 -0
  97. package/dist/esm/src/utils/messages.js.map +1 -1
  98. package/dist/esm/src/utils/record-limit-occupancy.js +244 -0
  99. package/dist/esm/src/utils/record-limit-occupancy.js.map +1 -0
  100. package/dist/esm/src/utils/records.js +50 -14
  101. package/dist/esm/src/utils/records.js.map +1 -1
  102. package/dist/esm/src/utils/replication.js +85 -0
  103. package/dist/esm/src/utils/replication.js.map +1 -0
  104. package/dist/esm/tests/core/grant-authorization.spec.js +4 -4
  105. package/dist/esm/tests/core/grant-authorization.spec.js.map +1 -1
  106. package/dist/esm/tests/core/process-message-parity.spec.js +222 -0
  107. package/dist/esm/tests/core/process-message-parity.spec.js.map +1 -0
  108. package/dist/esm/tests/core/protocol-authorization.spec.js +5 -2
  109. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  110. package/dist/esm/tests/core/records-grant-authorization.spec.js +5 -5
  111. package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -1
  112. package/dist/esm/tests/core/replication-apply.spec.js +274 -0
  113. package/dist/esm/tests/core/replication-apply.spec.js.map +1 -0
  114. package/dist/esm/tests/core/replication-replay-property.spec.js +350 -0
  115. package/dist/esm/tests/core/replication-replay-property.spec.js.map +1 -0
  116. package/dist/esm/tests/core/validation-read-closure.spec.js +469 -0
  117. package/dist/esm/tests/core/validation-read-closure.spec.js.map +1 -0
  118. package/dist/esm/tests/core/validation-state-reader.spec.js +716 -0
  119. package/dist/esm/tests/core/validation-state-reader.spec.js.map +1 -0
  120. package/dist/esm/tests/durable-event-log.spec.js +373 -0
  121. package/dist/esm/tests/durable-event-log.spec.js.map +1 -0
  122. package/dist/esm/tests/dwn.spec.js +620 -14
  123. package/dist/esm/tests/dwn.spec.js.map +1 -1
  124. package/dist/esm/tests/features/author-delegated-grant.spec.js +9 -6
  125. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  126. package/dist/esm/tests/features/owner-delegated-grant.spec.js +1 -4
  127. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  128. package/dist/esm/tests/features/owner-signature.spec.js +1 -4
  129. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  130. package/dist/esm/tests/features/permissions.spec.js +165 -4
  131. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  132. package/dist/esm/tests/features/protocol-composition.spec.js +8 -11
  133. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  134. package/dist/esm/tests/features/protocol-create-action.spec.js +1 -4
  135. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  136. package/dist/esm/tests/features/protocol-delete-action.spec.js +3 -5
  137. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  138. package/dist/esm/tests/features/protocol-update-action.spec.js +3 -6
  139. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  140. package/dist/esm/tests/features/records-delivery.spec.js +1 -4
  141. package/dist/esm/tests/features/records-delivery.spec.js.map +1 -1
  142. package/dist/esm/tests/features/records-immutable.spec.js +1 -4
  143. package/dist/esm/tests/features/records-immutable.spec.js.map +1 -1
  144. package/dist/esm/tests/features/records-nested-query-scope.spec.js +281 -0
  145. package/dist/esm/tests/features/records-nested-query-scope.spec.js.map +1 -0
  146. package/dist/esm/tests/features/records-prune-cross-protocol.spec.js +3 -7
  147. package/dist/esm/tests/features/records-prune-cross-protocol.spec.js.map +1 -1
  148. package/dist/esm/tests/features/records-prune.spec.js +11 -22
  149. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  150. package/dist/esm/tests/features/records-record-limit.spec.js +441 -231
  151. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
  152. package/dist/esm/tests/features/records-squash.spec.js +6 -4
  153. package/dist/esm/tests/features/records-squash.spec.js.map +1 -1
  154. package/dist/esm/tests/features/records-tags.spec.js +1 -4
  155. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  156. package/dist/esm/tests/features/resumable-tasks.spec.js +3 -5
  157. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  158. package/dist/esm/tests/fuzz/message-store.fuzz.spec.js +1 -2
  159. package/dist/esm/tests/fuzz/message-store.fuzz.spec.js.map +1 -1
  160. package/dist/esm/tests/fuzz/process-message.fuzz.spec.js +2 -4
  161. package/dist/esm/tests/fuzz/process-message.fuzz.spec.js.map +1 -1
  162. package/dist/esm/tests/fuzz/schema-validation.fuzz.spec.js +1 -1
  163. package/dist/esm/tests/fuzz/schema-validation.fuzz.spec.js.map +1 -1
  164. package/dist/esm/tests/handlers/messages-query.spec.js +246 -0
  165. package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -0
  166. package/dist/esm/tests/handlers/messages-read.spec.js +2 -5
  167. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  168. package/dist/esm/tests/handlers/messages-subscribe.spec.js +3 -14
  169. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  170. package/dist/esm/tests/handlers/protocols-configure.spec.js +27 -26
  171. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  172. package/dist/esm/tests/handlers/protocols-query.spec.js +1 -4
  173. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  174. package/dist/esm/tests/handlers/records-count.spec.js +1 -4
  175. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  176. package/dist/esm/tests/handlers/records-delete.spec.js +312 -30
  177. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  178. package/dist/esm/tests/handlers/records-query.spec.js +32 -9
  179. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  180. package/dist/esm/tests/handlers/records-read.spec.js +4 -4
  181. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  182. package/dist/esm/tests/handlers/records-subscribe.spec.js +33 -14
  183. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  184. package/dist/esm/tests/handlers/records-write.spec.js +84 -38
  185. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  186. package/dist/esm/tests/interfaces/records-delete.spec.js +69 -2
  187. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  188. package/dist/esm/tests/interfaces/records-write.spec.js +4 -3
  189. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  190. package/dist/esm/tests/protocols/permissions.spec.js +55 -6
  191. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  192. package/dist/esm/tests/scenarios/aggregator.spec.js +1 -4
  193. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  194. package/dist/esm/tests/scenarios/deleted-record.spec.js +1 -4
  195. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  196. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +1 -4
  197. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  198. package/dist/esm/tests/scenarios/nested-roles.spec.js +1 -4
  199. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  200. package/dist/esm/tests/scenarios/subscriptions.spec.js +1 -4
  201. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  202. package/dist/esm/tests/store/message-store-level.spec.js +361 -5
  203. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  204. package/dist/esm/tests/store/message-store.spec.js +60 -0
  205. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  206. package/dist/esm/tests/test-event-stream.js +7 -3
  207. package/dist/esm/tests/test-event-stream.js.map +1 -1
  208. package/dist/esm/tests/test-stores.js +19 -9
  209. package/dist/esm/tests/test-stores.js.map +1 -1
  210. package/dist/esm/tests/test-suite.js +4 -4
  211. package/dist/esm/tests/test-suite.js.map +1 -1
  212. package/dist/esm/tests/utils/test-data-generator.js +25 -0
  213. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  214. package/dist/esm/tests/utils/test-stub-generator.js.map +1 -1
  215. package/dist/esm/tests/utils/test-validation-state-reader.js +16 -0
  216. package/dist/esm/tests/utils/test-validation-state-reader.js.map +1 -0
  217. package/dist/types/generated/precompiled-validators.d.ts +6 -6
  218. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  219. package/dist/types/src/core/core-protocol.d.ts +3 -3
  220. package/dist/types/src/core/core-protocol.d.ts.map +1 -1
  221. package/dist/types/src/core/dwn-constant.d.ts +5 -0
  222. package/dist/types/src/core/dwn-constant.d.ts.map +1 -1
  223. package/dist/types/src/core/dwn-error.d.ts +13 -7
  224. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  225. package/dist/types/src/core/grant-authorization.d.ts +5 -5
  226. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  227. package/dist/types/src/core/message-reply.d.ts +5 -4
  228. package/dist/types/src/core/message-reply.d.ts.map +1 -1
  229. package/dist/types/src/core/messages-grant-authorization.d.ts +12 -15
  230. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  231. package/dist/types/src/core/protocol-authorization-action.d.ts +4 -5
  232. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -1
  233. package/dist/types/src/core/protocol-authorization-validation.d.ts +13 -16
  234. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
  235. package/dist/types/src/core/protocol-authorization.d.ts +8 -33
  236. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  237. package/dist/types/src/core/protocols-grant-authorization.d.ts +4 -4
  238. package/dist/types/src/core/protocols-grant-authorization.d.ts.map +1 -1
  239. package/dist/types/src/core/recording-validation-state-reader.d.ts +75 -0
  240. package/dist/types/src/core/recording-validation-state-reader.d.ts.map +1 -0
  241. package/dist/types/src/core/records-grant-authorization.d.ts +8 -8
  242. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  243. package/dist/types/src/core/replication-apply.d.ts +129 -0
  244. package/dist/types/src/core/replication-apply.d.ts.map +1 -0
  245. package/dist/types/src/core/resumable-task-manager.d.ts +1 -1
  246. package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -1
  247. package/dist/types/src/core/validation-state-reader.d.ts +79 -0
  248. package/dist/types/src/core/validation-state-reader.d.ts.map +1 -0
  249. package/dist/types/src/dwn.d.ts +47 -13
  250. package/dist/types/src/dwn.d.ts.map +1 -1
  251. package/dist/types/src/enums/dwn-interface-method.d.ts +0 -1
  252. package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -1
  253. package/dist/types/src/event-stream/durable-event-log.d.ts +69 -0
  254. package/dist/types/src/event-stream/durable-event-log.d.ts.map +1 -0
  255. package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts +13 -0
  256. package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts.map +1 -0
  257. package/dist/types/src/handlers/messages-query.d.ts +20 -0
  258. package/dist/types/src/handlers/messages-query.d.ts.map +1 -0
  259. package/dist/types/src/handlers/messages-read.d.ts +1 -1
  260. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  261. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  262. package/dist/types/src/handlers/protocols-configure.d.ts +0 -5
  263. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  264. package/dist/types/src/handlers/records-count.d.ts +2 -1
  265. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  266. package/dist/types/src/handlers/records-delete.d.ts +2 -2
  267. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  268. package/dist/types/src/handlers/records-query.d.ts +1 -1
  269. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  270. package/dist/types/src/handlers/records-read.d.ts +2 -1
  271. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  272. package/dist/types/src/handlers/records-subscribe.d.ts +4 -5
  273. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  274. package/dist/types/src/handlers/records-write.d.ts +3 -11
  275. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  276. package/dist/types/src/index.d.ts +16 -18
  277. package/dist/types/src/index.d.ts.map +1 -1
  278. package/dist/types/src/interfaces/messages-query.d.ts +23 -0
  279. package/dist/types/src/interfaces/messages-query.d.ts.map +1 -0
  280. package/dist/types/src/interfaces/protocols-configure.d.ts +3 -3
  281. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  282. package/dist/types/src/interfaces/protocols-query.d.ts +2 -2
  283. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
  284. package/dist/types/src/interfaces/records-count.d.ts +3 -3
  285. package/dist/types/src/interfaces/records-count.d.ts.map +1 -1
  286. package/dist/types/src/interfaces/records-delete.d.ts +11 -3
  287. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  288. package/dist/types/src/interfaces/records-query.d.ts +3 -3
  289. package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
  290. package/dist/types/src/interfaces/records-read.d.ts +3 -3
  291. package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
  292. package/dist/types/src/interfaces/records-subscribe.d.ts +3 -3
  293. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  294. package/dist/types/src/interfaces/records-write.d.ts +15 -7
  295. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  296. package/dist/types/src/protocols/permissions.d.ts +9 -12
  297. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  298. package/dist/types/src/store/index-level.d.ts +10 -1
  299. package/dist/types/src/store/index-level.d.ts.map +1 -1
  300. package/dist/types/src/store/level-wrapper.d.ts +5 -0
  301. package/dist/types/src/store/level-wrapper.d.ts.map +1 -1
  302. package/dist/types/src/store/message-store-level.d.ts +94 -14
  303. package/dist/types/src/store/message-store-level.d.ts.map +1 -1
  304. package/dist/types/src/store/storage-controller.d.ts +17 -14
  305. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  306. package/dist/types/src/types/message-store.d.ts +29 -1
  307. package/dist/types/src/types/message-store.d.ts.map +1 -1
  308. package/dist/types/src/types/message-types.d.ts +2 -0
  309. package/dist/types/src/types/message-types.d.ts.map +1 -1
  310. package/dist/types/src/types/messages-types.d.ts +21 -55
  311. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  312. package/dist/types/src/types/method-handler.d.ts +2 -2
  313. package/dist/types/src/types/method-handler.d.ts.map +1 -1
  314. package/dist/types/src/types/permission-types.d.ts +1 -1
  315. package/dist/types/src/types/subscriptions.d.ts +50 -39
  316. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  317. package/dist/types/src/types/validation-state-reader.d.ts +116 -0
  318. package/dist/types/src/types/validation-state-reader.d.ts.map +1 -0
  319. package/dist/types/src/utils/messages.d.ts +10 -0
  320. package/dist/types/src/utils/messages.d.ts.map +1 -1
  321. package/dist/types/src/utils/record-limit-occupancy.d.ts +40 -0
  322. package/dist/types/src/utils/record-limit-occupancy.d.ts.map +1 -0
  323. package/dist/types/src/utils/records.d.ts +25 -3
  324. package/dist/types/src/utils/records.d.ts.map +1 -1
  325. package/dist/types/src/utils/replication.d.ts +22 -0
  326. package/dist/types/src/utils/replication.d.ts.map +1 -0
  327. package/dist/types/tests/core/process-message-parity.spec.d.ts +2 -0
  328. package/dist/types/tests/core/process-message-parity.spec.d.ts.map +1 -0
  329. package/dist/types/tests/core/replication-apply.spec.d.ts +2 -0
  330. package/dist/types/tests/core/replication-apply.spec.d.ts.map +1 -0
  331. package/dist/types/tests/core/replication-replay-property.spec.d.ts +2 -0
  332. package/dist/types/tests/core/replication-replay-property.spec.d.ts.map +1 -0
  333. package/dist/types/tests/core/validation-read-closure.spec.d.ts +2 -0
  334. package/dist/types/tests/core/validation-read-closure.spec.d.ts.map +1 -0
  335. package/dist/types/tests/core/validation-state-reader.spec.d.ts +2 -0
  336. package/dist/types/tests/core/validation-state-reader.spec.d.ts.map +1 -0
  337. package/dist/types/tests/durable-event-log.spec.d.ts +2 -0
  338. package/dist/types/tests/durable-event-log.spec.d.ts.map +1 -0
  339. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  340. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  341. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  342. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  343. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  344. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  345. package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -1
  346. package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -1
  347. package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -1
  348. package/dist/types/tests/features/records-delivery.spec.d.ts.map +1 -1
  349. package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -1
  350. package/dist/types/tests/features/records-nested-query-scope.spec.d.ts +2 -0
  351. package/dist/types/tests/features/records-nested-query-scope.spec.d.ts.map +1 -0
  352. package/dist/types/tests/features/records-prune-cross-protocol.spec.d.ts.map +1 -1
  353. package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -1
  354. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -1
  355. package/dist/types/tests/features/records-squash.spec.d.ts.map +1 -1
  356. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  357. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  358. package/dist/types/tests/handlers/messages-query.spec.d.ts +2 -0
  359. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -0
  360. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  361. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  362. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  363. package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -1
  364. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  365. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  366. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  367. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  368. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  369. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  370. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  371. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
  372. package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -1
  373. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
  374. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
  375. package/dist/types/tests/test-event-stream.d.ts +1 -1
  376. package/dist/types/tests/test-event-stream.d.ts.map +1 -1
  377. package/dist/types/tests/test-stores.d.ts +5 -4
  378. package/dist/types/tests/test-stores.d.ts.map +1 -1
  379. package/dist/types/tests/test-suite.d.ts +1 -2
  380. package/dist/types/tests/test-suite.d.ts.map +1 -1
  381. package/dist/types/tests/utils/test-data-generator.d.ts +20 -1
  382. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  383. package/dist/types/tests/utils/test-validation-state-reader.d.ts +15 -0
  384. package/dist/types/tests/utils/test-validation-state-reader.d.ts.map +1 -0
  385. package/package.json +2 -2
  386. package/src/core/core-protocol.ts +3 -3
  387. package/src/core/dwn-constant.ts +7 -1
  388. package/src/core/dwn-error.ts +13 -7
  389. package/src/core/grant-authorization.ts +11 -20
  390. package/src/core/message-reply.ts +6 -5
  391. package/src/core/messages-grant-authorization.ts +37 -100
  392. package/src/core/protocol-authorization-action.ts +29 -38
  393. package/src/core/protocol-authorization-validation.ts +41 -98
  394. package/src/core/protocol-authorization.ts +56 -202
  395. package/src/core/protocols-grant-authorization.ts +9 -9
  396. package/src/core/recording-validation-state-reader.ts +130 -0
  397. package/src/core/records-grant-authorization.ts +16 -16
  398. package/src/core/replication-apply.ts +412 -0
  399. package/src/core/resumable-task-manager.ts +10 -8
  400. package/src/core/validation-state-reader.ts +350 -0
  401. package/src/dwn.ts +417 -30
  402. package/src/enums/dwn-interface-method.ts +0 -1
  403. package/src/event-stream/durable-event-log.ts +509 -0
  404. package/src/event-stream/event-emitter-wake-publisher.ts +34 -0
  405. package/src/handlers/messages-query.ts +203 -0
  406. package/src/handlers/messages-read.ts +9 -10
  407. package/src/handlers/messages-subscribe.ts +12 -13
  408. package/src/handlers/protocols-configure.ts +37 -58
  409. package/src/handlers/protocols-query.ts +1 -1
  410. package/src/handlers/records-count.ts +24 -17
  411. package/src/handlers/records-delete.ts +29 -27
  412. package/src/handlers/records-query.ts +38 -17
  413. package/src/handlers/records-read.ts +63 -50
  414. package/src/handlers/records-subscribe.ts +132 -19
  415. package/src/handlers/records-write.ts +77 -168
  416. package/src/index.ts +16 -20
  417. package/src/interfaces/messages-query.ts +70 -0
  418. package/src/interfaces/protocols-configure.ts +12 -4
  419. package/src/interfaces/protocols-query.ts +4 -5
  420. package/src/interfaces/records-count.ts +9 -4
  421. package/src/interfaces/records-delete.ts +25 -5
  422. package/src/interfaces/records-query.ts +9 -4
  423. package/src/interfaces/records-read.ts +4 -4
  424. package/src/interfaces/records-subscribe.ts +9 -4
  425. package/src/interfaces/records-write.ts +41 -13
  426. package/src/protocols/permissions.ts +32 -52
  427. package/src/store/index-level.ts +30 -9
  428. package/src/store/level-wrapper.ts +9 -1
  429. package/src/store/message-store-level.ts +757 -47
  430. package/src/store/storage-controller.ts +74 -63
  431. package/src/types/message-store.ts +45 -2
  432. package/src/types/message-types.ts +3 -1
  433. package/src/types/messages-types.ts +26 -65
  434. package/src/types/method-handler.ts +3 -3
  435. package/src/types/permission-types.ts +1 -1
  436. package/src/types/subscriptions.ts +53 -42
  437. package/src/types/validation-state-reader.ts +127 -0
  438. package/src/utils/messages.ts +25 -1
  439. package/src/utils/record-limit-occupancy.ts +377 -0
  440. package/src/utils/records.ts +69 -13
  441. package/src/utils/replication.ts +122 -0
  442. package/dist/esm/src/core/record-chain.js +0 -64
  443. package/dist/esm/src/core/record-chain.js.map +0 -1
  444. package/dist/esm/src/event-stream/event-emitter-event-log.js +0 -334
  445. package/dist/esm/src/event-stream/event-emitter-event-log.js.map +0 -1
  446. package/dist/esm/src/handlers/messages-sync.js +0 -581
  447. package/dist/esm/src/handlers/messages-sync.js.map +0 -1
  448. package/dist/esm/src/interfaces/messages-sync.js +0 -54
  449. package/dist/esm/src/interfaces/messages-sync.js.map +0 -1
  450. package/dist/esm/src/smt/smt-store-level.js +0 -103
  451. package/dist/esm/src/smt/smt-store-level.js.map +0 -1
  452. package/dist/esm/src/smt/smt-store-memory.js +0 -41
  453. package/dist/esm/src/smt/smt-store-memory.js.map +0 -1
  454. package/dist/esm/src/smt/smt-utils.js +0 -129
  455. package/dist/esm/src/smt/smt-utils.js.map +0 -1
  456. package/dist/esm/src/smt/sparse-merkle-tree.js +0 -577
  457. package/dist/esm/src/smt/sparse-merkle-tree.js.map +0 -1
  458. package/dist/esm/src/state-index/state-index-level.js +0 -191
  459. package/dist/esm/src/state-index/state-index-level.js.map +0 -1
  460. package/dist/esm/src/sync/records-projection.js +0 -228
  461. package/dist/esm/src/sync/records-projection.js.map +0 -1
  462. package/dist/esm/src/types/smt-types.js +0 -5
  463. package/dist/esm/src/types/smt-types.js.map +0 -1
  464. package/dist/esm/src/types/state-index.js +0 -2
  465. package/dist/esm/src/types/state-index.js.map +0 -1
  466. package/dist/esm/tests/event-emitter-event-log.spec.js +0 -499
  467. package/dist/esm/tests/event-emitter-event-log.spec.js.map +0 -1
  468. package/dist/esm/tests/handlers/messages-sync.spec.js +0 -1771
  469. package/dist/esm/tests/handlers/messages-sync.spec.js.map +0 -1
  470. package/dist/esm/tests/smt/smt-store-level.spec.js +0 -132
  471. package/dist/esm/tests/smt/smt-store-level.spec.js.map +0 -1
  472. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +0 -732
  473. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +0 -1
  474. package/dist/esm/tests/state-index/state-index-level.spec.js +0 -245
  475. package/dist/esm/tests/state-index/state-index-level.spec.js.map +0 -1
  476. package/dist/esm/tests/sync/records-projection.spec.js +0 -245
  477. package/dist/esm/tests/sync/records-projection.spec.js.map +0 -1
  478. package/dist/types/src/core/record-chain.d.ts +0 -24
  479. package/dist/types/src/core/record-chain.d.ts.map +0 -1
  480. package/dist/types/src/event-stream/event-emitter-event-log.d.ts +0 -80
  481. package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +0 -1
  482. package/dist/types/src/handlers/messages-sync.d.ts +0 -83
  483. package/dist/types/src/handlers/messages-sync.d.ts.map +0 -1
  484. package/dist/types/src/interfaces/messages-sync.d.ts +0 -23
  485. package/dist/types/src/interfaces/messages-sync.d.ts.map +0 -1
  486. package/dist/types/src/smt/smt-store-level.d.ts +0 -32
  487. package/dist/types/src/smt/smt-store-level.d.ts.map +0 -1
  488. package/dist/types/src/smt/smt-store-memory.d.ts +0 -22
  489. package/dist/types/src/smt/smt-store-memory.d.ts.map +0 -1
  490. package/dist/types/src/smt/smt-utils.d.ts +0 -58
  491. package/dist/types/src/smt/smt-utils.d.ts.map +0 -1
  492. package/dist/types/src/smt/sparse-merkle-tree.d.ts +0 -124
  493. package/dist/types/src/smt/sparse-merkle-tree.d.ts.map +0 -1
  494. package/dist/types/src/state-index/state-index-level.d.ts +0 -83
  495. package/dist/types/src/state-index/state-index-level.d.ts.map +0 -1
  496. package/dist/types/src/sync/records-projection.d.ts +0 -98
  497. package/dist/types/src/sync/records-projection.d.ts.map +0 -1
  498. package/dist/types/src/types/smt-types.d.ts +0 -81
  499. package/dist/types/src/types/smt-types.d.ts.map +0 -1
  500. package/dist/types/src/types/state-index.d.ts +0 -90
  501. package/dist/types/src/types/state-index.d.ts.map +0 -1
  502. package/dist/types/tests/event-emitter-event-log.spec.d.ts +0 -2
  503. package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +0 -1
  504. package/dist/types/tests/handlers/messages-sync.spec.d.ts +0 -2
  505. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +0 -1
  506. package/dist/types/tests/smt/smt-store-level.spec.d.ts +0 -2
  507. package/dist/types/tests/smt/smt-store-level.spec.d.ts.map +0 -1
  508. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts +0 -2
  509. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts.map +0 -1
  510. package/dist/types/tests/state-index/state-index-level.spec.d.ts +0 -2
  511. package/dist/types/tests/state-index/state-index-level.spec.d.ts.map +0 -1
  512. package/dist/types/tests/sync/records-projection.spec.d.ts +0 -2
  513. package/dist/types/tests/sync/records-projection.spec.d.ts.map +0 -1
  514. package/src/core/record-chain.ts +0 -99
  515. package/src/event-stream/event-emitter-event-log.ts +0 -430
  516. package/src/handlers/messages-sync.ts +0 -896
  517. package/src/interfaces/messages-sync.ts +0 -86
  518. package/src/smt/smt-store-level.ts +0 -143
  519. package/src/smt/smt-store-memory.ts +0 -53
  520. package/src/smt/smt-utils.ts +0 -149
  521. package/src/smt/sparse-merkle-tree.ts +0 -698
  522. package/src/state-index/state-index-level.ts +0 -239
  523. package/src/sync/records-projection.ts +0 -328
  524. package/src/types/smt-types.ts +0 -95
  525. package/src/types/state-index.ts +0 -100
@@ -1,80 +0,0 @@
1
- import type { KeyValues } from '../types/query-types.js';
2
- import type { EventLog, EventLogReadOptions, EventLogReadResult, EventLogSubscribeOptions, EventSubscription, MessageEvent, ProgressToken, SubscriptionListener } from '../types/subscriptions.js';
3
- export interface EventEmitterEventLogConfig {
4
- /**
5
- * Maximum number of events to retain per tenant.
6
- * Oldest events are evicted when the limit is reached.
7
- * Defaults to 10_000.
8
- */
9
- maxEventsPerTenant?: number;
10
- /**
11
- * An optional error handler in order to be able to react to any errors or warnings.
12
- * By default we log errors with `console.error`.
13
- */
14
- errorHandler?: (error: any) => void;
15
- }
16
- /**
17
- * In-memory implementation of {@link EventLog} backed by `mitt` for in-process
18
- * pub/sub and a per-tenant `Map<number, StoredEntry>` for persistence with
19
- * cursor-based reads.
20
- *
21
- * Suitable for single-process embedded DWN instances and tests.
22
- * For multi-node deployments, use a distributed implementation (NATS, Redis, etc.).
23
- */
24
- export declare class EventEmitterEventLog implements EventLog {
25
- private readonly emitter;
26
- private isOpen;
27
- private readonly errorHandler;
28
- private readonly maxEventsPerTenant;
29
- /**
30
- * Per-tenant ordered event storage.
31
- * Key: tenant DID → Map of seq → StoredEntry.
32
- */
33
- private readonly tenantLogs;
34
- /**
35
- * Per-tenant monotonic sequence counter.
36
- */
37
- private readonly tenantSeqs;
38
- /**
39
- * Epoch for this EventLog instance. Generated once at construction as a
40
- * UUID v4. Changes every restart (correct for in-memory — state is lost).
41
- */
42
- private readonly epoch;
43
- constructor(config?: EventEmitterEventLogConfig);
44
- /**
45
- * Derives a stable `streamId` for a given tenant. Deterministic — same
46
- * tenant always produces the same streamId on any instance.
47
- */
48
- private getStreamId;
49
- /**
50
- * Constructs a {@link ProgressToken} from internal state.
51
- */
52
- private buildToken;
53
- /**
54
- * Validates a cursor against the current EventLog state. Throws
55
- * `DwnError(EventLogProgressGap)` with {@link ProgressGapInfo} metadata
56
- * if the cursor cannot be resumed.
57
- */
58
- private validateCursor;
59
- open(): Promise<void>;
60
- close(): Promise<void>;
61
- emit(tenant: string, event: MessageEvent, indexes: KeyValues, messageCid: string): Promise<ProgressToken | undefined>;
62
- read(tenant: string, options?: EventLogReadOptions): Promise<EventLogReadResult>;
63
- /**
64
- * Parse a position string into an internal sequence number using BigInt
65
- * for safe handling of values beyond `Number.MAX_SAFE_INTEGER`.
66
- *
67
- * The returned `number` is safe for the in-memory EventLog which uses
68
- * `Map<number, StoredEntry>` keys — in-memory sequences will never
69
- * exceed safe integer range. The BigInt parse validates correctness
70
- * before the narrowing conversion.
71
- */
72
- private static parsePosition;
73
- subscribe(tenant: string, id: string, listener: SubscriptionListener, options?: EventLogSubscribeOptions): Promise<EventSubscription>;
74
- getReplayBounds(tenant: string): Promise<{
75
- oldest: ProgressToken;
76
- latest: ProgressToken;
77
- } | undefined>;
78
- trim(tenant: string, olderThan: number | string): Promise<void>;
79
- }
80
- //# sourceMappingURL=event-emitter-event-log.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-emitter-event-log.d.ts","sourceRoot":"","sources":["../../../../src/event-stream/event-emitter-event-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EACV,QAAQ,EAER,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EAGZ,aAAa,EACb,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AA8BnC,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuF;IACpH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoD;IAE/E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAE7D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,GAAE,0BAA+B;IASnD;;;OAGG;YACW,WAAW;IAQzB;;OAEG;YACW,UAAU;IASxB;;;;OAIG;YACW,cAAc;IA0Cf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAwCrH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgDjG;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAaf,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,iBAAiB,CAAC;IA2FhB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,GAAG,SAAS,CAAC;IAoBtG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB7E"}
@@ -1,83 +0,0 @@
1
- import type { HandlerDependencies, MethodHandler } from '../types/method-handler.js';
2
- import type { MessagesSyncMessage, MessagesSyncReply } from '../types/messages-types.js';
3
- export declare class MessagesSyncHandler implements MethodHandler {
4
- private readonly deps;
5
- constructor(deps: HandlerDependencies);
6
- handle({ tenant, message }: {
7
- tenant: string;
8
- message: MessagesSyncMessage;
9
- }): Promise<MessagesSyncReply>;
10
- private handleRoot;
11
- private getRootHex;
12
- private getIndexedRootHash;
13
- private handleSubtree;
14
- private handleLeaves;
15
- private getSubtreeHash;
16
- private getLeaves;
17
- private getIndexedSubtreeHash;
18
- private getIndexedLeaves;
19
- /**
20
- * Handle the 'diff' action: the client sends its subtree hashes at a given
21
- * depth, and the server compares them against its own tree to compute the
22
- * set difference in a single round-trip.
23
- *
24
- * Response includes:
25
- * - `onlyRemote`: messages the server has that the client doesn't, with
26
- * inline data for small payloads.
27
- * - `onlyLocal`: bit prefixes where the client has entries the server
28
- * doesn't (client can enumerate its own leaves for these prefixes).
29
- */
30
- private handleDiff;
31
- /**
32
- * Walk the server's SMT to the given depth and collect all non-empty
33
- * subtree hashes as a `{ prefix: hexHash }` map.
34
- */
35
- private collectSubtreeHashes;
36
- private createProjectionSnapshot;
37
- private static getServerLeaves;
38
- private static getServerSubtreeHash;
39
- private static getIndexedLeavesFromStateIndex;
40
- private static getIndexedSubtreeHashFromStateIndex;
41
- /**
42
- * Get the hex-encoded default hash for a given depth. Lazily cached.
43
- */
44
- private _defaultHashHexCache?;
45
- private getDefaultHashHex;
46
- /**
47
- * Build diff response entries for the given messageCids.
48
- * Reads each message from the MessageStore and, for small RecordsWrite
49
- * payloads, inlines the data as base64url.
50
- */
51
- private buildDiffEntries;
52
- private buildProjectedDependencyEntries;
53
- private readRecordsDeleteInitialWrite;
54
- private static addRecordsInitialWriteDependency;
55
- private addProtocolConfigClosureDependencies;
56
- private getCachedGoverningProtocolsConfigure;
57
- private static addProtocolConfigDependencies;
58
- private static addProtocolConfigDependency;
59
- private static takeNextUnvisitedProtocol;
60
- private static queueUnvisitedProtocols;
61
- private static protocolsConfigureUses;
62
- private readGoverningProtocolsConfigure;
63
- private static recordsWriteProtocolMetadata;
64
- private static recordsDeleteRecordId;
65
- private static toWireMessage;
66
- /**
67
- * Read a message and its data from the MessageStore + DataStore by CID.
68
- */
69
- private readMessageByCid;
70
- private static hasEncodedData;
71
- private static getProjectionScopes;
72
- private withProjectionSnapshot;
73
- /**
74
- * Read a ReadableStream to completion and return the bytes.
75
- */
76
- private static streamToBytes;
77
- /**
78
- * Parse a bit prefix string (e.g. "0110101") into a boolean array.
79
- */
80
- private static parseBitPrefix;
81
- private static authorizeMessagesSync;
82
- }
83
- //# sourceMappingURL=messages-sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages-sync.d.ts","sourceRoot":"","sources":["../../../../src/handlers/messages-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EAAsD,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AA2C7I,qBAAa,mBAAoB,YAAW,aAAa;IAE3C,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,mBAAmB;IAEzC,MAAM,CAAC,EAClB,MAAM,EACN,OAAO,EACR,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,mBAAmB,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAgDlE,UAAU;YAYV,UAAU;YAaV,kBAAkB;YAWlB,aAAa;YAcb,YAAY;YAcZ,cAAc;YAad,SAAS;YAaT,qBAAqB;YAQrB,gBAAgB;IAQ9B;;;;;;;;;;OAUG;YACW,UAAU;IA2FxB;;;OAGG;YACW,oBAAoB;YA2CpB,wBAAwB;mBAejB,eAAe;mBAcf,oBAAoB;mBAcpB,8BAA8B;mBAa9B,mCAAmC;IAaxD;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAC,CAAsB;YACrC,iBAAiB;IAY/B;;;;OAIG;YACW,gBAAgB;YAiChB,+BAA+B;YAkD/B,6BAA6B;mBAkBtB,gCAAgC;YAkBvC,oCAAoC;YAoCpC,oCAAoC;mBAiB7B,6BAA6B;mBAuB7B,2BAA2B;IAkBhD,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAexC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAYtC,OAAO,CAAC,MAAM,CAAC,sBAAsB;YAcvB,+BAA+B;IAoB7C,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAc3C,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC,OAAO,CAAC,MAAM,CAAC,aAAa;IAK5B;;OAEG;YACW,gBAAgB;IAyC9B,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,OAAO,CAAC,MAAM,CAAC,mBAAmB;YAWpB,sBAAsB;IAkBpC;;OAEG;mBACkB,aAAa;IAqBlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;mBAgBR,qBAAqB;CAuB3C"}
@@ -1,23 +0,0 @@
1
- import type { MessageSigner } from '../types/signer.js';
2
- import type { RecordsProjectionScope } from '../sync/records-projection.js';
3
- import type { MessagesSyncAction, MessagesSyncMessage } from '../types/messages-types.js';
4
- import { AbstractMessage } from '../core/abstract-message.js';
5
- export type MessagesSyncOptions = {
6
- signer: MessageSigner;
7
- action: MessagesSyncAction;
8
- protocol?: string;
9
- projectionRootVersion?: string;
10
- projectionScopes?: RecordsProjectionScope[];
11
- prefix?: string;
12
- messageTimestamp?: string;
13
- permissionGrantIds?: string[];
14
- /** For `action: 'diff'`: client's subtree hashes at `depth`. */
15
- hashes?: Record<string, string>;
16
- /** For `action: 'diff'`: bit depth at which hashes were computed. */
17
- depth?: number;
18
- };
19
- export declare class MessagesSync extends AbstractMessage<MessagesSyncMessage> {
20
- static parse(message: MessagesSyncMessage): Promise<MessagesSync>;
21
- static create(options: MessagesSyncOptions): Promise<MessagesSync>;
22
- }
23
- //# sourceMappingURL=messages-sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages-sync.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/messages-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAA0B,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAElH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAS9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAG,aAAa,CAAC;IACvB,MAAM,EAAG,kBAAkB,CAAC;IAC5B,QAAQ,CAAC,EAAG,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC5C,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAG,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAG,MAAM,EAAE,CAAC;IAC/B,gEAAgE;IAChE,MAAM,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qEAAqE;IACrE,KAAK,CAAC,EAAG,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,YAAa,SAAQ,eAAe,CAAC,mBAAmB,CAAC;WAEhD,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;WAqB1D,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;CAkChF"}
@@ -1,32 +0,0 @@
1
- /**
2
- * LevelDB-backed implementation of SMTNodeStore.
3
- *
4
- * Storage layout:
5
- * - Nodes are stored under the 'nodes' sublevel, keyed by hex-encoded hash
6
- * - The root hash is stored under the 'meta' sublevel with key 'root'
7
- * - Node values are JSON-serialized, with Uint8Array fields encoded as hex strings
8
- *
9
- * This store wraps a LevelWrapper sublevel provided by the parent (e.g. StateIndexLevel).
10
- * The parent manages the LevelDB lifecycle; open()/close() here only handle partition setup.
11
- */
12
- import type { Hash, SMTNode, SMTNodeStore } from '../types/smt-types.js';
13
- import type { LevelWrapper } from '../store/level-wrapper.js';
14
- export declare class SMTStoreLevel implements SMTNodeStore {
15
- private readonly db;
16
- private nodesPartition;
17
- private metaPartition;
18
- private initialized;
19
- constructor(sublevel: LevelWrapper<string>);
20
- open(): Promise<void>;
21
- close(): Promise<void>;
22
- clear(): Promise<void>;
23
- getNode(hash: Hash): Promise<SMTNode | undefined>;
24
- putNode(hash: Hash, node: SMTNode): Promise<void>;
25
- deleteNode(hash: Hash): Promise<void>;
26
- getRoot(): Promise<Hash | undefined>;
27
- setRoot(hash: Hash): Promise<void>;
28
- private ensureInitialized;
29
- private serializeNode;
30
- private deserializeNode;
31
- }
32
- //# sourceMappingURL=smt-store-level.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smt-store-level.d.ts","sourceRoot":"","sources":["../../../../src/smt/smt-store-level.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAgC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEvG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAkB9D,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAS;gBAEhB,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;IAIpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAYjD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAWpC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,eAAe;CAiBxB"}
@@ -1,22 +0,0 @@
1
- /**
2
- * In-memory implementation of SMTNodeStore.
3
- * Useful for tests and lightweight/ephemeral use cases.
4
- */
5
- import type { Hash, SMTNode, SMTNodeStore } from '../types/smt-types.js';
6
- export declare class SMTStoreMemory implements SMTNodeStore {
7
- private readonly nodes;
8
- private root;
9
- open(): Promise<void>;
10
- close(): Promise<void>;
11
- clear(): Promise<void>;
12
- getNode(hash: Hash): Promise<SMTNode | undefined>;
13
- putNode(hash: Hash, node: SMTNode): Promise<void>;
14
- deleteNode(hash: Hash): Promise<void>;
15
- getRoot(): Promise<Hash | undefined>;
16
- setRoot(hash: Hash): Promise<void>;
17
- /**
18
- * Get the number of nodes currently stored (useful for tests).
19
- */
20
- get size(): number;
21
- }
22
- //# sourceMappingURL=smt-store-memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smt-store-memory.d.ts","sourceRoot":"","sources":["../../../../src/smt/smt-store-memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIzE,qBAAa,cAAe,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,IAAI,CAAmB;IAEzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAIjD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAIpC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -1,58 +0,0 @@
1
- /**
2
- * Utility functions for the Sparse Merkle Tree.
3
- * Uses SHA-256 from multiformats (already a dependency of dwn-sdk-js).
4
- */
5
- import type { Hash } from '../types/smt-types.js';
6
- /** The tree depth — one level per bit of a SHA-256 hash. */
7
- export declare const SMT_DEPTH = 256;
8
- /** A constant zero hash (32 bytes of 0x00). */
9
- export declare const ZERO_HASH: Hash;
10
- export declare function getDefaultHashes(): Hash[];
11
- /**
12
- * Reset the cached default hashes. Only used by tests to verify the
13
- * uninitialized code path in `getDefaultHashes()`.
14
- * @internal
15
- */
16
- export declare function resetDefaultHashesForTesting(): void;
17
- /**
18
- * Initialize the default hashes array. Must be called once before using the SMT.
19
- * This is async because sha256.digest is async.
20
- */
21
- export declare function initDefaultHashes(): Promise<Hash[]>;
22
- /**
23
- * Hash two child hashes together: H(left || right).
24
- * Uses SHA-256 via multiformats.
25
- */
26
- export declare function hashChildren(left: Hash, right: Hash): Promise<Hash>;
27
- /**
28
- * Hash a leaf node: H(0x00 || keyHash || valueCid_bytes).
29
- * The 0x00 prefix distinguishes leaf hashes from internal node hashes,
30
- * preventing second-preimage attacks.
31
- */
32
- export declare function hashLeaf(keyHash: Hash, valueCid: string): Promise<Hash>;
33
- /**
34
- * Compute SHA-256 of a string (used to hash messageCid into the 256-bit key space).
35
- */
36
- export declare function hashKey(key: string): Promise<Hash>;
37
- /**
38
- * Extract the bit at a given depth from a 256-bit hash.
39
- * Depth 0 is the most significant bit of the first byte.
40
- *
41
- * @param hash - The 32-byte hash.
42
- * @param depth - The bit position (0 = MSB of byte 0, 255 = LSB of byte 31).
43
- * @returns `true` for 1 (right), `false` for 0 (left).
44
- */
45
- export declare function getBit(hash: Hash, depth: number): boolean;
46
- /**
47
- * Compare two hashes for equality.
48
- */
49
- export declare function hashEquals(a: Hash, b: Hash): boolean;
50
- /**
51
- * Convert a hash to a hex string for use as a store key.
52
- */
53
- export declare function hashToHex(hash: Hash): string;
54
- /**
55
- * Convert a hex string back to a Hash.
56
- */
57
- export declare function hexToHash(hex: string): Hash;
58
- //# sourceMappingURL=smt-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smt-utils.d.ts","sourceRoot":"","sources":["../../../../src/smt/smt-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAIlD,4DAA4D;AAC5D,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,EAAE,IAAyB,CAAC;AAalD,wBAAgB,gBAAgB,IAAI,IAAI,EAAE,CAQzC;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAczD;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzE;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7E;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxD;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAUpD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAM3C"}
@@ -1,124 +0,0 @@
1
- /**
2
- * Sparse Merkle Tree (SMT) implementation.
3
- *
4
- * A 256-level binary trie where:
5
- * - Keys are SHA-256 hashes of messageCids (uniformly distributed across 2^256 key space)
6
- * - Leaves store the messageCid value
7
- * - Internal nodes store H(leftChild || rightChild)
8
- * - Empty subtrees are represented implicitly via precomputed default hashes
9
- *
10
- * Key properties:
11
- * - Deterministic: the same set of key-value pairs always produces the same root hash
12
- * - O(log n) insert, delete, and proof operations (practically O(256) worst case)
13
- * - Supports inclusion and non-inclusion proofs
14
- * - Root hash provides a fingerprint of the entire set for O(1) comparison
15
- */
16
- import type { Hash, SMTDiffResult, SMTNodeStore, SMTProof } from '../types/smt-types.js';
17
- export declare class SparseMerkleTree {
18
- private readonly store;
19
- private defaultHashes;
20
- constructor(store: SMTNodeStore);
21
- /**
22
- * Initialize the SMT. Must be called before any operations.
23
- * Opens the store and precomputes default hashes.
24
- */
25
- initialize(): Promise<void>;
26
- /**
27
- * Close the underlying store.
28
- */
29
- close(): Promise<void>;
30
- /**
31
- * Clear all data from the tree.
32
- */
33
- clear(): Promise<void>;
34
- /**
35
- * Get the current root hash. Returns the default empty root if no root is set.
36
- */
37
- getRoot(): Promise<Hash>;
38
- /**
39
- * Insert a messageCid into the tree.
40
- * The key is SHA-256(messageCid), the value is the messageCid string.
41
- *
42
- * @returns the new root hash after insertion
43
- */
44
- insert(messageCid: string): Promise<Hash>;
45
- /**
46
- * Delete a messageCid from the tree.
47
- *
48
- * @returns the new root hash after deletion
49
- */
50
- delete(messageCid: string): Promise<Hash>;
51
- /**
52
- * Check if a messageCid exists in the tree.
53
- */
54
- has(messageCid: string): Promise<boolean>;
55
- /**
56
- * Generate a membership proof (inclusion or non-inclusion) for a messageCid.
57
- */
58
- getProof(messageCid: string): Promise<SMTProof>;
59
- /**
60
- * Get the hash of a subtree at a given bit prefix.
61
- * Used by the sync protocol for tree walking.
62
- *
63
- * @param prefix - array of booleans representing the path (false=left, true=right)
64
- * @returns the hash of the subtree at that prefix
65
- */
66
- getSubtreeHash(prefix: boolean[]): Promise<Hash>;
67
- /**
68
- * Get all leaf messageCids under a given prefix.
69
- * Used by the sync protocol for tree walking.
70
- */
71
- getLeaves(prefix: boolean[]): Promise<string[]>;
72
- /**
73
- * Compute a local diff between this tree and another tree's state,
74
- * given access to the other tree instance.
75
- *
76
- * This is used for same-process diffing (e.g., in tests or local operations).
77
- * For remote diffing, the sync protocol exchanges subtree hashes via messages.
78
- */
79
- diff(other: SparseMerkleTree): Promise<SMTDiffResult>;
80
- /**
81
- * Recursively insert a leaf into the tree, returning the new hash for the subtree at `depth`.
82
- */
83
- private insertAtNode;
84
- /**
85
- * When two leaves collide at the same position in the tree, push them down
86
- * until their key paths diverge, creating internal nodes along the way.
87
- *
88
- * For example, if two leaves share the first 3 bits but diverge at bit 3,
89
- * and we're currently at depth 0, we need to create internal nodes at depths
90
- * 0, 1, and 2 (where one child is the chain and the other is a default hash),
91
- * plus the divergence node at depth 3 where the two leaves split.
92
- */
93
- private splitLeaves;
94
- /**
95
- * Recursively delete a key from the tree, returning the new hash for the subtree at `depth`.
96
- */
97
- private deleteAtNode;
98
- /**
99
- * Check if a key exists at the given node.
100
- */
101
- private existsAtNode;
102
- /**
103
- * Generate a proof for the given key at the given node.
104
- */
105
- private generateProof;
106
- /**
107
- * Compute the subtree hash for a leaf that exists above the target prefix depth.
108
- * The leaf's effective position is determined by its keyHash bits.
109
- */
110
- private computeSubtreeHashForLeaf;
111
- /**
112
- * Check if a leaf's keyHash matches a given prefix.
113
- */
114
- private leafMatchesPrefix;
115
- /**
116
- * Collect all leaf messageCids in the subtree rooted at the given hash.
117
- */
118
- private collectLeaves;
119
- /**
120
- * Recursively diff two subtrees, collecting leaves that exist only in one or the other.
121
- */
122
- private diffAtNode;
123
- }
124
- //# sourceMappingURL=sparse-merkle-tree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sparse-merkle-tree.d.ts","sourceRoot":"","sources":["../../../../src/smt/sparse-merkle-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAgC,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIvH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,aAAa,CAAU;gBAEnB,KAAK,EAAE,YAAY;IAI/B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;;OAKG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB/C;;;;OAIG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C;;OAEG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/C;;OAEG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMrD;;;;;;OAMG;IACG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCtD;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmCrD;;;;;;OAMG;IACG,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkB3D;;OAEG;YACW,YAAY;IAyE1B;;;;;;;;OAQG;YACW,WAAW;IAoEzB;;OAEG;YACW,YAAY;IA6E1B;;OAEG;YACW,YAAY;IA4B1B;;OAEG;YACW,aAAa;IAsC3B;;;OAGG;YACW,yBAAyB;IAiBvC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;YACW,aAAa;IAqB3B;;OAEG;YACW,UAAU;CA2GzB"}
@@ -1,83 +0,0 @@
1
- /**
2
- * LevelDB-backed implementation of the StateIndex interface.
3
- *
4
- * Manages per-tenant Sparse Merkle Trees (global + per-protocol sub-trees).
5
- *
6
- * All data lives within a single LevelDB instance, partitioned by sublevels:
7
- * {tenant}/global/ -> SMT nodes + root for the tenant's global tree
8
- * {tenant}/proto/{proto}/ -> SMT nodes + root for a protocol-scoped tree
9
- * {tenant}/meta/{cid} -> JSON(indexes) for reverse lookup during deletion
10
- */
11
- import type { Hash } from '../types/smt-types.js';
12
- import type { KeyValues } from '../types/query-types.js';
13
- import type { StateIndex } from '../types/state-index.js';
14
- import { createLevelDatabase } from '../store/level-wrapper.js';
15
- export type StateIndexLevelConfig = {
16
- /**
17
- * Must be a directory path (relative or absolute) where LevelDB will store its files,
18
- * or in browsers, the name of the IDBDatabase to be opened.
19
- */
20
- location?: string;
21
- createLevelDatabase?: typeof createLevelDatabase;
22
- };
23
- export declare class StateIndexLevel implements StateIndex {
24
- private readonly config;
25
- private db;
26
- /**
27
- * Cache of per-tenant global SMTs. Lazily populated on first access.
28
- * Stores promises to avoid race conditions when multiple concurrent operations
29
- * trigger lazy initialization of the same tenant's SMT.
30
- */
31
- private readonly globalTrees;
32
- /**
33
- * Cache of per-tenant, per-protocol SMTs. Key format: `{tenant}\x00{protocol}`
34
- * Stores promises to avoid race conditions (same reason as globalTrees).
35
- */
36
- private readonly protocolTrees;
37
- constructor(config?: StateIndexLevelConfig);
38
- open(): Promise<void>;
39
- close(): Promise<void>;
40
- clear(): Promise<void>;
41
- insert(tenant: string, messageCid: string, indexes: KeyValues): Promise<void>;
42
- delete(tenant: string, messageCids: string[]): Promise<void>;
43
- getRoot(tenant: string): Promise<Hash>;
44
- getProtocolRoot(tenant: string, protocol: string): Promise<Hash>;
45
- getSubtreeHash(tenant: string, prefix: boolean[]): Promise<Hash>;
46
- getProtocolSubtreeHash(tenant: string, protocol: string, prefix: boolean[]): Promise<Hash>;
47
- getLeaves(tenant: string, prefix: boolean[]): Promise<string[]>;
48
- getProtocolLeaves(tenant: string, protocol: string, prefix: boolean[]): Promise<string[]>;
49
- /**
50
- * Get or create the global SMT for a tenant.
51
- * Uses a promise-based cache to prevent concurrent callers from racing to
52
- * initialize the same tenant's SMT twice.
53
- */
54
- private getGlobalTree;
55
- /**
56
- * Get or create a protocol-scoped SMT for a tenant.
57
- * Uses a promise-based cache to prevent concurrent callers from racing to
58
- * initialize the same tenant's SMT twice.
59
- */
60
- private getProtocolTree;
61
- /**
62
- * Create and initialize a new SparseMerkleTree backed by a sublevel chain
63
- * within the single LevelDB instance.
64
- */
65
- private createTree;
66
- /**
67
- * Store the indexes for a messageCid so we can look up the protocol during deletion.
68
- */
69
- private storeIndexes;
70
- /**
71
- * Get the stored indexes for a messageCid.
72
- */
73
- private getStoredIndexes;
74
- /**
75
- * Delete the stored indexes for a messageCid.
76
- */
77
- private deleteStoredIndexes;
78
- /**
79
- * Get the metadata partition for a tenant.
80
- */
81
- private getMetaPartition;
82
- }
83
- //# sourceMappingURL=state-index-level.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-index-level.d.ts","sourceRoot":"","sources":["../../../../src/state-index/state-index-level.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK1D,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAE9E,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAG,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAG,OAAO,mBAAmB,CAAC;CACnD,CAAC;AAEF,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,EAAE,CAAwB;IAElC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqD;IAEjF;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqD;gBAEvE,MAAM,CAAC,EAAE,qBAAqB;IAQpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1F,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK/D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO/F;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAYvB;;;OAGG;YACW,UAAU;IAYxB;;OAEG;YACW,YAAY;IAO1B;;OAEG;YACW,gBAAgB;IAS9B;;OAEG;YACW,mBAAmB;IAKjC;;OAEG;YACW,gBAAgB;CAG/B"}
@@ -1,98 +0,0 @@
1
- import type { Hash } from '../types/smt-types.js';
2
- import type { MessageStore, MessageStoreOptions } from '../types/message-store.js';
3
- /**
4
- * Projection-root algorithm for record-primary scoped subsets.
5
- *
6
- * This version builds an on-demand SMT over latest Records primary message CIDs
7
- * selected by protocol plus optional exact protocolPath or context subtree.
8
- * Dependency records, protocol configs, and record data payloads are not part
9
- * of this root.
10
- */
11
- export declare const RECORDS_PROJECTION_ROOT_VERSION = "records-primary-scope-root-v1";
12
- /**
13
- * A Records primary projection scope.
14
- *
15
- * `protocolPath` is an exact type-path match. `contextId` is a boundary-aware
16
- * subtree match: the candidate context must equal the scoped context or start
17
- * with `${contextId}/`. `protocolPath` and `contextId` are mutually exclusive.
18
- */
19
- export type RecordsProjectionScope = {
20
- protocol: string;
21
- protocolPath?: string;
22
- contextId?: string;
23
- };
24
- export type RecordsProjectionInput = {
25
- tenant: string;
26
- messageStore: MessageStore;
27
- scopes: readonly [RecordsProjectionScope, ...RecordsProjectionScope[]];
28
- options?: MessageStoreOptions;
29
- };
30
- export type RecordsProjectionTreeInput = RecordsProjectionInput & {
31
- prefix: boolean[];
32
- };
33
- export type RecordsProjectionSnapshot = {
34
- getRoot(): Promise<Hash>;
35
- getRootHex(): Promise<string>;
36
- getSubtreeHash(prefix: boolean[]): Promise<Hash>;
37
- getLeaves(prefix: boolean[]): Promise<string[]>;
38
- close(): Promise<void>;
39
- };
40
- export type NormalizedRecordsProjectionScope = {
41
- protocol: string;
42
- } | {
43
- protocol: string;
44
- protocolPath: string;
45
- } | {
46
- protocol: string;
47
- contextId: string;
48
- };
49
- /**
50
- * Computes deterministic on-demand roots for Records projections.
51
- *
52
- * The snapshot API performs one store enumeration and serves tree operations
53
- * from that in-memory view. A future store-level snapshot/high-watermark can be
54
- * threaded through the `options` input without changing the projection shape.
55
- */
56
- export declare class RecordsProjection {
57
- /**
58
- * Returns the sorted latest Records primary message CIDs covered by a scope union.
59
- */
60
- static getPrimaryMessageCids({ tenant, messageStore, scopes, options, }: RecordsProjectionInput): Promise<string[]>;
61
- /**
62
- * Returns the projection root hash.
63
- */
64
- static getRoot(input: RecordsProjectionInput): Promise<Hash>;
65
- /**
66
- * Returns the projection root hash encoded as lowercase hex.
67
- */
68
- static getRootHex(input: RecordsProjectionInput): Promise<string>;
69
- /**
70
- * Returns the subtree hash for a bit prefix within this projection.
71
- */
72
- static getSubtreeHash(input: RecordsProjectionTreeInput): Promise<Hash>;
73
- /**
74
- * Returns the message CIDs under a bit prefix within this projection.
75
- */
76
- static getLeaves(input: RecordsProjectionTreeInput): Promise<string[]>;
77
- /**
78
- * Builds an in-memory projection tree from one primary-CID enumeration.
79
- */
80
- static createSnapshot(input: RecordsProjectionInput): Promise<RecordsProjectionSnapshot>;
81
- /**
82
- * Normalizes a scope union into sorted, duplicate-free, subsumption-reduced entries.
83
- */
84
- static normalizeScopes(scopes: readonly [RecordsProjectionScope, ...RecordsProjectionScope[]]): [NormalizedRecordsProjectionScope, ...NormalizedRecordsProjectionScope[]];
85
- private static withTree;
86
- private static createTree;
87
- private static normalizeScope;
88
- private static constructFilters;
89
- private static requireNonEmptyString;
90
- private static scopeKey;
91
- private static isProtocolWideScope;
92
- private static isContextScope;
93
- private static contextIdSubsumes;
94
- private static compareScopes;
95
- private static scopeRank;
96
- private static scopeValue;
97
- }
98
- //# sourceMappingURL=records-projection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"records-projection.d.ts","sourceRoot":"","sources":["../../../../src/sync/records-projection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAWnF;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,kCAAkC,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,SAAS,CAAC,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,sBAAsB,GAAG;IAChE,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAE5B;;OAEG;WACiB,qBAAqB,CAAC,EACxC,MAAM,EACN,YAAY,EACZ,MAAM,EACN,OAAO,GACR,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAc7C;;OAEG;WACiB,OAAO,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE;;OAEG;WACiB,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E;;OAEG;WACiB,cAAc,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpF;;OAEG;WACiB,SAAS,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInF;;OAEG;WACiB,cAAc,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAWrG;;OAEG;WACW,eAAe,CAC3B,MAAM,EAAE,SAAS,CAAC,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,CAAC,GACrE,CAAC,gCAAgC,EAAE,GAAG,gCAAgC,EAAE,CAAC;mBAuCvD,QAAQ;mBAaR,UAAU;IAiB/B,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAyB/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAYvB,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAMlC,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAKhC,OAAO,CAAC,MAAM,CAAC,aAAa;IAkB5B,OAAO,CAAC,MAAM,CAAC,SAAS;IAMxB,OAAO,CAAC,MAAM,CAAC,UAAU;CAK1B"}