@enbox/dwn-sdk-js 0.0.2 → 0.0.3

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 (601) hide show
  1. package/README.md +52 -301
  2. package/dist/bundles/dwn.js +19 -21
  3. package/dist/esm/generated/precompiled-validators.js +2764 -1773
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/dwn-error.js +27 -3
  6. package/dist/esm/src/core/dwn-error.js.map +1 -1
  7. package/dist/esm/src/core/message.js.map +1 -1
  8. package/dist/esm/src/core/messages-grant-authorization.js +17 -6
  9. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  10. package/dist/esm/src/core/protocol-authorization.js +245 -69
  11. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  12. package/dist/esm/src/core/resumable-task-manager.js +4 -4
  13. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  14. package/dist/esm/src/dwn.js +10 -8
  15. package/dist/esm/src/dwn.js.map +1 -1
  16. package/dist/esm/src/enums/dwn-interface-method.js +4 -2
  17. package/dist/esm/src/enums/dwn-interface-method.js.map +1 -1
  18. package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -0
  19. package/dist/esm/src/handlers/messages-subscribe.js +1 -1
  20. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  21. package/dist/esm/src/handlers/messages-sync.js +116 -0
  22. package/dist/esm/src/handlers/messages-sync.js.map +1 -0
  23. package/dist/esm/src/handlers/protocols-configure.js +149 -16
  24. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  25. package/dist/esm/src/handlers/protocols-query.js +2 -2
  26. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  27. package/dist/esm/src/handlers/records-count.js +143 -0
  28. package/dist/esm/src/handlers/records-count.js.map +1 -0
  29. package/dist/esm/src/handlers/records-query.js +4 -0
  30. package/dist/esm/src/handlers/records-query.js.map +1 -1
  31. package/dist/esm/src/handlers/records-read.js +4 -6
  32. package/dist/esm/src/handlers/records-read.js.map +1 -1
  33. package/dist/esm/src/handlers/records-write.js +17 -18
  34. package/dist/esm/src/handlers/records-write.js.map +1 -1
  35. package/dist/esm/src/index.js +9 -5
  36. package/dist/esm/src/index.js.map +1 -1
  37. package/dist/esm/src/interfaces/messages-read.js +2 -7
  38. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  39. package/dist/esm/src/interfaces/messages-subscribe.js +1 -0
  40. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  41. package/dist/esm/src/interfaces/{messages-query.js → messages-sync.js} +11 -12
  42. package/dist/esm/src/interfaces/messages-sync.js.map +1 -0
  43. package/dist/esm/src/interfaces/protocols-configure.js +153 -30
  44. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  45. package/dist/esm/src/interfaces/protocols-query.js +1 -0
  46. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  47. package/dist/esm/src/interfaces/records-count.js +91 -0
  48. package/dist/esm/src/interfaces/records-count.js.map +1 -0
  49. package/dist/esm/src/interfaces/records-read.js +15 -1
  50. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  51. package/dist/esm/src/interfaces/records-write.js +64 -15
  52. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  53. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  54. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -1
  55. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  56. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  57. package/dist/esm/src/protocols/permission-grant.js +30 -0
  58. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  59. package/dist/esm/src/protocols/permission-request.js +24 -0
  60. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  61. package/dist/esm/src/protocols/permissions.js +1 -1
  62. package/dist/esm/src/protocols/permissions.js.map +1 -1
  63. package/dist/esm/src/schema-validator.js +0 -1
  64. package/dist/esm/src/schema-validator.js.map +1 -1
  65. package/dist/esm/src/smt/smt-store-level.js +125 -0
  66. package/dist/esm/src/smt/smt-store-level.js.map +1 -0
  67. package/dist/esm/src/smt/smt-store-memory.js +67 -0
  68. package/dist/esm/src/smt/smt-store-memory.js.map +1 -0
  69. package/dist/esm/src/smt/smt-utils.js +146 -0
  70. package/dist/esm/src/smt/smt-utils.js.map +1 -0
  71. package/dist/esm/src/smt/sparse-merkle-tree.js +622 -0
  72. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -0
  73. package/dist/esm/src/state-index/state-index-level.js +228 -0
  74. package/dist/esm/src/state-index/state-index-level.js.map +1 -0
  75. package/dist/esm/src/store/data-store-level.js +6 -6
  76. package/dist/esm/src/store/data-store-level.js.map +1 -1
  77. package/dist/esm/src/store/index-level.js +375 -17
  78. package/dist/esm/src/store/index-level.js.map +1 -1
  79. package/dist/esm/src/store/message-store-level.js +56 -0
  80. package/dist/esm/src/store/message-store-level.js.map +1 -1
  81. package/dist/esm/src/store/storage-controller.js +19 -16
  82. package/dist/esm/src/store/storage-controller.js.map +1 -1
  83. package/dist/esm/src/types/encryption-types.js +2 -0
  84. package/dist/esm/src/types/encryption-types.js.map +1 -0
  85. package/dist/esm/src/types/message-types.js.map +1 -1
  86. package/dist/esm/src/types/protocols-types.js +0 -2
  87. package/dist/esm/src/types/protocols-types.js.map +1 -1
  88. package/dist/esm/src/types/records-types.js +2 -0
  89. package/dist/esm/src/types/records-types.js.map +1 -1
  90. package/dist/esm/src/types/smt-types.js +5 -0
  91. package/dist/esm/src/types/smt-types.js.map +1 -0
  92. package/dist/esm/src/types/state-index.js +2 -0
  93. package/dist/esm/src/types/state-index.js.map +1 -0
  94. package/dist/esm/src/utils/cid.js +2 -1
  95. package/dist/esm/src/utils/cid.js.map +1 -1
  96. package/dist/esm/src/utils/data-stream.js +84 -29
  97. package/dist/esm/src/utils/data-stream.js.map +1 -1
  98. package/dist/esm/src/utils/encryption.js +22 -31
  99. package/dist/esm/src/utils/encryption.js.map +1 -1
  100. package/dist/esm/src/utils/hd-key.js +3 -3
  101. package/dist/esm/src/utils/hd-key.js.map +1 -1
  102. package/dist/esm/src/utils/jws.js +4 -4
  103. package/dist/esm/src/utils/jws.js.map +1 -1
  104. package/dist/esm/src/utils/private-key-signer.js +4 -3
  105. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  106. package/dist/esm/src/utils/protocols.js +82 -9
  107. package/dist/esm/src/utils/protocols.js.map +1 -1
  108. package/dist/esm/src/utils/records.js +82 -26
  109. package/dist/esm/src/utils/records.js.map +1 -1
  110. package/dist/esm/src/utils/secp256k1.js +4 -3
  111. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  112. package/dist/esm/src/utils/secp256r1.js +3 -2
  113. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  114. package/dist/esm/src/utils/time.js +1 -1
  115. package/dist/esm/src/utils/url.js +1 -1
  116. package/dist/esm/src/utils/url.js.map +1 -1
  117. package/dist/esm/tests/core/auth.spec.js +2 -2
  118. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  119. package/dist/esm/tests/core/message-reply.spec.js +3 -3
  120. package/dist/esm/tests/core/message-reply.spec.js.map +1 -1
  121. package/dist/esm/tests/core/message.spec.js +13 -13
  122. package/dist/esm/tests/core/message.spec.js.map +1 -1
  123. package/dist/esm/tests/core/protocol-authorization.spec.js +3 -3
  124. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  125. package/dist/esm/tests/dwn.spec.js +27 -37
  126. package/dist/esm/tests/dwn.spec.js.map +1 -1
  127. package/dist/esm/tests/{event-log → event-stream}/event-emitter-stream.spec.js +14 -15
  128. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -0
  129. package/dist/esm/tests/{event-log → event-stream}/event-stream.spec.js +13 -15
  130. package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -0
  131. package/dist/esm/tests/features/author-delegated-grant.spec.js +281 -135
  132. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  133. package/dist/esm/tests/features/owner-delegated-grant.spec.js +57 -59
  134. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  135. package/dist/esm/tests/features/owner-signature.spec.js +32 -34
  136. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  137. package/dist/esm/tests/features/permissions.spec.js +73 -95
  138. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  139. package/dist/esm/tests/features/protocol-composition.spec.js +1645 -0
  140. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -0
  141. package/dist/esm/tests/features/protocol-create-action.spec.js +25 -27
  142. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  143. package/dist/esm/tests/features/protocol-delete-action.spec.js +42 -44
  144. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  145. package/dist/esm/tests/features/protocol-update-action.spec.js +53 -55
  146. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  147. package/dist/esm/tests/features/records-prune.spec.js +126 -100
  148. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  149. package/dist/esm/tests/features/records-tags.spec.js +272 -272
  150. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  151. package/dist/esm/tests/features/resumable-tasks.spec.js +35 -37
  152. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  153. package/dist/esm/tests/handlers/messages-read.spec.js +112 -112
  154. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  155. package/dist/esm/tests/handlers/messages-subscribe.spec.js +78 -76
  156. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  157. package/dist/esm/tests/handlers/messages-sync.spec.js +528 -0
  158. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -0
  159. package/dist/esm/tests/handlers/protocols-configure.spec.js +545 -152
  160. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  161. package/dist/esm/tests/handlers/protocols-query.spec.js +70 -72
  162. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  163. package/dist/esm/tests/handlers/records-count.spec.js +313 -0
  164. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -0
  165. package/dist/esm/tests/handlers/records-delete.spec.js +106 -109
  166. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  167. package/dist/esm/tests/handlers/records-query.spec.js +863 -463
  168. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  169. package/dist/esm/tests/handlers/records-read.spec.js +439 -209
  170. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  171. package/dist/esm/tests/handlers/records-subscribe.spec.js +292 -97
  172. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  173. package/dist/esm/tests/handlers/records-write.spec.js +481 -483
  174. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  175. package/dist/esm/tests/interfaces/messages-get.spec.js +31 -11
  176. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  177. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +5 -5
  178. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  179. package/dist/esm/tests/interfaces/protocols-configure.spec.js +64 -134
  180. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  181. package/dist/esm/tests/interfaces/protocols-query.spec.js +4 -6
  182. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  183. package/dist/esm/tests/interfaces/records-delete.spec.js +3 -5
  184. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  185. package/dist/esm/tests/interfaces/records-query.spec.js +9 -11
  186. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  187. package/dist/esm/tests/interfaces/records-read.spec.js +76 -7
  188. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  189. package/dist/esm/tests/interfaces/records-subscribe.spec.js +7 -9
  190. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  191. package/dist/esm/tests/interfaces/records-write.spec.js +244 -48
  192. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  193. package/dist/esm/tests/jose/jws/general.spec.js +15 -18
  194. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  195. package/dist/esm/tests/protocols/permission-grant.spec.js +114 -0
  196. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -0
  197. package/dist/esm/tests/protocols/permission-request.spec.js +43 -7
  198. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  199. package/dist/esm/tests/protocols/permissions.spec.js +9 -11
  200. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  201. package/dist/esm/tests/scenarios/aggregator.spec.js +90 -92
  202. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  203. package/dist/esm/tests/scenarios/deleted-record.spec.js +17 -19
  204. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  205. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +27 -29
  206. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  207. package/dist/esm/tests/scenarios/nested-roles.spec.js +37 -39
  208. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  209. package/dist/esm/tests/scenarios/subscriptions.spec.js +163 -163
  210. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  211. package/dist/esm/tests/smt/smt-store-level.spec.js +143 -0
  212. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -0
  213. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +741 -0
  214. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -0
  215. package/dist/esm/tests/state-index/state-index-level.spec.js +254 -0
  216. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -0
  217. package/dist/esm/tests/store/blockstore-level.spec.js +136 -0
  218. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -0
  219. package/dist/esm/tests/store/blockstore-mock.spec.js +29 -28
  220. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  221. package/dist/esm/tests/store/data-store-level.spec.js +23 -25
  222. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  223. package/dist/esm/tests/store/index-level.spec.js +544 -194
  224. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  225. package/dist/esm/tests/store/message-store-level.spec.js +4 -4
  226. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  227. package/dist/esm/tests/store/message-store.spec.js +147 -73
  228. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  229. package/dist/esm/tests/store-dependent-tests.spec.js +1 -0
  230. package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -1
  231. package/dist/esm/tests/test-stores.js +5 -5
  232. package/dist/esm/tests/test-stores.js.map +1 -1
  233. package/dist/esm/tests/test-suite.js +9 -8
  234. package/dist/esm/tests/test-suite.js.map +1 -1
  235. package/dist/esm/tests/utils/cid.spec.js +8 -11
  236. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  237. package/dist/esm/tests/utils/data-stream.spec.js +167 -13
  238. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  239. package/dist/esm/tests/utils/encryption-callbacks.spec.js +233 -0
  240. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -0
  241. package/dist/esm/tests/utils/encryption.spec.js +34 -85
  242. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  243. package/dist/esm/tests/utils/filters.spec.js +67 -69
  244. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  245. package/dist/esm/tests/utils/hd-key.spec.js +3 -3
  246. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  247. package/dist/esm/tests/utils/jws.spec.js +54 -3
  248. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  249. package/dist/esm/tests/utils/memory-cache.spec.js +6 -9
  250. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  251. package/dist/esm/tests/utils/messages.spec.js +63 -29
  252. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  253. package/dist/esm/tests/utils/object.spec.js +3 -3
  254. package/dist/esm/tests/utils/object.spec.js.map +1 -1
  255. package/dist/esm/tests/utils/poller.js +1 -1
  256. package/dist/esm/tests/utils/poller.js.map +1 -1
  257. package/dist/esm/tests/utils/private-key-signer.spec.js +6 -6
  258. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  259. package/dist/esm/tests/utils/records.spec.js +37 -5
  260. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  261. package/dist/esm/tests/utils/secp256k1.spec.js +7 -7
  262. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  263. package/dist/esm/tests/utils/secp256r1.spec.js +7 -7
  264. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  265. package/dist/esm/tests/utils/test-data-generator.js +47 -28
  266. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  267. package/dist/esm/tests/utils/time.spec.js +7 -7
  268. package/dist/esm/tests/utils/time.spec.js.map +1 -1
  269. package/dist/esm/tests/utils/url.spec.js +25 -27
  270. package/dist/esm/tests/utils/url.spec.js.map +1 -1
  271. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +4 -4
  272. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  273. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +15 -3
  274. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  275. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -8
  276. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  277. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +8 -18
  278. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  279. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +3 -3
  280. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  281. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +9 -9
  282. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  283. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +106 -0
  284. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -0
  285. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +18 -18
  286. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  287. package/dist/esm/tests/vectors/protocol-definitions/email.json +1 -1
  288. package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +2 -4
  289. package/dist/esm/tests/vectors/protocol-definitions/slack.json +2 -6
  290. package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +2 -6
  291. package/dist/types/generated/precompiled-validators.d.ts +82 -64
  292. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  293. package/dist/types/src/core/dwn-error.d.ts +27 -3
  294. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  295. package/dist/types/src/core/message-reply.d.ts +1 -1
  296. package/dist/types/src/core/message.d.ts +3 -3
  297. package/dist/types/src/core/message.d.ts.map +1 -1
  298. package/dist/types/src/core/messages-grant-authorization.d.ts +4 -4
  299. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  300. package/dist/types/src/core/protocol-authorization.d.ts +43 -2
  301. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  302. package/dist/types/src/core/records-grant-authorization.d.ts +2 -2
  303. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  304. package/dist/types/src/core/resumable-task-manager.d.ts +1 -0
  305. package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -1
  306. package/dist/types/src/dwn.d.ts +8 -8
  307. package/dist/types/src/dwn.d.ts.map +1 -1
  308. package/dist/types/src/enums/dwn-interface-method.d.ts +5 -3
  309. package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -1
  310. package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +1 -0
  311. package/dist/types/src/handlers/messages-sync.d.ts +21 -0
  312. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -0
  313. package/dist/types/src/handlers/protocols-configure.d.ts +24 -4
  314. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  315. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
  316. package/dist/types/src/handlers/records-count.d.ts +43 -0
  317. package/dist/types/src/handlers/records-count.d.ts.map +1 -0
  318. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  319. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  320. package/dist/types/src/handlers/records-write.d.ts +5 -5
  321. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  322. package/dist/types/src/index.d.ts +72 -37
  323. package/dist/types/src/index.d.ts.map +1 -1
  324. package/dist/types/src/interfaces/messages-read.d.ts +2 -2
  325. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
  326. package/dist/types/src/interfaces/messages-subscribe.d.ts +2 -2
  327. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  328. package/dist/types/src/interfaces/messages-sync.d.ts +16 -0
  329. package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -0
  330. package/dist/types/src/interfaces/protocols-configure.d.ts +22 -2
  331. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  332. package/dist/types/src/interfaces/protocols-query.d.ts +2 -2
  333. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
  334. package/dist/types/src/interfaces/records-count.d.ts +27 -0
  335. package/dist/types/src/interfaces/records-count.d.ts.map +1 -0
  336. package/dist/types/src/interfaces/records-delete.d.ts +2 -2
  337. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  338. package/dist/types/src/interfaces/records-query.d.ts +2 -2
  339. package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
  340. package/dist/types/src/interfaces/records-read.d.ts +4 -2
  341. package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
  342. package/dist/types/src/interfaces/records-subscribe.d.ts +2 -2
  343. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  344. package/dist/types/src/interfaces/records-write.d.ts +37 -15
  345. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  346. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -1
  347. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +5 -1
  348. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -1
  349. package/dist/types/src/jose/jws/general/builder.d.ts +3 -3
  350. package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -1
  351. package/dist/types/src/protocols/permission-grant.d.ts +11 -0
  352. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  353. package/dist/types/src/protocols/permission-request.d.ts +11 -0
  354. package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
  355. package/dist/types/src/protocols/permissions.d.ts +4 -4
  356. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  357. package/dist/types/src/schema-validator.d.ts +1 -1
  358. package/dist/types/src/schema-validator.d.ts.map +1 -1
  359. package/dist/types/src/smt/smt-store-level.d.ts +32 -0
  360. package/dist/types/src/smt/smt-store-level.d.ts.map +1 -0
  361. package/dist/types/src/smt/smt-store-memory.d.ts +22 -0
  362. package/dist/types/src/smt/smt-store-memory.d.ts.map +1 -0
  363. package/dist/types/src/smt/smt-utils.d.ts +58 -0
  364. package/dist/types/src/smt/smt-utils.d.ts.map +1 -0
  365. package/dist/types/src/smt/sparse-merkle-tree.d.ts +124 -0
  366. package/dist/types/src/smt/sparse-merkle-tree.d.ts.map +1 -0
  367. package/dist/types/src/state-index/state-index-level.d.ts +83 -0
  368. package/dist/types/src/state-index/state-index-level.d.ts.map +1 -0
  369. package/dist/types/src/store/data-store-level.d.ts +1 -2
  370. package/dist/types/src/store/data-store-level.d.ts.map +1 -1
  371. package/dist/types/src/store/index-level.d.ts +98 -2
  372. package/dist/types/src/store/index-level.d.ts.map +1 -1
  373. package/dist/types/src/store/level-wrapper.d.ts.map +1 -1
  374. package/dist/types/src/store/message-store-level.d.ts +5 -0
  375. package/dist/types/src/store/message-store-level.d.ts.map +1 -1
  376. package/dist/types/src/store/storage-controller.d.ts +7 -7
  377. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  378. package/dist/types/src/types/data-store.d.ts +2 -3
  379. package/dist/types/src/types/data-store.d.ts.map +1 -1
  380. package/dist/types/src/types/encryption-types.d.ts +48 -0
  381. package/dist/types/src/types/encryption-types.d.ts.map +1 -0
  382. package/dist/types/src/types/jose-types.d.ts +9 -40
  383. package/dist/types/src/types/jose-types.d.ts.map +1 -1
  384. package/dist/types/src/types/message-store.d.ts +5 -0
  385. package/dist/types/src/types/message-store.d.ts.map +1 -1
  386. package/dist/types/src/types/message-types.d.ts +19 -0
  387. package/dist/types/src/types/message-types.d.ts.map +1 -1
  388. package/dist/types/src/types/messages-types.d.ts +16 -11
  389. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  390. package/dist/types/src/types/method-handler.d.ts +1 -2
  391. package/dist/types/src/types/method-handler.d.ts.map +1 -1
  392. package/dist/types/src/types/permission-types.d.ts +2 -2
  393. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  394. package/dist/types/src/types/protocols-types.d.ts +49 -5
  395. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  396. package/dist/types/src/types/records-types.d.ts +23 -7
  397. package/dist/types/src/types/records-types.d.ts.map +1 -1
  398. package/dist/types/src/types/signer.d.ts +1 -1
  399. package/dist/types/src/types/signer.d.ts.map +1 -1
  400. package/dist/types/src/types/smt-types.d.ts +81 -0
  401. package/dist/types/src/types/smt-types.d.ts.map +1 -0
  402. package/dist/types/src/types/state-index.d.ts +90 -0
  403. package/dist/types/src/types/state-index.d.ts.map +1 -0
  404. package/dist/types/src/utils/cid.d.ts +1 -2
  405. package/dist/types/src/utils/cid.d.ts.map +1 -1
  406. package/dist/types/src/utils/data-stream.d.ts +14 -7
  407. package/dist/types/src/utils/data-stream.d.ts.map +1 -1
  408. package/dist/types/src/utils/encryption.d.ts +2 -3
  409. package/dist/types/src/utils/encryption.d.ts.map +1 -1
  410. package/dist/types/src/utils/hd-key.d.ts +4 -4
  411. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  412. package/dist/types/src/utils/jws.d.ts +7 -7
  413. package/dist/types/src/utils/jws.d.ts.map +1 -1
  414. package/dist/types/src/utils/private-key-signer.d.ts +4 -4
  415. package/dist/types/src/utils/private-key-signer.d.ts.map +1 -1
  416. package/dist/types/src/utils/protocols.d.ts +46 -3
  417. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  418. package/dist/types/src/utils/records.d.ts +33 -6
  419. package/dist/types/src/utils/records.d.ts.map +1 -1
  420. package/dist/types/src/utils/secp256k1.d.ts +11 -11
  421. package/dist/types/src/utils/secp256k1.d.ts.map +1 -1
  422. package/dist/types/src/utils/secp256r1.d.ts +8 -8
  423. package/dist/types/src/utils/secp256r1.d.ts.map +1 -1
  424. package/dist/types/src/utils/time.d.ts +1 -1
  425. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  426. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +1 -0
  427. package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +1 -0
  428. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  429. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  430. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  431. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  432. package/dist/types/tests/features/protocol-composition.spec.d.ts +5 -0
  433. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -0
  434. package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -1
  435. package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -1
  436. package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -1
  437. package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -1
  438. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  439. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  440. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  441. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  442. package/dist/types/tests/handlers/messages-sync.spec.d.ts +2 -0
  443. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -0
  444. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  445. package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -1
  446. package/dist/types/tests/handlers/records-count.spec.d.ts +2 -0
  447. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -0
  448. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  449. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  450. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  451. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  452. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  453. package/dist/types/tests/protocols/permission-grant.spec.d.ts +2 -0
  454. package/dist/types/tests/protocols/permission-grant.spec.d.ts.map +1 -0
  455. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  456. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
  457. package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -1
  458. package/dist/types/tests/smt/smt-store-level.spec.d.ts +2 -0
  459. package/dist/types/tests/smt/smt-store-level.spec.d.ts.map +1 -0
  460. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts +2 -0
  461. package/dist/types/tests/smt/sparse-merkle-tree.spec.d.ts.map +1 -0
  462. package/dist/types/tests/state-index/state-index-level.spec.d.ts +2 -0
  463. package/dist/types/tests/state-index/state-index-level.spec.d.ts.map +1 -0
  464. package/dist/types/tests/store/blockstore-level.spec.d.ts +2 -0
  465. package/dist/types/tests/store/blockstore-level.spec.d.ts.map +1 -0
  466. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
  467. package/dist/types/tests/test-stores.d.ts +4 -4
  468. package/dist/types/tests/test-stores.d.ts.map +1 -1
  469. package/dist/types/tests/test-suite.d.ts +2 -2
  470. package/dist/types/tests/test-suite.d.ts.map +1 -1
  471. package/dist/types/tests/utils/encryption-callbacks.spec.d.ts +2 -0
  472. package/dist/types/tests/utils/encryption-callbacks.spec.d.ts.map +1 -0
  473. package/dist/types/tests/utils/test-data-generator.d.ts +31 -28
  474. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  475. package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts +2 -0
  476. package/dist/types/tests/validation/json-schemas/records/records-read.spec.d.ts.map +1 -0
  477. package/package.json +27 -46
  478. package/src/core/dwn-error.ts +27 -3
  479. package/src/core/message-reply.ts +1 -1
  480. package/src/core/message.ts +5 -5
  481. package/src/core/messages-grant-authorization.ts +22 -8
  482. package/src/core/protocol-authorization.ts +345 -68
  483. package/src/core/records-grant-authorization.ts +2 -2
  484. package/src/core/resumable-task-manager.ts +4 -5
  485. package/src/dwn.ts +25 -20
  486. package/src/enums/dwn-interface-method.ts +5 -3
  487. package/src/handlers/messages-subscribe.ts +1 -1
  488. package/src/handlers/messages-sync.ts +129 -0
  489. package/src/handlers/protocols-configure.ts +195 -17
  490. package/src/handlers/protocols-query.ts +7 -5
  491. package/src/handlers/records-count.ts +184 -0
  492. package/src/handlers/records-query.ts +4 -0
  493. package/src/handlers/records-read.ts +4 -8
  494. package/src/handlers/records-write.ts +20 -21
  495. package/src/index.ts +74 -37
  496. package/src/interfaces/messages-read.ts +6 -5
  497. package/src/interfaces/messages-subscribe.ts +7 -6
  498. package/src/interfaces/messages-sync.ts +59 -0
  499. package/src/interfaces/protocols-configure.ts +211 -33
  500. package/src/interfaces/protocols-query.ts +7 -6
  501. package/src/interfaces/records-count.ts +106 -0
  502. package/src/interfaces/records-delete.ts +2 -2
  503. package/src/interfaces/records-query.ts +2 -2
  504. package/src/interfaces/records-read.ts +26 -3
  505. package/src/interfaces/records-subscribe.ts +2 -2
  506. package/src/interfaces/records-write.ts +115 -46
  507. package/src/jose/algorithms/signing/ed25519.ts +13 -12
  508. package/src/jose/algorithms/signing/signature-algorithms.ts +6 -1
  509. package/src/jose/jws/general/builder.ts +3 -3
  510. package/src/jose/jws/general/verifier.ts +3 -3
  511. package/src/protocols/permission-grant.ts +51 -0
  512. package/src/protocols/permission-request.ts +37 -0
  513. package/src/protocols/permissions.ts +5 -5
  514. package/src/schema-validator.ts +11 -3
  515. package/src/smt/smt-store-level.ts +143 -0
  516. package/src/smt/smt-store-memory.ts +53 -0
  517. package/src/smt/smt-utils.ts +149 -0
  518. package/src/smt/sparse-merkle-tree.ts +698 -0
  519. package/src/state-index/state-index-level.ts +241 -0
  520. package/src/store/data-store-level.ts +8 -7
  521. package/src/store/index-level.ts +415 -19
  522. package/src/store/level-wrapper.ts +1 -1
  523. package/src/store/message-store-level.ts +62 -0
  524. package/src/store/storage-controller.ts +21 -19
  525. package/src/types/data-store.ts +2 -4
  526. package/src/types/encryption-types.ts +52 -0
  527. package/src/types/jose-types.ts +10 -42
  528. package/src/types/message-store.ts +11 -0
  529. package/src/types/message-types.ts +21 -0
  530. package/src/types/messages-types.ts +21 -15
  531. package/src/types/method-handler.ts +1 -2
  532. package/src/types/permission-types.ts +2 -2
  533. package/src/types/protocols-types.ts +55 -6
  534. package/src/types/records-types.ts +26 -7
  535. package/src/types/signer.ts +1 -1
  536. package/src/types/smt-types.ts +95 -0
  537. package/src/types/state-index.ts +100 -0
  538. package/src/utils/cid.ts +3 -4
  539. package/src/utils/data-stream.ts +75 -38
  540. package/src/utils/encryption.ts +24 -39
  541. package/src/utils/hd-key.ts +6 -6
  542. package/src/utils/jws.ts +9 -9
  543. package/src/utils/private-key-signer.ts +9 -8
  544. package/src/utils/protocols.ts +132 -6
  545. package/src/utils/records.ts +118 -29
  546. package/src/utils/secp256k1.ts +23 -21
  547. package/src/utils/secp256r1.ts +17 -15
  548. package/src/utils/time.ts +1 -1
  549. package/src/utils/url.ts +1 -1
  550. package/dist/cjs/index.js +0 -36749
  551. package/dist/cjs/package.json +0 -1
  552. package/dist/esm/src/event-log/event-emitter-stream.js.map +0 -1
  553. package/dist/esm/src/event-log/event-log-level.js +0 -63
  554. package/dist/esm/src/event-log/event-log-level.js.map +0 -1
  555. package/dist/esm/src/handlers/messages-query.js +0 -71
  556. package/dist/esm/src/handlers/messages-query.js.map +0 -1
  557. package/dist/esm/src/interfaces/messages-query.js.map +0 -1
  558. package/dist/esm/src/types/event-log.js +0 -2
  559. package/dist/esm/src/types/event-log.js.map +0 -1
  560. package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +0 -1
  561. package/dist/esm/tests/event-log/event-log-level.spec.js +0 -44
  562. package/dist/esm/tests/event-log/event-log-level.spec.js.map +0 -1
  563. package/dist/esm/tests/event-log/event-log.spec.js +0 -236
  564. package/dist/esm/tests/event-log/event-log.spec.js.map +0 -1
  565. package/dist/esm/tests/event-log/event-stream.spec.js.map +0 -1
  566. package/dist/esm/tests/handlers/messages-query.spec.js +0 -349
  567. package/dist/esm/tests/handlers/messages-query.spec.js.map +0 -1
  568. package/dist/esm/tests/interfaces/messagess-query.spec.js +0 -127
  569. package/dist/esm/tests/interfaces/messagess-query.spec.js.map +0 -1
  570. package/dist/esm/tests/scenarios/messages-query.spec.js +0 -395
  571. package/dist/esm/tests/scenarios/messages-query.spec.js.map +0 -1
  572. package/dist/types/src/event-log/event-emitter-stream.d.ts.map +0 -1
  573. package/dist/types/src/event-log/event-log-level.d.ts +0 -35
  574. package/dist/types/src/event-log/event-log-level.d.ts.map +0 -1
  575. package/dist/types/src/handlers/messages-query.d.ts +0 -17
  576. package/dist/types/src/handlers/messages-query.d.ts.map +0 -1
  577. package/dist/types/src/interfaces/messages-query.d.ts +0 -16
  578. package/dist/types/src/interfaces/messages-query.d.ts.map +0 -1
  579. package/dist/types/src/types/event-log.d.ts +0 -52
  580. package/dist/types/src/types/event-log.d.ts.map +0 -1
  581. package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +0 -1
  582. package/dist/types/tests/event-log/event-log-level.spec.d.ts +0 -2
  583. package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +0 -1
  584. package/dist/types/tests/event-log/event-log.spec.d.ts +0 -2
  585. package/dist/types/tests/event-log/event-log.spec.d.ts.map +0 -1
  586. package/dist/types/tests/event-log/event-stream.spec.d.ts.map +0 -1
  587. package/dist/types/tests/handlers/messages-query.spec.d.ts +0 -2
  588. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +0 -1
  589. package/dist/types/tests/interfaces/messagess-query.spec.d.ts +0 -2
  590. package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +0 -1
  591. package/dist/types/tests/scenarios/messages-query.spec.d.ts +0 -2
  592. package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +0 -1
  593. package/src/event-log/event-log-level.ts +0 -72
  594. package/src/handlers/messages-query.ts +0 -67
  595. package/src/interfaces/messages-query.ts +0 -60
  596. package/src/types/event-log.ts +0 -52
  597. /package/dist/esm/src/{event-log → event-stream}/event-emitter-stream.js +0 -0
  598. /package/dist/types/src/{event-log → event-stream}/event-emitter-stream.d.ts +0 -0
  599. /package/dist/types/tests/{event-log → event-stream}/event-emitter-stream.spec.d.ts +0 -0
  600. /package/dist/types/tests/{event-log → event-stream}/event-stream.spec.d.ts +0 -0
  601. /package/src/{event-log → event-stream}/event-emitter-stream.ts +0 -0
