@enbox/dwn-sdk-js 0.4.0 → 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 (513) hide show
  1. package/README.md +4 -4
  2. package/dist/browser.mjs +8 -8
  3. package/dist/browser.mjs.map +4 -4
  4. package/dist/esm/generated/precompiled-validators.js +799 -885
  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 +12 -4
  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 -45
  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 +30 -68
  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 +123 -28
  28. package/dist/esm/src/core/replication-apply.js.map +1 -1
  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 +165 -132
  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 +6 -7
  64. package/dist/esm/src/index.js.map +1 -1
  65. package/dist/esm/src/interfaces/{messages-sync.js → messages-query.js} +21 -15
  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 +55 -1
  113. package/dist/esm/tests/core/replication-apply.spec.js.map +1 -1
  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 +504 -35
  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 +82 -36
  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 -2
  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 +12 -4
  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 -14
  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 +36 -0
  244. package/dist/types/src/core/replication-apply.d.ts.map +1 -1
  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 +33 -20
  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 +14 -16
  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 -37
  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-replay-property.spec.d.ts +2 -0
  330. package/dist/types/tests/core/replication-replay-property.spec.d.ts.map +1 -0
  331. package/dist/types/tests/core/validation-read-closure.spec.d.ts +2 -0
  332. package/dist/types/tests/core/validation-read-closure.spec.d.ts.map +1 -0
  333. package/dist/types/tests/core/validation-state-reader.spec.d.ts +2 -0
  334. package/dist/types/tests/core/validation-state-reader.spec.d.ts.map +1 -0
  335. package/dist/types/tests/durable-event-log.spec.d.ts +2 -0
  336. package/dist/types/tests/durable-event-log.spec.d.ts.map +1 -0
  337. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  338. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  339. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  340. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  341. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  342. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  343. package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -1
  344. package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -1
  345. package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -1
  346. package/dist/types/tests/features/records-delivery.spec.d.ts.map +1 -1
  347. package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -1
  348. package/dist/types/tests/features/records-nested-query-scope.spec.d.ts +2 -0
  349. package/dist/types/tests/features/records-nested-query-scope.spec.d.ts.map +1 -0
  350. package/dist/types/tests/features/records-prune-cross-protocol.spec.d.ts.map +1 -1
  351. package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -1
  352. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -1
  353. package/dist/types/tests/features/records-squash.spec.d.ts.map +1 -1
  354. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  355. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  356. package/dist/types/tests/handlers/messages-query.spec.d.ts +2 -0
  357. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -0
  358. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  359. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  360. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  361. package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -1
  362. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  363. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  364. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  365. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  366. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  367. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  368. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  369. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
  370. package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -1
  371. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
  372. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
  373. package/dist/types/tests/test-event-stream.d.ts +1 -1
  374. package/dist/types/tests/test-event-stream.d.ts.map +1 -1
  375. package/dist/types/tests/test-stores.d.ts +5 -4
  376. package/dist/types/tests/test-stores.d.ts.map +1 -1
  377. package/dist/types/tests/test-suite.d.ts +1 -2
  378. package/dist/types/tests/test-suite.d.ts.map +1 -1
  379. package/dist/types/tests/utils/test-data-generator.d.ts +20 -1
  380. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  381. package/dist/types/tests/utils/test-validation-state-reader.d.ts +15 -0
  382. package/dist/types/tests/utils/test-validation-state-reader.d.ts.map +1 -0
  383. package/package.json +2 -2
  384. package/src/core/core-protocol.ts +3 -3
  385. package/src/core/dwn-constant.ts +7 -1
  386. package/src/core/dwn-error.ts +12 -4
  387. package/src/core/grant-authorization.ts +11 -20
  388. package/src/core/message-reply.ts +6 -5
  389. package/src/core/messages-grant-authorization.ts +37 -70
  390. package/src/core/protocol-authorization-action.ts +29 -38
  391. package/src/core/protocol-authorization-validation.ts +39 -96
  392. package/src/core/protocol-authorization.ts +56 -202
  393. package/src/core/protocols-grant-authorization.ts +9 -9
  394. package/src/core/recording-validation-state-reader.ts +130 -0
  395. package/src/core/records-grant-authorization.ts +16 -16
  396. package/src/core/replication-apply.ts +172 -32
  397. package/src/core/resumable-task-manager.ts +10 -8
  398. package/src/core/validation-state-reader.ts +350 -0
  399. package/src/dwn.ts +285 -192
  400. package/src/enums/dwn-interface-method.ts +0 -1
  401. package/src/event-stream/durable-event-log.ts +509 -0
  402. package/src/event-stream/event-emitter-wake-publisher.ts +34 -0
  403. package/src/handlers/messages-query.ts +203 -0
  404. package/src/handlers/messages-read.ts +9 -10
  405. package/src/handlers/messages-subscribe.ts +12 -13
  406. package/src/handlers/protocols-configure.ts +37 -58
  407. package/src/handlers/protocols-query.ts +1 -1
  408. package/src/handlers/records-count.ts +24 -17
  409. package/src/handlers/records-delete.ts +29 -27
  410. package/src/handlers/records-query.ts +38 -17
  411. package/src/handlers/records-read.ts +63 -50
  412. package/src/handlers/records-subscribe.ts +132 -19
  413. package/src/handlers/records-write.ts +77 -168
  414. package/src/index.ts +14 -17
  415. package/src/interfaces/messages-query.ts +70 -0
  416. package/src/interfaces/protocols-configure.ts +12 -4
  417. package/src/interfaces/protocols-query.ts +4 -5
  418. package/src/interfaces/records-count.ts +9 -4
  419. package/src/interfaces/records-delete.ts +25 -5
  420. package/src/interfaces/records-query.ts +9 -4
  421. package/src/interfaces/records-read.ts +4 -4
  422. package/src/interfaces/records-subscribe.ts +9 -4
  423. package/src/interfaces/records-write.ts +41 -13
  424. package/src/protocols/permissions.ts +32 -52
  425. package/src/store/index-level.ts +30 -9
  426. package/src/store/level-wrapper.ts +9 -1
  427. package/src/store/message-store-level.ts +757 -47
  428. package/src/store/storage-controller.ts +74 -63
  429. package/src/types/message-store.ts +45 -2
  430. package/src/types/message-types.ts +3 -1
  431. package/src/types/messages-types.ts +26 -45
  432. package/src/types/method-handler.ts +3 -3
  433. package/src/types/permission-types.ts +1 -1
  434. package/src/types/subscriptions.ts +53 -42
  435. package/src/types/validation-state-reader.ts +127 -0
  436. package/src/utils/messages.ts +25 -1
  437. package/src/utils/record-limit-occupancy.ts +377 -0
  438. package/src/utils/records.ts +69 -13
  439. package/src/utils/replication.ts +122 -0
  440. package/dist/esm/src/core/record-chain.js +0 -64
  441. package/dist/esm/src/core/record-chain.js.map +0 -1
  442. package/dist/esm/src/event-stream/event-emitter-event-log.js +0 -334
  443. package/dist/esm/src/event-stream/event-emitter-event-log.js.map +0 -1
  444. package/dist/esm/src/handlers/messages-sync.js +0 -278
  445. package/dist/esm/src/handlers/messages-sync.js.map +0 -1
  446. package/dist/esm/src/interfaces/messages-sync.js.map +0 -1
  447. package/dist/esm/src/smt/smt-store-level.js +0 -103
  448. package/dist/esm/src/smt/smt-store-level.js.map +0 -1
  449. package/dist/esm/src/smt/smt-store-memory.js +0 -41
  450. package/dist/esm/src/smt/smt-store-memory.js.map +0 -1
  451. package/dist/esm/src/smt/smt-utils.js +0 -129
  452. package/dist/esm/src/smt/smt-utils.js.map +0 -1
  453. package/dist/esm/src/smt/sparse-merkle-tree.js +0 -577
  454. package/dist/esm/src/smt/sparse-merkle-tree.js.map +0 -1
  455. package/dist/esm/src/state-index/state-index-level.js +0 -191
  456. package/dist/esm/src/state-index/state-index-level.js.map +0 -1
  457. package/dist/esm/src/types/smt-types.js +0 -5
  458. package/dist/esm/src/types/smt-types.js.map +0 -1
  459. package/dist/esm/src/types/state-index.js +0 -2
  460. package/dist/esm/src/types/state-index.js.map +0 -1
  461. package/dist/esm/tests/event-emitter-event-log.spec.js +0 -499
  462. package/dist/esm/tests/event-emitter-event-log.spec.js.map +0 -1
  463. package/dist/esm/tests/handlers/messages-sync.spec.js +0 -1088
  464. package/dist/esm/tests/handlers/messages-sync.spec.js.map +0 -1
  465. package/dist/esm/tests/smt/smt-store-level.spec.js +0 -132
  466. package/dist/esm/tests/smt/smt-store-level.spec.js.map +0 -1
  467. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +0 -732
  468. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +0 -1
  469. package/dist/esm/tests/state-index/state-index-level.spec.js +0 -245
  470. package/dist/esm/tests/state-index/state-index-level.spec.js.map +0 -1
  471. package/dist/types/src/core/record-chain.d.ts +0 -24
  472. package/dist/types/src/core/record-chain.d.ts.map +0 -1
  473. package/dist/types/src/event-stream/event-emitter-event-log.d.ts +0 -80
  474. package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +0 -1
  475. package/dist/types/src/handlers/messages-sync.d.ts +0 -39
  476. package/dist/types/src/handlers/messages-sync.d.ts.map +0 -1
  477. package/dist/types/src/interfaces/messages-sync.d.ts +0 -20
  478. package/dist/types/src/interfaces/messages-sync.d.ts.map +0 -1
  479. package/dist/types/src/smt/smt-store-level.d.ts +0 -32
  480. package/dist/types/src/smt/smt-store-level.d.ts.map +0 -1
  481. package/dist/types/src/smt/smt-store-memory.d.ts +0 -22
  482. package/dist/types/src/smt/smt-store-memory.d.ts.map +0 -1
  483. package/dist/types/src/smt/smt-utils.d.ts +0 -58
  484. package/dist/types/src/smt/smt-utils.d.ts.map +0 -1
  485. package/dist/types/src/smt/sparse-merkle-tree.d.ts +0 -124
  486. package/dist/types/src/smt/sparse-merkle-tree.d.ts.map +0 -1
  487. package/dist/types/src/state-index/state-index-level.d.ts +0 -83
  488. package/dist/types/src/state-index/state-index-level.d.ts.map +0 -1
  489. package/dist/types/src/types/smt-types.d.ts +0 -81
  490. package/dist/types/src/types/smt-types.d.ts.map +0 -1
  491. package/dist/types/src/types/state-index.d.ts +0 -90
  492. package/dist/types/src/types/state-index.d.ts.map +0 -1
  493. package/dist/types/tests/event-emitter-event-log.spec.d.ts +0 -2
  494. package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +0 -1
  495. package/dist/types/tests/handlers/messages-sync.spec.d.ts +0 -2
  496. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +0 -1
  497. package/dist/types/tests/smt/smt-store-level.spec.d.ts +0 -2
  498. package/dist/types/tests/smt/smt-store-level.spec.d.ts.map +0 -1
  499. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts +0 -2
  500. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts.map +0 -1
  501. package/dist/types/tests/state-index/state-index-level.spec.d.ts +0 -2
  502. package/dist/types/tests/state-index/state-index-level.spec.d.ts.map +0 -1
  503. package/src/core/record-chain.ts +0 -99
  504. package/src/event-stream/event-emitter-event-log.ts +0 -430
  505. package/src/handlers/messages-sync.ts +0 -403
  506. package/src/interfaces/messages-sync.ts +0 -69
  507. package/src/smt/smt-store-level.ts +0 -143
  508. package/src/smt/smt-store-memory.ts +0 -53
  509. package/src/smt/smt-utils.ts +0 -149
  510. package/src/smt/sparse-merkle-tree.ts +0 -698
  511. package/src/state-index/state-index-level.ts +0 -239
  512. package/src/types/smt-types.ts +0 -95
  513. package/src/types/state-index.ts +0 -100
