@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 +1 @@
1
- {"version":3,"file":"method-handler.d.ts","sourceRoot":"","sources":["../../../../src/types/method-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAA;QACvC,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;KAC5C,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"method-handler.d.ts","sourceRoot":"","sources":["../../../../src/types/method-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACxC,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;KAC5C,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC"}
@@ -74,7 +74,7 @@ export type ProtocolPermissionScope = {
74
74
  * Permission scope for the Messages interface.
75
75
  *
76
76
  * `Read` is the only valid method and acts as a unified scope that authorizes
77
- * `MessagesRead`, `MessagesSubscribe`, and `MessagesSync` operations.
77
+ * `MessagesRead`, `MessagesQuery`, and `MessagesSubscribe` operations.
78
78
  */
79
79
  export type MessagesPermissionScope = {
80
80
  interface: DwnInterfaceName.Messages;
@@ -18,14 +18,17 @@ export type ProgressToken = {
18
18
  epoch: string;
19
19
  /** Monotonic decimal string within `(streamId, epoch)`. Compared numerically. */
20
20
  position: string;
21
- /** The CID of the message associated with this event. */
22
- messageCid: string;
21
+ /**
22
+ * The CID of the message associated with this event. Omitted for high-water
23
+ * cursors that do not point at a delivered in-scope message.
24
+ */
25
+ messageCid?: string;
23
26
  };
24
27
  /**
25
28
  * Reason code for a {@link ProgressGapInfo} — explains why the cursor
26
29
  * cannot be resumed.
27
30
  */
28
- export type ProgressGapReason = 'token_too_old' | 'epoch_mismatch' | 'stream_mismatch';
31
+ export type ProgressGapReason = 'token_too_old' | 'token_too_new' | 'epoch_mismatch' | 'stream_mismatch' | 'message_mismatch';
29
32
  /**
30
33
  * Metadata attached to a `DwnError(DwnErrorCode.EventLogProgressGap, ...)`
31
34
  * when an EventLog implementation cannot resume from a given cursor.
@@ -43,13 +46,7 @@ export type ProgressGapInfo = {
43
46
  reason: ProgressGapReason;
44
47
  };
45
48
  /**
46
- * Internal listener type used by {@link EventLog.emit} to notify in-process
47
- * subscribers. Not intended for direct consumer use — consumers should use
48
- * {@link SubscriptionListener} via {@link EventLog.subscribe}.
49
- */
50
- export type EventListener = (tenant: string, event: MessageEvent, indexes: KeyValues, seq: number) => void;
51
- /**
52
- * MessageEvent contains the message being emitted and an optional initial write message.
49
+ * MessageEvent contains a committed message and an optional initial write message.
53
50
  */
54
51
  export type MessageEvent = {
55
52
  message: GenericMessage;
@@ -76,6 +73,16 @@ export type SubscriptionEvent = {
76
73
  cursor: ProgressToken;
77
74
  /** The event payload (message + optional initialWrite). */
78
75
  event: MessageEvent;
76
+ /** Original row sequence for this message. */
77
+ seq?: string;
78
+ /** CID of the message that produced this event. */
79
+ messageCid?: string;
80
+ /** Whether this event's source row was latest base state at read time. */
81
+ isLatestBaseState?: boolean;
82
+ /** Protocol index value associated with the source row, when present. */
83
+ protocol?: string;
84
+ /** Base64url-encoded inline data carried beside the message payload. */
85
+ encodedData?: string;
79
86
  };
80
87
  /**
81
88
  * End-of-Stored-Events marker. Sent after all catch-up events have been replayed
@@ -127,8 +134,7 @@ export type EventLogSubscribeOptions = {
127
134
  * an EOSE marker, then live events. When omitted, only live events are delivered.
128
135
  *
129
136
  * Tokens must be obtained from a prior interaction with the same EventLog
130
- * instance (e.g. `SubscriptionEvent.cursor`, `EventLogReadResult.cursor`,
131
- * or the return value of `emit()`).
137
+ * instance (e.g. `SubscriptionEvent.cursor` or `EventLogReadResult.cursor`).
132
138
  */
133
139
  cursor?: ProgressToken;
134
140
  /**
@@ -141,15 +147,19 @@ export type EventLogSubscribeOptions = {
141
147
  * A single entry returned by {@link EventLog.read}.
142
148
  */
143
149
  export type EventLogEntry = {
144
- /** Monotonic sequence number scoped to (instance, tenant). */
145
- seq: number;
150
+ /** Monotonic sequence number scoped to (instance, tenant), as a decimal string. */
151
+ seq: string;
152
+ /** The actual delivered log position. Equal to `seq` for store-backed feeds. */
153
+ position?: string;
146
154
  /** The event payload. */
147
155
  event: MessageEvent;
156
+ /** Base64url-encoded inline data carried beside the message payload. */
157
+ encodedData?: string;
148
158
  /** Indexes associated with the event (used for filter matching). */
149
159
  indexes: KeyValues;
150
160
  /**
151
161
  * The CID of the message that produced this event. Populated by
152
- * implementations that track it (e.g. {@link EventEmitterEventLog}).
162
+ * implementations that track it.
153
163
  * Consumers should fall back to computing the CID from the message
154
164
  * if this is absent.
155
165
  */
@@ -172,15 +182,10 @@ export type EventLogReadOptions = {
172
182
  export type EventLogReadResult = {
173
183
  /** Events matching the read request, ordered by ascending seq. */
174
184
  events: EventLogEntry[];
175
- /**
176
- * Progress token for resuming subsequent reads or subscriptions.
177
- *
178
- * - When events are returned: token of the last event.
179
- * - When no events are returned but a cursor was provided: the input cursor
180
- * (meaning "you are caught up, nothing new since this point").
181
- * - When no events exist and no cursor was provided: `undefined`.
182
- */
185
+ /** High-water progress token for resuming subsequent reads or subscriptions. */
183
186
  cursor?: ProgressToken;
187
+ /** True when the scan reached the captured tenant head. */
188
+ drained: boolean;
184
189
  };
185
190
  /**
186
191
  * The EventLog interface provides persistent, ordered event storage with
@@ -190,20 +195,11 @@ export type EventLogReadResult = {
190
195
  * that enable cursor-based resume after disconnects.
191
196
  *
192
197
  * The interface is intentionally transport-agnostic — implementations can be
193
- * backed by LevelDB (embedded), SQL, NATS JetStream, Redis Streams, etc.
194
- * Each implementation owns the catch-up + live transition strategy appropriate
195
- * to its backend (e.g., NATS pull consumers, Redis XREAD, in-memory buffering).
198
+ * backed by an embedded store, SQL, or another durable ordered feed. Each
199
+ * implementation owns the catch-up + live transition strategy appropriate to
200
+ * its backend.
196
201
  */
197
202
  export interface EventLog {
198
- /**
199
- * Persist an event and notify in-process subscribers.
200
- * @param tenant The tenant DID.
201
- * @param event The event payload.
202
- * @param indexes Index values for the event.
203
- * @param messageCid The CID of the message being emitted — embedded in the returned token.
204
- * @returns A {@link ProgressToken} assigned to the event, or `undefined` on failure.
205
- */
206
- emit(tenant: string, event: MessageEvent, indexes: KeyValues, messageCid: string): Promise<ProgressToken | undefined>;
207
203
  /**
208
204
  * Read events from the log starting after `cursor`, optionally filtered.
209
205
  */
@@ -233,11 +229,26 @@ export interface EventLog {
233
229
  oldest: ProgressToken;
234
230
  latest: ProgressToken;
235
231
  } | undefined>;
236
- /**
237
- * Delete events older than the given sequence number or ISO-8601 timestamp.
238
- */
239
- trim(tenant: string, olderThan: number | string): Promise<void>;
240
232
  open(): Promise<void>;
241
233
  close(): Promise<void>;
242
234
  }
235
+ export type Wake = {
236
+ tenant: string;
237
+ seq: string;
238
+ };
239
+ export interface WakePublisher {
240
+ publish(wake: Wake): void;
241
+ }
242
+ export interface WakeSubscriber {
243
+ subscribe(listener: (wake: Wake) => void): () => void;
244
+ }
245
+ export interface ReplicationFeedReader {
246
+ logRead(tenant: string, options?: EventLogReadOptions): Promise<EventLogReadResult>;
247
+ logBounds(tenant: string): Promise<{
248
+ oldest: ProgressToken;
249
+ latest: ProgressToken;
250
+ } | undefined>;
251
+ fingerprint(tenant: string, scopes: string[]): Promise<string>;
252
+ epoch(): Promise<string>;
253
+ }
243
254
  //# sourceMappingURL=subscriptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../../../src/types/subscriptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../../../src/types/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import type { GenericMessage } from './message-types.js';
2
+ import type { PermissionGrant } from '../protocols/permission-grant.js';
3
+ import type { ProtocolDefinition } from './protocols-types.js';
4
+ import type { RecordsWrite } from '../interfaces/records-write.js';
5
+ import type { RecordsWriteMessage } from './records-types.js';
6
+ /**
7
+ * The single narrow surface through which validation logic reads state.
8
+ *
9
+ * Every validation-time state read performed during message admission routes through this
10
+ * interface, so the replay basis (initial writes ∪ latest states ∪ tombstones ∪ protocol-config
11
+ * history ∪ permission records) provably stays closed under admission's read set. Validation
12
+ * modules (`core/protocol-authorization*`, `protocols/permissions*`) are lint-banned from
13
+ * importing `MessageStore` directly; a new protocol-engine feature that needs new state must add
14
+ * a reader method here.
15
+ */
16
+ export interface ValidationStateReader {
17
+ /**
18
+ * Fetches a record's initial `RecordsWrite` by entry ID, parsed.
19
+ * @returns the initial write, or `undefined` when no message carries the entry ID.
20
+ */
21
+ fetchInitialRecordsWrite(tenant: string, recordId: string): Promise<RecordsWrite | undefined>;
22
+ /**
23
+ * Fetches a record's initial write from among all of the record's writes.
24
+ * @returns the initial write message, or `undefined` when the record has no messages at all.
25
+ * @throws {DwnError} with `RecordsWriteGetInitialWriteNotFound` when writes exist for the
26
+ * record but none of them is the initial write.
27
+ */
28
+ fetchInitialWrite(tenant: string, recordId: string): Promise<RecordsWriteMessage | undefined>;
29
+ /**
30
+ * Constructs the chain of existing records from the root to the given
31
+ * descendant, each represented by its initial `RecordsWrite`.
32
+ * @returns the chain root-first; an empty array when `descendantRecordId` is `undefined`.
33
+ * @throws {DwnError} with `ProtocolAuthorizationParentNotFoundConstructingRecordChain` when any
34
+ * link in the chain is missing.
35
+ */
36
+ constructRecordChain(tenant: string, descendantRecordId: string | undefined): Promise<RecordsWriteMessage[]>;
37
+ /**
38
+ * Fetches the immediate parent record for protocolPath/contextId verification.
39
+ *
40
+ * Queries the latest-state write first — the fast path that excludes deleted parents. If no
41
+ * latest write exists, a retained initial write is sufficient for immutable parent facts
42
+ * (protocolPath/contextId) provided no local tombstone exists for that record.
43
+ * @returns the parent write, or `undefined` when the parent is absent (or deleted).
44
+ */
45
+ fetchParentRecord(input: {
46
+ tenant: string;
47
+ parentProtocolUri: string;
48
+ parentId: string;
49
+ }): Promise<RecordsWriteMessage | undefined>;
50
+ /**
51
+ * Checks whether a role record matching the invoked-role selector exists.
52
+ * Filter-only — role validation never reads record data. The latest-state match is the fast
53
+ * path. If no latest match exists, a retained initial role write is sufficient for immutable
54
+ * role facts (recipient/path/context) provided no local tombstone exists for that role record.
55
+ */
56
+ hasMatchingRoleRecord(input: {
57
+ tenant: string;
58
+ protocol: string;
59
+ protocolPath: string;
60
+ recipient: string;
61
+ contextIdPrefix?: string;
62
+ }): Promise<boolean>;
63
+ /**
64
+ * Queries the latest-state role records matching the given
65
+ * selector, used to reject duplicate role assignments to the same recipient. Filter-only.
66
+ */
67
+ queryLatestRoleRecords(input: {
68
+ tenant: string;
69
+ protocol: string;
70
+ protocolPath: string;
71
+ recipient: string;
72
+ contextIdPrefix?: string;
73
+ }): Promise<RecordsWriteMessage[]>;
74
+ /**
75
+ * Fetches the permission grant with the given record ID, with its scope parsed from grant data.
76
+ * @throws {DwnError} with `GrantAuthorizationGrantMissing` when the grant does not exist.
77
+ */
78
+ fetchGrant(tenant: string, permissionGrantId: string): Promise<PermissionGrant>;
79
+ /**
80
+ * Fetches the oldest latest-state revocation record for the given permission grant, if any.
81
+ * Grant activity checks compare the oldest revocation timestamp to the incoming message timestamp.
82
+ */
83
+ fetchOldestGrantRevocation(tenant: string, permissionGrantId: string): Promise<GenericMessage | undefined>;
84
+ /**
85
+ * Fetches the newest `RecordsWrite` associated with a record, used to authorize `Messages.Read`
86
+ * access to `RecordsDelete` messages by projecting the delete back to the deleted record's
87
+ * protocol scope.
88
+ * @throws {DwnError} with `RecordsWriteGetNewestWriteRecordNotFound` when no write exists.
89
+ */
90
+ fetchNewestRecordsWrite(tenant: string, recordId: string): Promise<RecordsWriteMessage>;
91
+ /**
92
+ * Fetches the protocol definition for the given protocol URI.
93
+ * When `messageTimestamp` is provided, returns the definition active at that point in time —
94
+ * the `ProtocolsConfigure` with the greatest `messageTimestamp` that is <= the given timestamp,
95
+ * read from retained config history. When not provided, returns the latest definition.
96
+ * Core protocol definitions are returned from the registry without a store read.
97
+ * @throws {DwnError} with `ProtocolAuthorizationProtocolNotFound` when no definition exists.
98
+ */
99
+ fetchProtocolDefinition(tenant: string, protocolUri: string, messageTimestamp?: string): Promise<ProtocolDefinition>;
100
+ /**
101
+ * Fetches the latest `$squash: true` record at a protocol path within the parent context.
102
+ * This is the temporal floor used by the squash backstop.
103
+ */
104
+ fetchLatestSquashRecordAtScope(input: {
105
+ tenant: string;
106
+ protocol: string;
107
+ protocolPath: string;
108
+ contextIdPrefix?: string;
109
+ }): Promise<RecordsWriteMessage | undefined>;
110
+ /**
111
+ * Checks whether the data with the given CID is present in the `DataStore` for the given record.
112
+ * This is the prior-data integrity check for dataless non-initial writes.
113
+ */
114
+ hasStoredData(tenant: string, recordId: string, dataCid: string): Promise<boolean>;
115
+ }
116
+ //# sourceMappingURL=validation-state-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-state-reader.d.ts","sourceRoot":"","sources":["../../../../src/types/validation-state-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;;;OAMG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE7G;;;;;;;OAOG;IACH,iBAAiB,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE7C;;;;;OAKG;IACH,qBAAqB,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErB;;;OAGG;IACH,sBAAsB,CAAC,KAAK,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEnC;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhF;;;OAGG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAE3G;;;;;OAKG;IACH,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAExF;;;;;;;OAOG;IACH,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErH;;;OAGG;IACH,8BAA8B,CAAC,KAAK,EAAE;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE7C;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpF"}
@@ -1,5 +1,6 @@
1
1
  import type { CoreProtocolRegistry } from '../core/core-protocol.js';
2
2
  import type { Filter } from '../types/query-types.js';
3
+ import type { GenericMessage } from '../types/message-types.js';
3
4
  import type { MessagesFilter } from '../types/messages-types.js';
4
5
  /**
5
6
  * Class containing Messages related utility methods.
@@ -21,9 +22,18 @@ export declare class Messages {
21
22
  * @returns {Filter[]} an array of generic Filter able to be used when querying.
22
23
  */
23
24
  static convertFilters(filters: MessagesFilter[], coreProtocols?: CoreProtocolRegistry): Filter[];
25
+ /**
26
+ * Returns a copy of a RecordsWrite message without inline encodedData, and the
27
+ * detached encodedData value for wire surfaces that carry data beside the message.
28
+ */
29
+ static detachEncodedData(message: GenericMessage): {
30
+ message: GenericMessage;
31
+ encodedData?: string;
32
+ };
24
33
  /**
25
34
  * Converts an external-facing filter model into an internal-facing filer model used by data store.
26
35
  */
27
36
  private static convertFilter;
37
+ private static hasEncodedData;
28
38
  }
29
39
  //# sourceMappingURL=messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/utils/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAOjE;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;WACW,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IAwB3E;;;;;;;;;;OAUG;WACW,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,EAAE,oBAAoB,GAAG,MAAM,EAAE;IA8CvG;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;CAkC7B"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/utils/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAUjE;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;WACW,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IAwB3E;;;;;;;;;;OAUG;WACW,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,EAAE,oBAAoB,GAAG,MAAM,EAAE;IA8CvG;;;OAGG;WACW,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAY3G;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAmC5B,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
@@ -0,0 +1,40 @@
1
+ import type { MessageStore } from '../types/message-store.js';
2
+ import type { RecordsWriteMessage } from '../types/records-types.js';
3
+ import type { ValidationStateReader } from '../types/validation-state-reader.js';
4
+ import type { Filter, PaginationCursor } from '../types/query-types.js';
5
+ import type { MessageSort, Pagination } from '../types/message-types.js';
6
+ type RecordLimitOccupancyDependencies = {
7
+ messageStore: MessageStore;
8
+ validationStateReader: ValidationStateReader;
9
+ };
10
+ type RecordLimitOccupancyQueryInput = RecordLimitOccupancyDependencies & {
11
+ tenant: string;
12
+ filters: Filter[];
13
+ messageTimestamp: string;
14
+ messageSort?: MessageSort;
15
+ pagination?: Pagination;
16
+ };
17
+ /**
18
+ * Queries records with bounded `$recordLimit` occupancy projection when every limited filter targets one concrete scope.
19
+ *
20
+ * Broad filters keep the store's native query path. Projecting those without a store-level grouping primitive would require
21
+ * scanning the full matching set, which is worse than leaving them unprojected until a bounded broad-query strategy exists.
22
+ */
23
+ export declare function queryRecordsWithRecordLimitOccupancy(input: RecordLimitOccupancyQueryInput): Promise<{
24
+ messages: RecordsWriteMessage[];
25
+ cursor?: PaginationCursor;
26
+ }>;
27
+ /**
28
+ * Counts records with bounded `$recordLimit` occupancy projection when every limited filter targets one concrete scope.
29
+ */
30
+ export declare function countRecordsWithRecordLimitOccupancy(input: Omit<RecordLimitOccupancyQueryInput, 'pagination'>): Promise<number>;
31
+ /**
32
+ * Returns true when the latest RecordsWrite is visible under the `$recordLimit` projection.
33
+ */
34
+ export declare function isRecordLimitOccupant(input: RecordLimitOccupancyDependencies & {
35
+ tenant: string;
36
+ message: RecordsWriteMessage;
37
+ messageTimestamp: string;
38
+ }): Promise<boolean>;
39
+ export {};
40
+ //# sourceMappingURL=record-limit-occupancy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-limit-occupancy.d.ts","sourceRoot":"","sources":["../../../../src/utils/record-limit-occupancy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAWzE,KAAK,gCAAgC,GAAG;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AAEF,KAAK,8BAA8B,GAAG,gCAAgC,GAAG;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAYF;;;;;GAKG;AACH,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC;IAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAmBzE;AAED;;GAEG;AACH,wBAAsB,oCAAoC,CAAC,KAAK,EAAE,IAAI,CAAC,8BAA8B,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAWrI;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,gCAAgC,GAAG;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBnB"}
@@ -4,6 +4,7 @@ import type { Filter, KeyValues, StartsWithFilter } from '../types/query-types.j
4
4
  import type { GenericMessage, GenericSignaturePayload, MessageSort } from '../types/message-types.js';
5
5
  import type { RecordsCountMessage, RecordsDeleteMessage, RecordsFilter, RecordsQueryMessage, RecordsReadMessage, RecordsSubscribeMessage, RecordsWriteDescriptor, RecordsWriteMessage, RecordsWriteTags, RecordsWriteTagsFilter } from '../types/records-types.js';
6
6
  import { DateSort } from '../types/records-types.js';
7
+ import { DwnErrorCode } from '../core/dwn-error.js';
7
8
  import { KeyDerivationScheme } from './hd-key.js';
8
9
  /**
9
10
  * Class containing useful utilities related to the Records interface.
@@ -13,6 +14,14 @@ export declare class Records {
13
14
  * Checks if the given message is a `RecordsWriteMessage`.
14
15
  */
15
16
  static isRecordsWrite(message: GenericMessage): message is RecordsWriteMessage;
17
+ /**
18
+ * Gets the newest `RecordsWrite` from the given message set.
19
+ */
20
+ static getNewestRecordsWrite(messages: GenericMessage[]): Promise<RecordsWriteMessage | undefined>;
21
+ /**
22
+ * Gets the newest `RecordsDelete` from the given message set.
23
+ */
24
+ static getNewestRecordsDelete(messages: GenericMessage[]): Promise<RecordsDeleteMessage | undefined>;
16
25
  /**
17
26
  * Decrypts the encrypted data in a message reply.
18
27
  *
@@ -70,6 +79,11 @@ export declare class Records {
70
79
  * @returns {RecordsFilter} a copy of the incoming RecordsFilter with the normalized properties.
71
80
  */
72
81
  static normalizeFilter(filter: RecordsFilter): RecordsFilter;
82
+ /**
83
+ * Nested protocol-path queries must pin one parent context. Otherwise the same
84
+ * protocol type is read across every parent instance.
85
+ */
86
+ static validateNestedProtocolPathQueryScope(filter: RecordsFilter, errorCode: DwnErrorCode, operationName: string): void;
73
87
  static isStartsWithFilter(filter: RecordsWriteTagsFilter): filter is StartsWithFilter;
74
88
  /**
75
89
  * This will create individual keys for each of the tags that look like `tag.tag_property`
@@ -117,9 +131,17 @@ export declare class Records {
117
131
  */
118
132
  static filterIncludesUnpublishedRecords(filter: RecordsFilter): boolean;
119
133
  /**
120
- * Checks if the given RecordsDelete message can be performed against a record with the given newest existing state.
121
- */
122
- static canPerformDeleteAgainstRecord(deleteToBePerformed: RecordsDeleteMessage, newestExistingMessage: GenericMessage | undefined): boolean;
134
+ * Checks whether the given `RecordsDelete` is beaten by an existing tombstone for the record,
135
+ * per the tombstone lattice. A tombstone displaces any `RecordsWrite` regardless of timestamp
136
+ * (delete-wins). Among competing tombstones one canonical winner stands on every replica:
137
+ * a prune beats a plain delete regardless of timestamp — the cascade is a side effect, and a
138
+ * plain-newer winner would leave replicas that ran the cascade diverged from those that never
139
+ * would — and within the same class the newest tombstone wins, with `Message.isNewer`'s
140
+ * (messageTimestamp, CID) total order picking the same winner everywhere. Admission and
141
+ * resumable-task replay must share this predicate: state can advance between acceptance and
142
+ * replay, and replay must never admit a delete that admission would now reject.
143
+ */
144
+ static isDeleteBeatenByExistingTombstone(deleteToBePerformed: RecordsDeleteMessage, newestExistingMessage: GenericMessage): Promise<boolean>;
123
145
  /**
124
146
  * Checks whether or not the incoming records query filter should build an unpublished recipient MessageStore filter.
125
147
  *
@@ -1 +1 @@
1
- {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../../src/utils/records.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../../src/utils/records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { GenericMessage } from '../types/message-types.js';
2
+ import type { KeyValues } from '../types/query-types.js';
3
+ /**
4
+ * Shared helpers for the replication log substrate.
5
+ */
6
+ export declare class Replication {
7
+ static readonly globalDomain = "";
8
+ static protocolDomain(protocolUri: string): string;
9
+ static permissionDomain(protocolUri: string): string;
10
+ static deriveStreamId(tenant: string): Promise<string>;
11
+ static computeFingerprintScopes(message: GenericMessage, indexes: KeyValues): string[];
12
+ static assertFingerprintScopesUntouched(persistedScopes: string[], message: GenericMessage, messageCid: string, newIndexes: KeyValues): void;
13
+ private static scopeSetsMatch;
14
+ private static throwFingerprintScopeMutation;
15
+ static hashMessageCid(messageCid: string): Promise<Uint8Array>;
16
+ static emptyFingerprint(): Uint8Array;
17
+ static xorFingerprint(fingerprint: Uint8Array, contribution: Uint8Array): Uint8Array;
18
+ static fingerprintToHex(fingerprint: Uint8Array): string;
19
+ static hexToFingerprint(hex: string): Uint8Array;
20
+ static encodePositionKey(position: bigint): string;
21
+ }
22
+ //# sourceMappingURL=replication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.d.ts","sourceRoot":"","sources":["../../../../src/utils/replication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAWzD;;GAEG;AACH,qBAAa,WAAW;IACtB,gBAAuB,YAAY,MAAM;WAE3B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;WAI3C,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;WAIvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAOrD,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE;WAoB/E,gCAAgC,CAC5C,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,GACpB,IAAI;IAOP,OAAO,CAAC,MAAM,CAAC,cAAc;IAQ7B,OAAO,CAAC,MAAM,CAAC,6BAA6B;WAOxB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;WAM7D,gBAAgB,IAAI,UAAU;WAI9B,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,GAAG,UAAU;WAQ7E,gBAAgB,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM;WAIjD,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;WAQzC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAW1D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=process-message-parity.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-message-parity.spec.d.ts","sourceRoot":"","sources":["../../../../tests/core/process-message-parity.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replication-apply.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-apply.spec.d.ts","sourceRoot":"","sources":["../../../../tests/core/replication-apply.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replication-replay-property.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-replay-property.spec.d.ts","sourceRoot":"","sources":["../../../../tests/core/replication-replay-property.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validation-read-closure.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-read-closure.spec.d.ts","sourceRoot":"","sources":["../../../../tests/core/validation-read-closure.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validation-state-reader.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-state-reader.spec.d.ts","sourceRoot":"","sources":["../../../../tests/core/validation-state-reader.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=durable-event-log.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durable-event-log.spec.d.ts","sourceRoot":"","sources":["../../../tests/durable-event-log.spec.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"dwn.spec.d.ts","sourceRoot":"","sources":["../../../tests/dwn.spec.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,IAAI,IAAI,CAuJnC"}
1
+ {"version":3,"file":"dwn.spec.d.ts","sourceRoot":"","sources":["../../../tests/dwn.spec.ts"],"names":[],"mappings":"AAgCA,wBAAgB,YAAY,IAAI,IAAI,CAo3BnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"author-delegated-grant.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/author-delegated-grant.spec.ts"],"names":[],"mappings":"AA2BA,wBAAgB,wBAAwB,IAAI,IAAI,CAuiD/C"}
1
+ {"version":3,"file":"author-delegated-grant.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/author-delegated-grant.spec.ts"],"names":[],"mappings":"AA2BA,wBAAgB,wBAAwB,IAAI,IAAI,CA0iD/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"owner-delegated-grant.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/owner-delegated-grant.spec.ts"],"names":[],"mappings":"AAsBA,wBAAgB,uBAAuB,IAAI,IAAI,CAqrB9C"}
1
+ {"version":3,"file":"owner-delegated-grant.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/owner-delegated-grant.spec.ts"],"names":[],"mappings":"AAsBA,wBAAgB,uBAAuB,IAAI,IAAI,CAkrB9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"owner-signature.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/owner-signature.spec.ts"],"names":[],"mappings":"AAqBA,wBAAgB,kBAAkB,IAAI,IAAI,CAkNzC"}
1
+ {"version":3,"file":"owner-signature.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/owner-signature.spec.ts"],"names":[],"mappings":"AAqBA,wBAAgB,kBAAkB,IAAI,IAAI,CA+MzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/permissions.spec.ts"],"names":[],"mappings":"AAuBA,wBAAgB,eAAe,IAAI,IAAI,CA85CtC"}
1
+ {"version":3,"file":"permissions.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/permissions.spec.ts"],"names":[],"mappings":"AAuBA,wBAAgB,eAAe,IAAI,IAAI,CAqoDtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-composition.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-composition.spec.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAgiF9C"}
1
+ {"version":3,"file":"protocol-composition.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-composition.spec.ts"],"names":[],"mappings":"AAyBA;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CA6hF9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-create-action.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-create-action.spec.ts"],"names":[],"mappings":"AAoBA,wBAAgB,wBAAwB,IAAI,IAAI,CAoR/C"}
1
+ {"version":3,"file":"protocol-create-action.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-create-action.spec.ts"],"names":[],"mappings":"AAoBA,wBAAgB,wBAAwB,IAAI,IAAI,CAiR/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-delete-action.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-delete-action.spec.ts"],"names":[],"mappings":"AAsBA,wBAAgB,wBAAwB,IAAI,IAAI,CAyjB/C"}
1
+ {"version":3,"file":"protocol-delete-action.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-delete-action.spec.ts"],"names":[],"mappings":"AAwBA,wBAAgB,wBAAwB,IAAI,IAAI,CAujB/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol-update-action.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-update-action.spec.ts"],"names":[],"mappings":"AAqBA,wBAAgB,wBAAwB,IAAI,IAAI,CAqpB/C"}
1
+ {"version":3,"file":"protocol-update-action.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/protocol-update-action.spec.ts"],"names":[],"mappings":"AAqBA,wBAAgB,wBAAwB,IAAI,IAAI,CAkpB/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"records-delivery.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-delivery.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,mBAAmB,IAAI,IAAI,CAmQ1C"}
1
+ {"version":3,"file":"records-delivery.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-delivery.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,mBAAmB,IAAI,IAAI,CAgQ1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"records-immutable.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-immutable.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,oBAAoB,IAAI,IAAI,CAsW3C"}
1
+ {"version":3,"file":"records-immutable.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-immutable.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,oBAAoB,IAAI,IAAI,CAmW3C"}
@@ -0,0 +1,2 @@
1
+ export declare function testRecordsNestedQueryScope(): void;
2
+ //# sourceMappingURL=records-nested-query-scope.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records-nested-query-scope.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-nested-query-scope.spec.ts"],"names":[],"mappings":"AAkBA,wBAAgB,2BAA2B,IAAI,IAAI,CA4TlD"}