@@ -7,39 +7,37 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import chaiAsPromised from 'chai-as-promised';
10
+ import messageProtocolDefinition from '../vectors/protocol-definitions/message.json' with { type: 'json' };
11
+ import nestedProtocolDefinition from '../vectors/protocol-definitions/nested.json' with { type: 'json' };
11
12
  import sinon from 'sinon';
12
- import chai, { expect } from 'chai';
13
- import messageProtocolDefinition from '../vectors/protocol-definitions/message.json' assert { type: 'json' };
14
- import nestedProtocolDefinition from '../vectors/protocol-definitions/nested.json' assert { type: 'json' };
15
13
  import { DwnInterfaceName } from '../../src/enums/dwn-interface-method.js';
16
14
  import { Message } from '../../src/core/message.js';
17
15
  import { TestDataGenerator } from '../utils/test-data-generator.js';
18
16
  import { TestEventStream } from '../test-event-stream.js';
19
17
  import { TestStores } from '../test-stores.js';
18
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
20
19
  import { DataStream, Dwn, DwnConstant, DwnErrorCode, Jws, ProtocolsConfigure, RecordsDelete, RecordsQuery, RecordsWrite, SortDirection } from '../../src/index.js';
21
20
  import { DidKey, UniversalResolver } from '@enbox/dids';