@@ -1 +1 @@
1
- {"version":3,"file":"records-grant-authorization.spec.js","sourceRoot":"","sources":["../../../../tests/core/records-grant-authorization.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records-grant-authorization.spec.js","sourceRoot":"","sources":["../../../../tests/core/records-grant-authorization.spec.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,14 @@ describe('replicationApplyResultFromReply', () => {
7
7
  expect(replicationApplyResultFromReply(message, { status: { code: 202 } }))
8
8
  .toEqual({ kind: 'Applied' });
9
9
  expect(replicationApplyResultFromReply(message, { status: { code: 204 } }))
10
- .toEqual({ kind: 'Applied' });
10
+ .toEqual({ kind: 'Applied', ancestryOnly: true });
11
+ expect(replicationApplyResultFromReply(message, {
12
+ status: { code: 202 },
13
+ position: { streamId: 's', epoch: 'e', position: '1', messageCid: 'c' },
14
+ })).toEqual({
15
+ kind: 'Applied',
16
+ position: { streamId: 's', epoch: 'e', position: '1', messageCid: 'c' },
17
+ });
11
18
  expect(replicationApplyResultFromReply(message, { status: { code: 409 } }))
12
19
  .toEqual({ kind: 'Superseded' });
13
20
  expect(replicationApplyResultFromReply(message, {
@@ -75,6 +82,53 @@ describe('replicationApplyResultFromReply', () => {
75
82
  missing: [{ type: 'Ancestor', recordId: 'parent-record', protocol }],
76
83
  });
77
84
  });
85
+ it('emits Ancestor refs above a batched missing parent in a single Incomplete', async () => {
86
+ const protocol = 'https://example.com/protocol';
87
+ const { message } = await TestDataGenerator.generateRecordsWrite({ protocol });
88
+ expect(replicationApplyResultFromReply(message, {
89
+ status: {
90
+ code: 400,
91
+ detail: `${DwnErrorCode.ProtocolAuthorizationParentRecordNotFound}: Could not find parent record 'baz-record'.`,
92
+ },
93
+ }, { missingAncestorRecordIds: ['foo-record', 'bar-record', 'baz-record'] })).toEqual({
94
+ kind: 'Incomplete',
95
+ missing: [
96
+ { type: 'Ancestor', recordId: 'foo-record', protocol },
97
+ { type: 'Ancestor', recordId: 'bar-record', protocol },
98
+ { type: 'Parent', recordId: 'baz-record', protocol },
99
+ ],
100
+ });
101
+ });
102
+ it('emits one Ancestor ref per batched missing ancestor in a single Incomplete', async () => {
103
+ const protocol = 'https://example.com/protocol';
104
+ const { message } = await TestDataGenerator.generateRecordsWrite({ protocol });
105
+ expect(replicationApplyResultFromReply(message, {
106
+ status: {
107
+ code: 401,
108
+ detail: `${DwnErrorCode.ProtocolAuthorizationParentNotFoundConstructingRecordChain}: parent with ID baz-record was not found`,
109
+ },
110
+ }, { missingAncestorRecordIds: ['foo-record', 'bar-record', 'baz-record'] })).toEqual({
111
+ kind: 'Incomplete',
112
+ missing: [
113
+ { type: 'Ancestor', recordId: 'foo-record', protocol },
114
+ { type: 'Ancestor', recordId: 'bar-record', protocol },
115
+ { type: 'Ancestor', recordId: 'baz-record', protocol },
116
+ ],
117
+ });
118
+ });
119
+ it('falls back to the failure-named ancestor when the batched missing-ancestor set is empty', async () => {
120
+ const protocol = 'https://example.com/protocol';
121
+ const { message } = await TestDataGenerator.generateRecordsWrite({ protocol });
122
+ expect(replicationApplyResultFromReply(message, {
123
+ status: {
124
+ code: 401,
125
+ detail: `${DwnErrorCode.ProtocolAuthorizationParentNotFoundConstructingRecordChain}: parent with ID parent-record was not found`,
126
+ },
127
+ }, { missingAncestorRecordIds: [] })).toEqual({
128
+ kind: 'Incomplete',
129
+ missing: [{ type: 'Ancestor', recordId: 'parent-record', protocol }],
130
+ });
131
+ });
78
132
  it('classifies grant, record data, and delete initial-write dependencies', async () => {
79
133
  const protocol = 'https://example.com/protocol';
80
134
  const permissionGrantId = 'grant-1';
@@ -1 +1 @@
1
- {"version":3,"file":"replication-apply.spec.js","sourceRoot":"","sources":["../../../../tests/core/replication-apply.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replication-apply.spec.js","sourceRoot":"","sources":["../../../../tests/core/replication-apply.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,350 @@
1
+ import fc from 'fast-check';
2
+ import { rm } from 'node:fs/promises';
3
+ import { TestDataGenerator } from '../utils/test-data-generator.js';
4
+ import { afterAll, describe, expect, it } from 'bun:test';
5
+ import { DataStoreLevel, DataStream, Dwn, DwnInterfaceName, DwnMethodName, Encoder, Jws, Message, MessageStoreLevel, Records, RecordsDelete, Replication, ResumableTaskStoreLevel, Time, } from '../../src/index.js';
6
+ import { DidKey, UniversalResolver } from '@enbox/dids';
7
+ // Keep CI deterministic and cheap; set FAST_CHECK_NUM_RUNS for deeper local or nightly sweeps.
8
+ const numRuns = Math.min(Number(process.env.FAST_CHECK_NUM_RUNS) || 5, 20);
9
+ const replayOperations = [
10
+ 'config-churn',
11
+ 'create-note',
12
+ 'create-pin',
13
+ 'create-profile',
14
+ 'create-thread-reply',
15
+ 'delete-note',
16
+ 'prune-thread',
17
+ 'squash-patch',
18
+ 'update-note',
19
+ ];
20
+ describe('replication replay property', () => {
21
+ const didResolver = new UniversalResolver({ didResolvers: [DidKey] });
22
+ const harnesses = [];
23
+ afterAll(async () => {
24
+ for (const harness of harnesses) {
25
+ await harness.dwn.close();
26
+ await rm(harness.dataPath, { force: true, recursive: true });
27
+ }
28
+ });
29
+ it('should replay the retained feed into a fresh DWN with equal live records, fingerprints, and data bytes', async () => {
30
+ await fc.assert(fc.asyncProperty(fc.record({
31
+ operations: fc.array(fc.constantFrom(...replayOperations), { minLength: 8, maxLength: 14 }),
32
+ replayOrderSeed: fc.integer({ min: 0, max: 0xffffffff }),
33
+ runId: fc.uuid(),
34
+ }), async ({ operations, replayOrderSeed, runId }) => {
35
+ const source = await createHarness(`${runId}-source`);
36
+ const replica = await createHarness(`${runId}-replica`);
37
+ harnesses.push(source, replica);
38
+ const alice = await TestDataGenerator.generateDidKeyPersona();
39
+ const protocol = `https://replay-property.example/${runId}`;
40
+ await driveSourceMutationPlan(source.dwn, alice, protocol, operations);
41
+ await replayFeed(source.dwn, replica.dwn, alice, replayOrderSeed);
42
+ await expectFingerprintsEqual(source.messageStore, replica.messageStore, alice.did, protocol);
43
+ await expectLiveRecordsEqual(source.dwn, replica.dwn, alice, protocol);
44
+ await expectOccupantsEqual(source.dwn, replica.dwn, alice, protocol, 'profile', 1);
45
+ await expectOccupantsEqual(source.dwn, replica.dwn, alice, protocol, 'pin', 2);
46
+ }), { numRuns, seed: 1046 });
47
+ });
48
+ async function createHarness(path) {
49
+ const dataPath = `__TESTDATA__/replication-replay-property/${path}`;
50
+ await rm(dataPath, { force: true, recursive: true });
51
+ const messageStore = new MessageStoreLevel({ location: `${dataPath}/messages` });
52
+ const dataStore = new DataStoreLevel({ blockstoreLocation: `${dataPath}/data` });
53
+ const resumableTaskStore = new ResumableTaskStoreLevel({ location: `${dataPath}/resumable-tasks` });
54
+ const dwn = await Dwn.create({ dataStore, didResolver, messageStore, resumableTaskStore });
55
+ return { dataPath, dwn, messageStore };
56
+ }
57
+ });
58
+ async function driveSourceMutationPlan(dwn, alice, protocol, operations) {
59
+ let sequence = 1;
60
+ let configRevision = 1;
61
+ const nextTimestamp = () => Time.createOffsetTimestamp({ seconds: sequence++ }, Time.createTimestamp({ year: 2025, month: 1, day: 1 }));
62
+ const notes = [];
63
+ const threads = [];
64
+ await installProtocol(dwn, alice, protocolDefinition(protocol, configRevision), nextTimestamp());
65
+ const firstNote = await writeRecord(dwn, alice, protocol, 'note', 'initial-note-a', nextTimestamp());
66
+ const secondNote = await writeRecord(dwn, alice, protocol, 'note', 'initial-note-b', nextTimestamp());
67
+ notes.push({ deleted: false, latest: firstNote.recordsWrite, recordId: firstNote.message.recordId }, { deleted: false, latest: secondNote.recordsWrite, recordId: secondNote.message.recordId });
68
+ await writeRecord(dwn, alice, protocol, 'profile', 'profile-a', nextTimestamp());
69
+ await writeRecord(dwn, alice, protocol, 'profile', 'profile-b', nextTimestamp());
70
+ await writeRecord(dwn, alice, protocol, 'pin', 'pin-a', nextTimestamp());
71
+ await writeRecord(dwn, alice, protocol, 'pin', 'pin-b', nextTimestamp());
72
+ await writeRecord(dwn, alice, protocol, 'pin', 'pin-c', nextTimestamp());
73
+ const thread = await writeRecord(dwn, alice, protocol, 'thread', 'thread-a', nextTimestamp());
74
+ await writeRecord(dwn, alice, protocol, 'thread/reply', 'reply-a', nextTimestamp(), thread.message.contextId);
75
+ threads.push({ deleted: false, recordId: thread.message.recordId });
76
+ await writeRecord(dwn, alice, protocol, 'patch', 'patch-before-squash', nextTimestamp());
77
+ for (const operation of operations) {
78
+ if (operation === 'config-churn') {
79
+ configRevision++;
80
+ await installProtocol(dwn, alice, protocolDefinition(protocol, configRevision), nextTimestamp());
81
+ }
82
+ else if (operation === 'create-note') {
83
+ const note = await writeRecord(dwn, alice, protocol, 'note', `${operation}-${sequence}`, nextTimestamp());
84
+ notes.push({ deleted: false, latest: note.recordsWrite, recordId: note.message.recordId });
85
+ }
86
+ else if (operation === 'create-pin') {
87
+ await writeRecord(dwn, alice, protocol, 'pin', `${operation}-${sequence}`, nextTimestamp());
88
+ }
89
+ else if (operation === 'create-profile') {
90
+ await writeRecord(dwn, alice, protocol, 'profile', `${operation}-${sequence}`, nextTimestamp());
91
+ }
92
+ else if (operation === 'create-thread-reply') {
93
+ const createdThread = await writeRecord(dwn, alice, protocol, 'thread', `${operation}-thread-${sequence}`, nextTimestamp());
94
+ await writeRecord(dwn, alice, protocol, 'thread/reply', `${operation}-reply-${sequence}`, nextTimestamp(), createdThread.message.contextId);
95
+ threads.push({ deleted: false, recordId: createdThread.message.recordId });
96
+ }
97
+ else if (operation === 'delete-note') {
98
+ const note = notes.find(candidate => !candidate.deleted);
99
+ if (note !== undefined) {
100
+ await deleteRecord(dwn, alice, note.recordId);
101
+ note.deleted = true;
102
+ }
103
+ }
104
+ else if (operation === 'prune-thread') {
105
+ const activeThread = threads.find(candidate => !candidate.deleted);
106
+ if (activeThread !== undefined) {
107
+ await deleteRecord(dwn, alice, activeThread.recordId, true);
108
+ activeThread.deleted = true;
109
+ }
110
+ }
111
+ else if (operation === 'squash-patch') {
112
+ await writeRecord(dwn, alice, protocol, 'patch', `${operation}-${sequence}`, nextTimestamp(), undefined, true);
113
+ }
114
+ else {
115
+ const note = notes.find(candidate => !candidate.deleted);
116
+ if (note !== undefined) {
117
+ const update = await TestDataGenerator.generateFromRecordsWrite({
118
+ author: alice,
119
+ data: Encoder.stringToBytes(`${operation}-${sequence}`),
120
+ existingWrite: note.latest,
121
+ messageTimestamp: nextTimestamp(),
122
+ });
123
+ const reply = await dwn.processMessage(alice.did, update.message, { dataStream: update.dataStream });
124
+ expect(reply.status.code).toBe(202);
125
+ note.latest = update.recordsWrite;
126
+ }
127
+ }
128
+ }
129
+ }
130
+ function protocolDefinition(protocol, revision) {
131
+ const extraType = `extra${revision}`;
132
+ return {
133
+ protocol,
134
+ published: false,
135
+ types: {
136
+ [extraType]: {},
137
+ note: {},
138
+ patch: {},
139
+ pin: {},
140
+ profile: {},
141
+ reply: {},
142
+ thread: {},
143
+ },
144
+ structure: {
145
+ [extraType]: {},
146
+ note: {},
147
+ patch: { $squash: true },
148
+ pin: { $recordLimit: { max: 2, strategy: 'reject' } },
149
+ profile: { $recordLimit: { max: 1, strategy: 'reject' } },
150
+ thread: { reply: {} },
151
+ },
152
+ };
153
+ }
154
+ async function installProtocol(dwn, alice, definition, timestamp) {
155
+ const configure = await TestDataGenerator.generateProtocolsConfigure({
156
+ author: alice,
157
+ messageTimestamp: timestamp,
158
+ protocolDefinition: definition,
159
+ });
160
+ const reply = await dwn.processMessage(alice.did, configure.message);
161
+ expect(reply.status.code).toBe(202);
162
+ }
163
+ async function writeRecord(dwn, alice, protocol, protocolPath, data, timestamp, parentContextId, squash) {
164
+ const record = await TestDataGenerator.generateRecordsWrite({
165
+ author: alice,
166
+ data: Encoder.stringToBytes(data),
167
+ dataFormat: 'text/plain',
168
+ dateCreated: timestamp,
169
+ messageTimestamp: timestamp,
170
+ parentContextId,
171
+ protocol,
172
+ protocolPath,
173
+ schema: `${protocol}/schema/${protocolPath.split('/').at(-1)}`,
174
+ squash,
175
+ });
176
+ const reply = await dwn.processMessage(alice.did, record.message, { dataStream: record.dataStream });
177
+ expect(reply.status.code).toBe(202);
178
+ return record;
179
+ }
180
+ async function deleteRecord(dwn, alice, recordId, prune) {
181
+ const recordsDelete = await RecordsDelete.create({
182
+ prune,
183
+ recordId,
184
+ signer: Jws.createSigner(alice),
185
+ });
186
+ const reply = await dwn.processMessage(alice.did, recordsDelete.message);
187
+ expect(reply.status.code).toBe(202);
188
+ }
189
+ async function replayFeed(source, replica, alice, replayOrderSeed) {
190
+ const entries = permuteReplayEntries(await queryAllReplayEntries(source, alice), replayOrderSeed);
191
+ let pending = entries;
192
+ let incompleteDeferrals = 0;
193
+ for (let attempt = 0; attempt < entries.length + 1 && pending.length > 0; attempt++) {
194
+ const nextPending = [];
195
+ for (const replayEntry of pending) {
196
+ const { dataBytes, entry } = replayEntry;
197
+ expect(entry.message).toBeDefined();
198
+ const result = await replica.applyReplicatedMessage(alice.did, entry.message, {
199
+ ...(dataBytes === undefined ? {} : { dataStream: DataStream.fromBytes(dataBytes) }),
200
+ });
201
+ if (result.kind === 'Incomplete') {
202
+ incompleteDeferrals++;
203
+ nextPending.push(replayEntry);
204
+ continue;
205
+ }
206
+ if (result.kind === 'Deferred') {
207
+ throw new Error(`replay unexpectedly deferred CID ${entry.messageCid}: ${result.reason}`);
208
+ }
209
+ expect(['Applied', 'Duplicate', 'Superseded']).toContain(result.kind);
210
+ }
211
+ if (nextPending.length === pending.length) {
212
+ throw new Error(`replay made no progress; unresolved CIDs: ${nextPending.map(item => item.entry.messageCid).join(', ')}`);
213
+ }
214
+ pending = nextPending;
215
+ }
216
+ expect(pending).toHaveLength(0);
217
+ expect(incompleteDeferrals).toBeGreaterThan(0);
218
+ }
219
+ // Shuffling puts records before protocol configs, forcing dependency Incomplete outcomes before retry convergence.
220
+ function permuteReplayEntries(entries, replayOrderSeed) {
221
+ return entries
222
+ .map((entry, index) => ({
223
+ entry,
224
+ group: replayDependencyGroup(entry),
225
+ index,
226
+ sortKey: replaySortKey(replayOrderSeed, entry.entry.messageCid, index),
227
+ }))
228
+ .sort((left, right) => {
229
+ const groupComparison = left.group - right.group;
230
+ if (groupComparison !== 0) {
231
+ return groupComparison;
232
+ }
233
+ const sortKeyComparison = left.sortKey - right.sortKey;
234
+ if (sortKeyComparison !== 0) {
235
+ return sortKeyComparison;
236
+ }
237
+ return left.index - right.index;
238
+ })
239
+ .map(item => item.entry);
240
+ }
241
+ function replayDependencyGroup(replayEntry) {
242
+ const descriptor = replayEntry.entry.message?.descriptor;
243
+ return descriptor?.interface === DwnInterfaceName.Protocols && descriptor.method === DwnMethodName.Configure ? 1 : 0;
244
+ }
245
+ function replaySortKey(replayOrderSeed, messageCid, index) {
246
+ let hash = replayOrderSeed >>> 0;
247
+ const input = `${messageCid}:${index}`;
248
+ for (let i = 0; i < input.length; i++) {
249
+ hash = Math.imul(hash ^ input.charCodeAt(i), 16777619) >>> 0;
250
+ }
251
+ return hash;
252
+ }
253
+ async function queryAllReplayEntries(source, alice) {
254
+ const entries = [];
255
+ let cursor;
256
+ while (true) {
257
+ const query = await TestDataGenerator.generateMessagesQuery({
258
+ author: alice,
259
+ cursor,
260
+ limit: 3,
261
+ });
262
+ const reply = await source.processMessage(alice.did, query.message);
263
+ expect(reply.status.code).toBe(200);
264
+ for (const entry of reply.entries ?? []) {
265
+ entries.push({
266
+ dataBytes: await dataBytesForEntry(source, alice, entry),
267
+ entry: entry,
268
+ });
269
+ }
270
+ if (reply.drained === true) {
271
+ break;
272
+ }
273
+ cursor = reply.cursor;
274
+ }
275
+ return entries;
276
+ }
277
+ async function dataBytesForEntry(source, alice, entry) {
278
+ if (!isRecordsWriteMessage(entry.message)) {
279
+ return undefined;
280
+ }
281
+ if (entry.encodedData !== undefined) {
282
+ return Encoder.base64UrlToBytes(entry.encodedData);
283
+ }
284
+ const read = await TestDataGenerator.generateMessagesRead({
285
+ author: alice,
286
+ messageCid: entry.messageCid,
287
+ });
288
+ const reply = await source.processMessage(alice.did, read.message);
289
+ if (reply.status.code !== 200) {
290
+ return undefined;
291
+ }
292
+ const data = reply.entry?.data;
293
+ return data === undefined ? undefined : await DataStream.toBytes(data);
294
+ }
295
+ function isRecordsWriteMessage(message) {
296
+ return typeof message === 'object' && message !== null && Records.isRecordsWrite(message);
297
+ }
298
+ async function expectFingerprintsEqual(source, replica, tenant, protocol) {
299
+ const scopes = [Replication.globalDomain];
300
+ expect(await replica.fingerprint(tenant, scopes)).toBe(await source.fingerprint(tenant, scopes));
301
+ const protocolScopes = [
302
+ Replication.protocolDomain(protocol),
303
+ Replication.permissionDomain(protocol),
304
+ ];
305
+ expect(await replica.fingerprint(tenant, protocolScopes)).toBe(await source.fingerprint(tenant, protocolScopes));
306
+ }
307
+ async function expectLiveRecordsEqual(source, replica, alice, protocol) {
308
+ expect(await liveRecordSnapshot(replica, alice, protocol)).toEqual(await liveRecordSnapshot(source, alice, protocol));
309
+ }
310
+ async function liveRecordSnapshot(dwn, alice, protocol) {
311
+ const query = await TestDataGenerator.generateRecordsQuery({
312
+ author: alice,
313
+ filter: { protocol },
314
+ });
315
+ const reply = await dwn.processMessage(alice.did, query.message);
316
+ expect(reply.status.code).toBe(200);
317
+ const snapshot = [];
318
+ for (const entry of reply.entries ?? []) {
319
+ const { encodedData, initialWrite, ...recordsWrite } = entry;
320
+ snapshot.push({
321
+ data: encodedData ?? '',
322
+ initialCid: initialWrite === undefined ? undefined : await Message.getCid(initialWrite),
323
+ latestCid: await Message.getCid(recordsWrite),
324
+ protocolPath: recordsWrite.descriptor.protocolPath,
325
+ recordId: recordsWrite.recordId,
326
+ });
327
+ }
328
+ return snapshot.sort(compareLiveRecords);
329
+ }
330
+ function compareLiveRecords(left, right) {
331
+ const leftKey = `${left.protocolPath}:${left.recordId}`;
332
+ const rightKey = `${right.protocolPath}:${right.recordId}`;
333
+ return leftKey < rightKey ? -1 : leftKey > rightKey ? 1 : 0;
334
+ }
335
+ async function expectOccupantsEqual(source, replica, alice, protocol, protocolPath, expectedMax) {
336
+ const sourceOccupants = await queryRecordIds(source, alice, protocol, protocolPath);
337
+ const replicaOccupants = await queryRecordIds(replica, alice, protocol, protocolPath);
338
+ expect(replicaOccupants).toEqual(sourceOccupants);
339
+ expect(sourceOccupants.length).toBeLessThanOrEqual(expectedMax);
340
+ }
341
+ async function queryRecordIds(dwn, alice, protocol, protocolPath) {
342
+ const query = await TestDataGenerator.generateRecordsQuery({
343
+ author: alice,
344
+ filter: { protocol, protocolPath },
345
+ });
346
+ const reply = await dwn.processMessage(alice.did, query.message);
347
+ expect(reply.status.code).toBe(200);
348
+ return (reply.entries ?? []).map(entry => entry.recordId).sort();
349
+ }
350
+ //# sourceMappingURL=replication-replay-property.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-replay-property.spec.js","sourceRoot":"","sources":["../../../../tests/core/replication-replay-property.spec.ts"],"names":[],"mappings":"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"}