22
- chai.use(chaiAsPromised);
23
21
  export function testRecordsPrune() {
24
22
  describe('records pruning', () => {
25
23
  let didResolver;
26
24
  let messageStore;
27
25
  let dataStore;
28
26
  let resumableTaskStore;
29
- let eventLog;
27
+ let stateIndex;
30
28
  let eventStream;
31
29
  let dwn;
32
30
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
33
31
  // so that different test suites can reuse the same backend store for testing
34
- before(() => __awaiter(this, void 0, void 0, function* () {
32
+ beforeAll(() => __awaiter(this, void 0, void 0, function* () {
35
33
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
36
34
  const stores = TestStores.get();
37
35
  messageStore = stores.messageStore;
38
36
  dataStore = stores.dataStore;
39
37
  resumableTaskStore = stores.resumableTaskStore;
40
- eventLog = stores.eventLog;
38
+ stateIndex = stores.stateIndex;
41
39
  eventStream = TestEventStream.get();
42
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
40
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
43
41
  }));
44
42
  beforeEach(() => __awaiter(this, void 0, void 0, function* () {
45
43
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
@@ -47,9 +45,9 @@ export function testRecordsPrune() {
47
45
  yield messageStore.clear();
48
46
  yield dataStore.clear();
49
47
  yield resumableTaskStore.clear();
50
- yield eventLog.clear();
48
+ yield stateIndex.clear();
51
49
  }));
52
- after(() => __awaiter(this, void 0, void 0, function* () {
50
+ afterAll(() => __awaiter(this, void 0, void 0, function* () {
53
51
  yield dwn.close();
54
52
  }));
55
53
  it('should prune all descendants when given RecordsDelete with `prune` set to `true`', () => __awaiter(this, void 0, void 0, function* () {
@@ -62,7 +60,7 @@ export function testRecordsPrune() {
62
60
  signer: Jws.createSigner(alice)
63
61
  });
64
62
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
65
- expect(protocolsConfigureReply.status.code).to.equal(202);
63
+ expect(protocolsConfigureReply.status.code).toBe(202);
66
64
  // writes 2 foos, 2 bars under foo1, and 2 bazes under bar1
67
65
  // write 2 foos
68
66
  const fooData = TestDataGenerator.randomBytes(100);
@@ -76,10 +74,10 @@ export function testRecordsPrune() {
76
74
  };
77
75
  const foo1 = yield RecordsWrite.create(fooOptions);
78
76
  const foo1WriteResponse = yield dwn.processMessage(alice.did, foo1.message, { dataStream: DataStream.fromBytes(fooData) });
79
- expect(foo1WriteResponse.status.code).equals(202);
77
+ expect(foo1WriteResponse.status.code).toBe(202);
80
78
  const foo2 = yield RecordsWrite.create(fooOptions);
81
79
  const foo2WriteResponse = yield dwn.processMessage(alice.did, foo2.message, { dataStream: DataStream.fromBytes(fooData) });
82
- expect(foo2WriteResponse.status.code).equals(202);
80
+ expect(foo2WriteResponse.status.code).toBe(202);
83
81
  // write 2 bars under foo1 with data large enough to be required to be stored in the data store so we can test purge in data store
84
82
  const barData = TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded + 1);
85
83
  const barOptions = {
@@ -93,10 +91,10 @@ export function testRecordsPrune() {
93
91
  };
94
92
  const bar1 = yield RecordsWrite.create(Object.assign({}, barOptions));
95
93
  const bar1WriteResponse = yield dwn.processMessage(alice.did, bar1.message, { dataStream: DataStream.fromBytes(barData) });
96
- expect(bar1WriteResponse.status.code).equals(202);
94
+ expect(bar1WriteResponse.status.code).toBe(202);
97
95
  const bar2 = yield RecordsWrite.create(Object.assign({}, barOptions));
98
96
  const bar2WriteResponse = yield dwn.processMessage(alice.did, bar2.message, { dataStream: DataStream.fromBytes(barData) });
99
- expect(bar2WriteResponse.status.code).equals(202);
97
+ expect(bar2WriteResponse.status.code).toBe(202);
100
98
  // write 2 bazes under bar1, each has more than 1 message associated with the record so we can test multi-message purge
101
99
  const bazData = TestDataGenerator.randomBytes(100);
102
100
  const bazOptions = {
@@ -110,10 +108,10 @@ export function testRecordsPrune() {
110
108
  };
111
109
  const baz1 = yield RecordsWrite.create(Object.assign({}, bazOptions));
112
110
  const baz1WriteResponse = yield dwn.processMessage(alice.did, baz1.message, { dataStream: DataStream.fromBytes(bazData) });
113
- expect(baz1WriteResponse.status.code).equals(202);
111
+ expect(baz1WriteResponse.status.code).toBe(202);
114
112
  const baz2 = yield RecordsWrite.create(Object.assign({}, bazOptions));
115
113
  const baz2WriteResponse = yield dwn.processMessage(alice.did, baz2.message, { dataStream: DataStream.fromBytes(bazData) });
116
- expect(baz2WriteResponse.status.code).equals(202);
114
+ expect(baz2WriteResponse.status.code).toBe(202);
117
115
  // make latest state of baz1 a `RecordsWrite`
118
116
  const newBaz1Data = TestDataGenerator.randomBytes(100);
119
117
  const baz1Update = yield RecordsWrite.createFrom({
@@ -122,29 +120,30 @@ export function testRecordsPrune() {
122
120
  data: newBaz1Data
123
121
  });
124
122
  const baz1UpdateResponse = yield dwn.processMessage(alice.did, baz1Update.message, { dataStream: DataStream.fromBytes(newBaz1Data) });
125
- expect(baz1UpdateResponse.status.code).equals(202);
123
+ expect(baz1UpdateResponse.status.code).toBe(202);
126
124
  // make latest state of baz2 a `RecordsDelete`
127
125
  const baz2Delete = yield RecordsDelete.create({
128
126
  signer: Jws.createSigner(alice),
129
127
  recordId: baz2.message.recordId
130
128
  });
131
129
  const baz2DeleteResponse = yield dwn.processMessage(alice.did, baz2Delete.message);
132
- expect(baz2DeleteResponse.status.code).equals(202);
130
+ expect(baz2DeleteResponse.status.code).toBe(202);
133
131
  // sanity test messages are inserted in message store
134
132
  const queryFilter = [{
135
133
  interface: DwnInterfaceName.Records,
136
134
  protocol: nestedProtocol.protocol
137
135
  }];
138
136
  const queryResult = yield messageStore.query(alice.did, queryFilter);
139
- expect(queryResult.messages.length).to.equal(8); // 2 foos, 2 bars, 2 bazes x 2 messages each
140
- // sanity test events are inserted in event log
141
- const { events } = yield eventLog.queryEvents(alice.did, queryFilter);
142
- expect(events.length).to.equal(8);
137
+ expect(queryResult.messages.length).toBe(8); // 2 foos, 2 bars, 2 bazes x 2 messages each
138
+ // sanity test events are inserted in state index
139
+ // NOTE: getLeaves returns ALL messageCids (including ProtocolsConfigure), so count is 9 not 8
140
+ const events = yield stateIndex.getLeaves(alice.did, []);
141
+ expect(events.length).toBe(9);
143
142
  // sanity test data is inserted in data store
144
143
  const bar1DataGetResult = yield dataStore.get(alice.did, bar1.message.recordId, bar1.message.descriptor.dataCid);
145
144
  const bar2DataGetResult = yield dataStore.get(alice.did, bar2.message.recordId, bar2.message.descriptor.dataCid);
146
- expect(bar1DataGetResult).to.not.be.undefined;
147
- expect(bar2DataGetResult).to.not.be.undefined;
145
+ expect(bar1DataGetResult).toBeDefined();
146
+ expect(bar2DataGetResult).toBeDefined();
148
147
  // Delete foo1 with prune enabled
149
148
  const foo1Delete = yield RecordsDelete.create({
150
149
  recordId: foo1.message.recordId,
@@ -152,34 +151,35 @@ export function testRecordsPrune() {
152
151
  signer: Jws.createSigner(alice)
153
152
  });
154
153
  const deleteReply = yield dwn.processMessage(alice.did, foo1Delete.message);
155
- expect(deleteReply.status.code).to.equal(202);
154
+ expect(deleteReply.status.code).toBe(202);
156
155
  // verify all bar and baz message are permanently deleted
157
156
  const queryResult2 = yield messageStore.query(alice.did, queryFilter, { messageTimestamp: SortDirection.Ascending });
158
- expect(queryResult2.messages.length).to.equal(3); // foo2 RecordsWrite, foo1 RecordsWrite and RecordsDelete
159
- expect(queryResult2.messages[0]).to.deep.include(foo1.message);
160
- expect(queryResult2.messages[1]).to.deep.include(foo2.message);
161
- expect(queryResult2.messages[2]).to.deep.include(foo1Delete.message);
157
+ expect(queryResult2.messages.length).toBe(3); // foo2 RecordsWrite, foo1 RecordsWrite and RecordsDelete
158
+ expect(queryResult2.messages[0]).toEqual(expect.objectContaining(foo1.message));
159
+ expect(queryResult2.messages[1]).toEqual(expect.objectContaining(foo2.message));
160
+ expect(queryResult2.messages[2]).toEqual(expect.objectContaining(foo1Delete.message));
162
161
  // verify all bar and baz events are permanently deleted
163
- const { events: events2 } = yield eventLog.queryEvents(alice.did, queryFilter);
164
- expect(events2.length).to.equal(3);
162
+ // NOTE: getLeaves returns ALL messageCids (including ProtocolsConfigure), so count is 4 not 3
163
+ const events2 = yield stateIndex.getLeaves(alice.did, []);
164
+ expect(events2.length).toBe(4);
165
165
  const foo1RecordsWriteCid = yield Message.getCid(foo1.message);
166
166
  const foo2RecordsWriteCid = yield Message.getCid(foo2.message);
167
167
  const foo2RecordsDeleteCid = yield Message.getCid(foo1Delete.message);
168
- expect(events2).to.contain.members([foo1RecordsWriteCid, foo2RecordsWriteCid, foo2RecordsDeleteCid]);
168
+ expect(events2).toEqual(expect.arrayContaining([foo1RecordsWriteCid, foo2RecordsWriteCid, foo2RecordsDeleteCid]));
169
169
  // verify all bar data are permanently deleted
170
170
  const bar1DataGetResult2 = yield dataStore.get(alice.did, bar1.message.recordId, bar1.message.descriptor.dataCid);
171
171
  const bar2DataGetResult2 = yield dataStore.get(alice.did, bar2.message.recordId, bar2.message.descriptor.dataCid);
172
- expect(bar1DataGetResult2).to.be.undefined;
173
- expect(bar2DataGetResult2).to.be.undefined;
172
+ expect(bar1DataGetResult2).toBeUndefined();
173
+ expect(bar2DataGetResult2).toBeUndefined();
174
174
  // sanity test an external query will no longer return the deleted records
175
175
  const queryData = yield RecordsQuery.create({
176
176
  signer: Jws.createSigner(alice),
177
177
  filter: { protocol: nestedProtocol.protocol }
178
178
  });
179
179
  const reply2 = yield dwn.processMessage(alice.did, queryData.message);
180
- expect(reply2.status.code).to.equal(200);
181
- expect((_a = reply2.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1); // only foo2 is left
182
- expect(reply2.entries[0]).to.deep.include(foo2.message);
180
+ expect(reply2.status.code).toBe(200);
181
+ expect((_a = reply2.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1); // only foo2 is left
182
+ expect(reply2.entries[0]).toEqual(expect.objectContaining(foo2.message));
183
183
  }));
184
184
  it('should allow pruning against a deleted record that is not already pruned', () => __awaiter(this, void 0, void 0, function* () {
185
185
  // Scenario:
@@ -195,7 +195,7 @@ export function testRecordsPrune() {
195
195
  signer: Jws.createSigner(alice)
196
196
  });
197
197
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
198
- expect(protocolsConfigureReply.status.code).to.equal(202);
198
+ expect(protocolsConfigureReply.status.code).toBe(202);
199
199
  // 1. Alice has a record `foo` with a descendent chain
200
200
  // write foo <- bar <- baz records
201
201
  const fooData = TestDataGenerator.randomBytes(100);
@@ -209,7 +209,7 @@ export function testRecordsPrune() {
209
209
  };
210
210
  const foo = yield RecordsWrite.create(fooOptions);
211
211
  const fooWriteResponse = yield dwn.processMessage(alice.did, foo.message, { dataStream: DataStream.fromBytes(fooData) });
212
- expect(fooWriteResponse.status.code).equals(202);
212
+ expect(fooWriteResponse.status.code).toBe(202);
213
213
  const barData = TestDataGenerator.randomBytes(100);
214
214
  const barOptions = {
215
215
  signer: Jws.createSigner(alice),
@@ -222,7 +222,7 @@ export function testRecordsPrune() {
222
222
  };
223
223
  const bar = yield RecordsWrite.create(Object.assign({}, barOptions));
224
224
  const barWriteResponse = yield dwn.processMessage(alice.did, bar.message, { dataStream: DataStream.fromBytes(barData) });
225
- expect(barWriteResponse.status.code).equals(202);
225
+ expect(barWriteResponse.status.code).toBe(202);
226
226
  const bazData = TestDataGenerator.randomBytes(100);
227
227
  const bazOptions = {
228
228
  signer: Jws.createSigner(alice),
@@ -235,22 +235,22 @@ export function testRecordsPrune() {
235
235
  };
236
236
  const baz = yield RecordsWrite.create(Object.assign({}, bazOptions));
237
237
  const bazWriteResponse = yield dwn.processMessage(alice.did, baz.message, { dataStream: DataStream.fromBytes(bazData) });
238
- expect(bazWriteResponse.status.code).equals(202);
238
+ expect(bazWriteResponse.status.code).toBe(202);
239
239
  // sanity records are inserted in message store
240
240
  const queryFilter = [{
241
241
  interface: DwnInterfaceName.Records,
242
242
  protocol: nestedProtocol.protocol
243
243
  }];
244
244
  const messagesBeforeDelete = yield messageStore.query(alice.did, queryFilter);
245
- expect(messagesBeforeDelete.messages.length).to.equal(3);
245
+ expect(messagesBeforeDelete.messages.length).toBe(3);
246
246
  // sanity verify RecordsQuery returns no records
247
247
  const recordsQuery = yield RecordsQuery.create({
248
248
  signer: Jws.createSigner(alice),
249
249
  filter: { protocol: nestedProtocol.protocol }
250
250
  });
251
251
  const recordsQueryBeforeDeleteReply = yield dwn.processMessage(alice.did, recordsQuery.message);
252
- expect(recordsQueryBeforeDeleteReply.status.code).to.equal(200);
253
- expect((_a = recordsQueryBeforeDeleteReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(3);
252
+ expect(recordsQueryBeforeDeleteReply.status.code).toBe(200);
253
+ expect((_a = recordsQueryBeforeDeleteReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(3);
254
254
  // 2. Alice deletes the record `foo` WITHOUT prune, leaving the descendants intact
255
255
  const fooDelete = yield RecordsDelete.create({
256
256
  recordId: foo.message.recordId,
@@ -258,14 +258,14 @@ export function testRecordsPrune() {
258
258
  signer: Jws.createSigner(alice)
259
259
  });
260
260
  const deleteReply = yield dwn.processMessage(alice.did, fooDelete.message);
261
- expect(deleteReply.status.code).to.equal(202);
261
+ expect(deleteReply.status.code).toBe(202);
262
262
  // verify bar and baz messages still exists
263
263
  const messagesAfterDelete = yield messageStore.query(alice.did, queryFilter, { messageTimestamp: SortDirection.Ascending });
264
- expect(messagesAfterDelete.messages.length).to.equal(4); // RecordsWrite for foo, bar, baz, and RecordsDelete for foo
264
+ expect(messagesAfterDelete.messages.length).toBe(4); // RecordsWrite for foo, bar, baz, and RecordsDelete for foo
265
265
  // sanity verify RecordsQuery returns the descendants
266
266
  const recordsQueryAfterDeleteReply = yield dwn.processMessage(alice.did, recordsQuery.message);
267
- expect(recordsQueryAfterDeleteReply.status.code).to.equal(200);
268
- expect((_b = recordsQueryAfterDeleteReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(2);
267
+ expect(recordsQueryAfterDeleteReply.status.code).toBe(200);
268
+ expect((_b = recordsQueryAfterDeleteReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(2);
269
269
  // 3. Verify that Alice is able to perform a prune on `foo` to delete all its descendants
270
270
  const fooPrune = yield RecordsDelete.create({
271
271
  recordId: foo.message.recordId,
@@ -273,16 +273,16 @@ export function testRecordsPrune() {
273
273
  signer: Jws.createSigner(alice)
274
274
  });
275
275
  const pruneReply = yield dwn.processMessage(alice.did, fooPrune.message);
276
- expect(pruneReply.status.code).to.equal(202);
276
+ expect(pruneReply.status.code).toBe(202);
277
277
  // verify bar and baz messages are permanently deleted
278
278
  const messagesAfterPrune = yield messageStore.query(alice.did, queryFilter, { messageTimestamp: SortDirection.Ascending });
279
- expect(messagesAfterPrune.messages.length).to.equal(2); // just RecordsWrite and RecordsDelete for foo
280
- expect(messagesAfterPrune.messages[0]).to.deep.include(foo.message);
281
- expect(messagesAfterPrune.messages[1]).to.deep.include(fooPrune.message);
279
+ expect(messagesAfterPrune.messages.length).toBe(2); // just RecordsWrite and RecordsDelete for foo
280
+ expect(messagesAfterPrune.messages[0]).toEqual(expect.objectContaining(foo.message));
281
+ expect(messagesAfterPrune.messages[1]).toEqual(expect.objectContaining(fooPrune.message));
282
282
  // sanity verify RecordsQuery returns no records
283
283
  const recordsQueryAfterPruneReply = yield dwn.processMessage(alice.did, recordsQuery.message);
284
- expect(recordsQueryAfterPruneReply.status.code).to.equal(200);
285
- expect((_c = recordsQueryAfterPruneReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(0);
284
+ expect(recordsQueryAfterPruneReply.status.code).toBe(200);
285
+ expect((_c = recordsQueryAfterPruneReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(0);
286
286
  }));
287
287
  it('should return 404 when attempting to prune against a record that is already pruned', () => __awaiter(this, void 0, void 0, function* () {
288
288
  // Scenario:
@@ -298,7 +298,7 @@ export function testRecordsPrune() {
298
298
  signer: Jws.createSigner(alice)
299
299
  });
300
300
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
301
- expect(protocolsConfigureReply.status.code).to.equal(202);
301
+ expect(protocolsConfigureReply.status.code).toBe(202);
302
302
  // 1. Alice has a record `foo` with a descendent chain
303
303
  // write foo <- bar <- baz records
304
304
  const fooData = TestDataGenerator.randomBytes(100);
@@ -312,7 +312,7 @@ export function testRecordsPrune() {
312
312
  };
313
313
  const foo = yield RecordsWrite.create(fooOptions);
314
314
  const fooWriteResponse = yield dwn.processMessage(alice.did, foo.message, { dataStream: DataStream.fromBytes(fooData) });
315
- expect(fooWriteResponse.status.code).equals(202);
315
+ expect(fooWriteResponse.status.code).toBe(202);
316
316
  const barData = TestDataGenerator.randomBytes(100);
317
317
  const barOptions = {
318
318
  signer: Jws.createSigner(alice),
@@ -325,7 +325,7 @@ export function testRecordsPrune() {
325
325
  };
326
326
  const bar = yield RecordsWrite.create(Object.assign({}, barOptions));
327
327
  const barWriteResponse = yield dwn.processMessage(alice.did, bar.message, { dataStream: DataStream.fromBytes(barData) });
328
- expect(barWriteResponse.status.code).equals(202);
328
+ expect(barWriteResponse.status.code).toBe(202);
329
329
  const bazData = TestDataGenerator.randomBytes(100);
330
330
  const bazOptions = {
331
331
  signer: Jws.createSigner(alice),
@@ -338,22 +338,22 @@ export function testRecordsPrune() {
338
338
  };
339
339
  const baz = yield RecordsWrite.create(Object.assign({}, bazOptions));
340
340
  const bazWriteResponse = yield dwn.processMessage(alice.did, baz.message, { dataStream: DataStream.fromBytes(bazData) });
341
- expect(bazWriteResponse.status.code).equals(202);
341
+ expect(bazWriteResponse.status.code).toBe(202);
342
342
  // sanity records are inserted in message store
343
343
  const queryFilter = [{
344
344
  interface: DwnInterfaceName.Records,
345
345
  protocol: nestedProtocol.protocol
346
346
  }];
347
347
  const queryResult = yield messageStore.query(alice.did, queryFilter);
348
- expect(queryResult.messages.length).to.equal(3);
348
+ expect(queryResult.messages.length).toBe(3);
349
349
  // sanity verify RecordsQuery returns no records
350
350
  const recordsQuery = yield RecordsQuery.create({
351
351
  signer: Jws.createSigner(alice),
352
352
  filter: { protocol: nestedProtocol.protocol }
353
353
  });
354
354
  const recordsQueryBeforeDeleteReply = yield dwn.processMessage(alice.did, recordsQuery.message);
355
- expect(recordsQueryBeforeDeleteReply.status.code).to.equal(200);
356
- expect((_a = recordsQueryBeforeDeleteReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(3);
355
+ expect(recordsQueryBeforeDeleteReply.status.code).toBe(200);
356
+ expect((_a = recordsQueryBeforeDeleteReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(3);
357
357
  // 2. Alice prunes the record `foo`
358
358
  const fooPrune1 = yield RecordsDelete.create({
359
359
  recordId: foo.message.recordId,
@@ -361,7 +361,7 @@ export function testRecordsPrune() {
361
361
  signer: Jws.createSigner(alice)
362
362
  });
363
363
  const prune1Reply = yield dwn.processMessage(alice.did, fooPrune1.message);
364
- expect(prune1Reply.status.code).to.equal(202);
364
+ expect(prune1Reply.status.code).toBe(202);
365
365
  // 3. Verify that Alice is unable to perform a prune on `foo` again
366
366
  const fooPrune2 = yield RecordsDelete.create({
367
367
  recordId: foo.message.recordId,
@@ -369,7 +369,7 @@ export function testRecordsPrune() {
369
369
  signer: Jws.createSigner(alice)
370
370
  });
371
371
  const prune2Reply = yield dwn.processMessage(alice.did, fooPrune2.message);
372
- expect(prune2Reply.status.code).to.equal(404);
372
+ expect(prune2Reply.status.code).toBe(404);
373
373
  }));
374
374
  describe('prune and co-prune protocol action', () => {
375
375
  it('should only allow a non-owner author to prune if `prune` is allowed and set to `true` in RecordsDelete', () => __awaiter(this, void 0, void 0, function* () {
@@ -422,7 +422,7 @@ export function testRecordsPrune() {
422
422
  signer: Jws.createSigner(alice)
423
423
  });
424
424
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
425
- expect(protocolsConfigureReply.status.code).to.equal(202);
425
+ expect(protocolsConfigureReply.status.code).toBe(202);
426
426
  // 2. Bob writes a record + a descendant in Alice's DWN.
427
427
  const postData = TestDataGenerator.randomBytes(100);
428
428
  const postOptions = {
@@ -434,7 +434,7 @@ export function testRecordsPrune() {
434
434
  };
435
435
  const post = yield RecordsWrite.create(postOptions);
436
436
  const postWriteResponse = yield dwn.processMessage(alice.did, post.message, { dataStream: DataStream.fromBytes(postData) });
437
- expect(postWriteResponse.status.code).equals(202);
437
+ expect(postWriteResponse.status.code).toBe(202);
438
438
  const attachmentData = TestDataGenerator.randomBytes(100);
439
439
  const attachmentOptions = {
440
440
  signer: Jws.createSigner(bob),
@@ -446,7 +446,7 @@ export function testRecordsPrune() {
446
446
  };
447
447
  const attachment = yield RecordsWrite.create(attachmentOptions);
448
448
  const attachmentWriteResponse = yield dwn.processMessage(alice.did, attachment.message, { dataStream: DataStream.fromBytes(attachmentData) });
449
- expect(attachmentWriteResponse.status.code).equals(202);
449
+ expect(attachmentWriteResponse.status.code).toBe(202);
450
450
  // 3. Verify Bob cannot prune the records if `prune` is not set to `true` in RecordsDelete.
451
451
  const unauthorizedPostPrune = yield RecordsDelete.create({
452
452
  recordId: post.message.recordId,
@@ -454,8 +454,8 @@ export function testRecordsPrune() {
454
454
  signer: Jws.createSigner(bob)
455
455
  });
456
456
  const unauthorizedPostPruneReply = yield dwn.processMessage(alice.did, unauthorizedPostPrune.message);
457
- expect(unauthorizedPostPruneReply.status.code).to.equal(401);
458
- expect(unauthorizedPostPruneReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
457
+ expect(unauthorizedPostPruneReply.status.code).toBe(401);
458
+ expect(unauthorizedPostPruneReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
459
459
  // 4. Verify Bob can prune the records by setting `prune` to `true` in RecordsDelete.
460
460
  const postPrune = yield RecordsDelete.create({
461
461
  recordId: post.message.recordId,
@@ -463,15 +463,15 @@ export function testRecordsPrune() {
463
463
  signer: Jws.createSigner(bob)
464
464
  });
465
465
  const pruneReply = yield dwn.processMessage(alice.did, postPrune.message);
466
- expect(pruneReply.status.code).to.equal(202);
466
+ expect(pruneReply.status.code).toBe(202);
467
467
  // sanity test `RecordsQuery` no longer returns the deleted record
468
468
  const recordsQuery = yield RecordsQuery.create({
469
469
  signer: Jws.createSigner(bob),
470
470
  filter: { protocol: protocolDefinition.protocol }
471
471
  });
472
472
  const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
473
- expect(recordsQueryReply.status.code).to.equal(200);
474
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
473
+ expect(recordsQueryReply.status.code).toBe(200);
474
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
475
475
  }));
476
476
  it('should not allow a non-owner author to prune if `prune` is not an authorized action', () => __awaiter(this, void 0, void 0, function* () {
477
477
  // Scenario:
@@ -488,7 +488,7 @@ export function testRecordsPrune() {
488
488
  signer: Jws.createSigner(alice)
489
489
  });
490
490
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
491
- expect(protocolsConfigureReply.status.code).to.equal(202);
491
+ expect(protocolsConfigureReply.status.code).toBe(202);
492
492
  // 2. Bob writes a record + a descendant in Alice's DWN.
493
493
  const messageData = TestDataGenerator.randomBytes(100);
494
494
  const messageOptions = {
@@ -501,7 +501,7 @@ export function testRecordsPrune() {
501
501
  };
502
502
  const message = yield RecordsWrite.create(messageOptions);
503
503
  const messageWriteResponse = yield dwn.processMessage(alice.did, message.message, { dataStream: DataStream.fromBytes(messageData) });
504
- expect(messageWriteResponse.status.code).equals(202);
504
+ expect(messageWriteResponse.status.code).toBe(202);
505
505
  const attachmentData = TestDataGenerator.randomBytes(100);
506
506
  const attachmentOptions = {
507
507
  signer: Jws.createSigner(bob),
@@ -513,7 +513,7 @@ export function testRecordsPrune() {
513
513
  };
514
514
  const attachment = yield RecordsWrite.create(attachmentOptions);
515
515
  const attachmentWriteResponse = yield dwn.processMessage(alice.did, attachment.message, { dataStream: DataStream.fromBytes(attachmentData) });
516
- expect(attachmentWriteResponse.status.code).equals(202);
516
+ expect(attachmentWriteResponse.status.code).toBe(202);
517
517
  // 3. Verify Bob cannot prune the records.
518
518
  const messagePrune = yield RecordsDelete.create({
519
519
  recordId: message.message.recordId,
@@ -521,16 +521,16 @@ export function testRecordsPrune() {
521
521
  signer: Jws.createSigner(bob)
522
522
  });
523
523
  const deleteReply = yield dwn.processMessage(alice.did, messagePrune.message);
524
- expect(deleteReply.status.code).to.equal(401);
525
- expect(deleteReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
524
+ expect(deleteReply.status.code).toBe(401);
525
+ expect(deleteReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
526
526
  // sanity test `RecordsQuery` still returns the records
527
527
  const recordsQuery = yield RecordsQuery.create({
528
528
  signer: Jws.createSigner(alice),
529
529
  filter: { protocol: protocolDefinition.protocol }
530
530
  });
531
531
  const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
532
- expect(recordsQueryReply.status.code).to.equal(200);
533
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(2);
532
+ expect(recordsQueryReply.status.code).toBe(200);
533
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(2);
534
534
  }));
535
535
  it('should allow a non-author to prune if `co-prune` is allowed and `prune` is set to `true` in RecordsDelete', () => __awaiter(this, void 0, void 0, function* () {
536
536
  // Scenario:
@@ -581,7 +581,7 @@ export function testRecordsPrune() {
581
581
  signer: Jws.createSigner(alice)
582
582
  });
583
583
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
584
- expect(protocolsConfigureReply.status.code).to.equal(202);
584
+ expect(protocolsConfigureReply.status.code).toBe(202);
585
585
  // 2. Bob writes a record + a descendant in Alice's DWN.
586
586
  const postData = TestDataGenerator.randomBytes(100);
587
587
  const postOptions = {
@@ -593,7 +593,7 @@ export function testRecordsPrune() {
593
593
  };
594
594
  const post = yield RecordsWrite.create(postOptions);
595
595
  const postWriteResponse = yield dwn.processMessage(alice.did, post.message, { dataStream: DataStream.fromBytes(postData) });
596
- expect(postWriteResponse.status.code).equals(202);
596
+ expect(postWriteResponse.status.code).toBe(202);
597
597
  const attachmentData = TestDataGenerator.randomBytes(100);
598
598
  const attachmentOptions = {
599
599
  signer: Jws.createSigner(bob),
@@ -605,7 +605,7 @@ export function testRecordsPrune() {
605
605
  };
606
606
  const attachment = yield RecordsWrite.create(attachmentOptions);
607
607
  const attachmentWriteResponse = yield dwn.processMessage(alice.did, attachment.message, { dataStream: DataStream.fromBytes(attachmentData) });
608
- expect(attachmentWriteResponse.status.code).equals(202);
608
+ expect(attachmentWriteResponse.status.code).toBe(202);
609
609
  // 3. Verify Carol cannot prune the records if `prune` is not set to `true` in RecordsDelete.
610
610
  const unauthorizedPostPrune = yield RecordsDelete.create({
611
611
  recordId: post.message.recordId,
@@ -613,8 +613,8 @@ export function testRecordsPrune() {
613
613
  signer: Jws.createSigner(carol)
614
614
  });
615
615
  const unauthorizedPostPruneReply = yield dwn.processMessage(alice.did, unauthorizedPostPrune.message);
616
- expect(unauthorizedPostPruneReply.status.code).to.equal(401);
617
- expect(unauthorizedPostPruneReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
616
+ expect(unauthorizedPostPruneReply.status.code).toBe(401);
617
+ expect(unauthorizedPostPruneReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
618
618
  // 4. Verify Carol can prune the records by setting `prune` to `true` in RecordsDelete.
619
619
  const postPrune = yield RecordsDelete.create({
620
620
  recordId: post.message.recordId,
@@ -622,15 +622,15 @@ export function testRecordsPrune() {
622
622
  signer: Jws.createSigner(carol)
623
623
  });
624
624
  const deleteReply = yield dwn.processMessage(alice.did, postPrune.message);
625
- expect(deleteReply.status.code).to.equal(202);
625
+ expect(deleteReply.status.code).toBe(202);
626
626
  // sanity test `RecordsQuery` no longer returns the deleted record
627
627
  const recordsQuery = yield RecordsQuery.create({
628
628
  signer: Jws.createSigner(bob),
629
629
  filter: { protocol: protocolDefinition.protocol }
630
630
  });
631
631
  const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
632
- expect(recordsQueryReply.status.code).to.equal(200);
633
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
632
+ expect(recordsQueryReply.status.code).toBe(200);
633
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
634
634
  }));
635
635
  it('should not allow a non-author to prune if `prune` is allowed but `co-prune` is not allowed', () => __awaiter(this, void 0, void 0, function* () {
636
636
  // Scenario:
@@ -682,7 +682,7 @@ export function testRecordsPrune() {
682
682
  signer: Jws.createSigner(alice)
683
683
  });
684
684
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
685
- expect(protocolsConfigureReply.status.code).to.equal(202);
685
+ expect(protocolsConfigureReply.status.code).toBe(202);
686
686
  // 2. Bob writes a record + a descendant in Alice's DWN.
687
687
  const postData = TestDataGenerator.randomBytes(100);
688
688
  const postOptions = {
@@ -694,7 +694,7 @@ export function testRecordsPrune() {
694
694
  };
695
695
  const post = yield RecordsWrite.create(postOptions);
696
696
  const postWriteResponse = yield dwn.processMessage(alice.did, post.message, { dataStream: DataStream.fromBytes(postData) });
697
- expect(postWriteResponse.status.code).equals(202);
697
+ expect(postWriteResponse.status.code).toBe(202);
698
698
  const attachmentData = TestDataGenerator.randomBytes(100);
699
699
  const attachmentOptions = {
700
700
  signer: Jws.createSigner(bob),
@@ -706,7 +706,7 @@ export function testRecordsPrune() {
706
706
  };
707
707
  const attachment = yield RecordsWrite.create(attachmentOptions);
708
708
  const attachmentWriteResponse = yield dwn.processMessage(alice.did, attachment.message, { dataStream: DataStream.fromBytes(attachmentData) });
709
- expect(attachmentWriteResponse.status.code).equals(202);
709
+ expect(attachmentWriteResponse.status.code).toBe(202);
710
710
  // 3. Verify Carol cannot prune the records.
711
711
  const postPrune = yield RecordsDelete.create({
712
712
  recordId: post.message.recordId,
@@ -714,16 +714,16 @@ export function testRecordsPrune() {
714
714
  signer: Jws.createSigner(carol)
715
715
  });
716
716
  const deleteReply = yield dwn.processMessage(alice.did, postPrune.message);
717
- expect(deleteReply.status.code).to.equal(401);
718
- expect(deleteReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
717
+ expect(deleteReply.status.code).toBe(401);
718
+ expect(deleteReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
719
719
  // sanity test `RecordsQuery` still returns the records
720
720
  const recordsQuery = yield RecordsQuery.create({
721
721
  signer: Jws.createSigner(bob),
722
722
  filter: { protocol: protocolDefinition.protocol }
723
723
  });
724
724
  const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
725
- expect(recordsQueryReply.status.code).to.equal(200);
726
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(2);
725
+ expect(recordsQueryReply.status.code).toBe(200);
726
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(2);
727
727
  }));
728
728
  it('should throw if only `delete` is allowed but received a RecordsDelete with `prune` set to `true`', () => __awaiter(this, void 0, void 0, function* () {
729
729
  // Scenario:
@@ -771,7 +771,7 @@ export function testRecordsPrune() {
771
771
  signer: Jws.createSigner(alice)
772
772
  });
773
773
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
774
- expect(protocolsConfigureReply.status.code).to.equal(202);
774
+ expect(protocolsConfigureReply.status.code).toBe(202);
775
775
  // 2. Bob writes a record + a descendant in Alice's DWN.
776
776
  const postData = TestDataGenerator.randomBytes(100);
777
777
  const postOptions = {
@@ -783,7 +783,7 @@ export function testRecordsPrune() {
783
783
  };
784
784
  const post = yield RecordsWrite.create(postOptions);
785
785
  const postWriteResponse = yield dwn.processMessage(alice.did, post.message, { dataStream: DataStream.fromBytes(postData) });
786
- expect(postWriteResponse.status.code).equals(202);
786
+ expect(postWriteResponse.status.code).toBe(202);
787
787
  const attachmentData = TestDataGenerator.randomBytes(100);
788
788
  const attachmentOptions = {
789
789
  signer: Jws.createSigner(bob),
@@ -795,7 +795,7 @@ export function testRecordsPrune() {
795
795
  };
796
796
  const attachment = yield RecordsWrite.create(attachmentOptions);
797
797
  const attachmentWriteResponse = yield dwn.processMessage(alice.did, attachment.message, { dataStream: DataStream.fromBytes(attachmentData) });
798
- expect(attachmentWriteResponse.status.code).equals(202);
798
+ expect(attachmentWriteResponse.status.code).toBe(202);
799
799
  // 3. Verify Bob cannot prune the records.
800
800
  const unauthorizedPostPrune = yield RecordsDelete.create({
801
801
  recordId: post.message.recordId,
@@ -803,8 +803,34 @@ export function testRecordsPrune() {
803
803
  signer: Jws.createSigner(bob)
804
804
  });
805
805
  const unauthorizedPostPruneReply = yield dwn.processMessage(alice.did, unauthorizedPostPrune.message);
806
- expect(unauthorizedPostPruneReply.status.code).to.equal(401);
807
- expect(unauthorizedPostPruneReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
806
+ expect(unauthorizedPostPruneReply.status.code).toBe(401);
807
+ expect(unauthorizedPostPruneReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
808
+ }));
809
+ it('should not allow creation of a protocol definition with action rule containing `prune` without `create`', () => __awaiter(this, void 0, void 0, function* () {
810
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
811
+ const protocolDefinition = {
812
+ protocol: 'http://prune-without-create.xyz',
813
+ published: true,
814
+ types: {
815
+ post: {},
816
+ },
817
+ structure: {
818
+ post: {
819
+ $actions: [
820
+ {
821
+ who: 'anyone',
822
+ can: ['prune'] // intentionally missing `create` action
823
+ }
824
+ ]
825
+ }
826
+ }
827
+ };
828
+ const protocolsConfigureCreatePromise = ProtocolsConfigure.create({
829
+ definition: protocolDefinition,
830
+ signer: Jws.createSigner(alice)
831
+ });
832
+ yield expect(protocolsConfigureCreatePromise)
833
+ .rejects.toThrow(DwnErrorCode.ProtocolsConfigureInvalidActionPruneWithoutCreate);
808
834
  }));
809
835
  });
810
836
  });