@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
@@ -8,14 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { ResumableTaskManager } from '../../src/core/resumable-task-manager.js';
11
- import chaiAsPromised from 'chai-as-promised';
12
11
  import sinon from 'sinon';
13
- import chai, { expect } from 'chai';
14
- import anyoneCollaborateProtocolDefinition from '../vectors/protocol-definitions/anyone-collaborate.json' assert { type: 'json' };
15
- import authorCanProtocolDefinition from '../vectors/protocol-definitions/author-can.json' assert { type: 'json' };
16
- import friendRoleProtocolDefinition from '../vectors/protocol-definitions/friend-role.json' assert { type: 'json' };
17
- import recipientCanProtocolDefinition from '../vectors/protocol-definitions/recipient-can.json' assert { type: 'json' };
18
- import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' assert { type: 'json' };
12
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
13
+ import anyoneCollaborateProtocolDefinition from '../vectors/protocol-definitions/anyone-collaborate.json' with { type: 'json' };
14
+ import authorCanProtocolDefinition from '../vectors/protocol-definitions/author-can.json' with { type: 'json' };
15
+ import friendRoleProtocolDefinition from '../vectors/protocol-definitions/friend-role.json' with { type: 'json' };
16
+ import recipientCanProtocolDefinition from '../vectors/protocol-definitions/recipient-can.json' with { type: 'json' };
17
+ import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' with { type: 'json' };
19
18
  import { ArrayUtility } from '../../src/utils/array.js';
20
19
  import { DwnErrorCode } from '../../src/core/dwn-error.js';
21
20
  import { DwnMethodName } from '../../src/enums/dwn-interface-method.js';
@@ -29,43 +28,42 @@ import { TestStubGenerator } from '../utils/test-stub-generator.js';
29
28
  import { Time } from '../../src/utils/time.js';
30
29
  import { DataStream, Dwn, Encoder, Jws, MessageStoreLevel, RecordsDelete, RecordsRead, RecordsWrite } from '../../src/index.js';
31
30
  import { DidKey, UniversalResolver } from '@enbox/dids';
32
- chai.use(chaiAsPromised);
33
31
  export function testRecordsDeleteHandler() {
34
32
  describe('RecordsDeleteHandler.handle()', () => {
35
33
  let didResolver;
36
34
  let messageStore;
37
35
  let dataStore;
38
36
  let resumableTaskStore;
39
- let eventLog;
37
+ let stateIndex;
40
38
  let eventStream;
41
39
  let dwn;
42
40
  beforeEach(() => {
43
41
  sinon.restore();
44
42
  });
45
- after(() => {
43
+ afterAll(() => {
46
44
  sinon.restore();
47
45
  });
48
46
  describe('functional tests', () => {
49
47
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
50
48
  // so that different test suites can reuse the same backend store for testing
51
- before(() => __awaiter(this, void 0, void 0, function* () {
49
+ beforeAll(() => __awaiter(this, void 0, void 0, function* () {
52
50
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
53
51
  const stores = TestStores.get();
54
52
  messageStore = stores.messageStore;
55
53
  dataStore = stores.dataStore;
56
54
  resumableTaskStore = stores.resumableTaskStore;
57
- eventLog = stores.eventLog;
55
+ stateIndex = stores.stateIndex;
58
56
  eventStream = TestEventStream.get();
59
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
57
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
60
58
  }));
61
59
  beforeEach(() => __awaiter(this, void 0, void 0, function* () {
62
60
  // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
63
61
  yield messageStore.clear();
64
62
  yield dataStore.clear();
65
63
  yield resumableTaskStore.clear();
66
- yield eventLog.clear();
64
+ yield stateIndex.clear();
67
65
  }));
68
- after(() => __awaiter(this, void 0, void 0, function* () {
66
+ afterAll(() => __awaiter(this, void 0, void 0, function* () {
69
67
  yield dwn.close();
70
68
  }));
71
69
  it('should handle RecordsDelete successfully and return 404 if deleting a deleted record', () => __awaiter(this, void 0, void 0, function* () {
@@ -74,33 +72,33 @@ export function testRecordsDeleteHandler() {
74
72
  // insert data
75
73
  const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
76
74
  const writeReply = yield dwn.processMessage(alice.did, message, { dataStream });
77
- expect(writeReply.status.code).to.equal(202);
75
+ expect(writeReply.status.code).toBe(202);
78
76
  // ensure data is inserted
79
77
  const queryData = yield TestDataGenerator.generateRecordsQuery({
80
78
  author: alice,
81
79
  filter: { recordId: message.recordId }
82
80
  });
83
81
  const reply = yield dwn.processMessage(alice.did, queryData.message);
84
- expect(reply.status.code).to.equal(200);
85
- expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
82
+ expect(reply.status.code).toBe(200);
83
+ expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
86
84
  // testing delete
87
85
  const recordsDelete = yield RecordsDelete.create({
88
86
  recordId: message.recordId,
89
87
  signer: Jws.createSigner(alice)
90
88
  });
91
89
  const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
92
- expect(deleteReply.status.code).to.equal(202);
90
+ expect(deleteReply.status.code).toBe(202);
93
91
  // ensure a query will no longer find the deleted record
94
92
  const reply2 = yield dwn.processMessage(alice.did, queryData.message);
95
- expect(reply2.status.code).to.equal(200);
96
- expect((_b = reply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
93
+ expect(reply2.status.code).toBe(200);
94
+ expect((_b = reply2.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
97
95
  // testing deleting a deleted record
98
96
  const recordsDelete2 = yield RecordsDelete.create({
99
97
  recordId: message.recordId,
100
98
  signer: Jws.createSigner(alice)
101
99
  });
102
100
  const recordsDelete2Reply = yield dwn.processMessage(alice.did, recordsDelete2.message);
103
- expect(recordsDelete2Reply.status.code).to.equal(404);
101
+ expect(recordsDelete2Reply.status.code).toBe(404);
104
102
  }));
105
103
  it('should not affect other records or tenants with the same data', () => __awaiter(this, void 0, void 0, function* () {
106
104
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -109,26 +107,26 @@ export function testRecordsDeleteHandler() {
109
107
  // alice writes a records with data
110
108
  const aliceWriteData = yield TestDataGenerator.generateRecordsWrite({ author: alice, data });
111
109
  const aliceWriteReply = yield dwn.processMessage(alice.did, aliceWriteData.message, { dataStream: aliceWriteData.dataStream });
112
- expect(aliceWriteReply.status.code).to.equal(202);
110
+ expect(aliceWriteReply.status.code).toBe(202);
113
111
  // alice writes another record with the same data
114
112
  const aliceWrite2Data = yield TestDataGenerator.generateRecordsWrite({ author: alice, data });
115
113
  const aliceWrite2Reply = yield dwn.processMessage(alice.did, aliceWrite2Data.message, { dataStream: aliceWrite2Data.dataStream });
116
- expect(aliceWrite2Reply.status.code).to.equal(202);
114
+ expect(aliceWrite2Reply.status.code).toBe(202);
117
115
  // bob writes a records with same data
118
116
  const bobWriteData = yield TestDataGenerator.generateRecordsWrite({ author: bob, data });
119
117
  const bobWriteReply = yield dwn.processMessage(bob.did, bobWriteData.message, { dataStream: bobWriteData.dataStream });
120
- expect(bobWriteReply.status.code).to.equal(202);
118
+ expect(bobWriteReply.status.code).toBe(202);
121
119
  // bob writes another record with the same data
122
120
  const bobWrite2Data = yield TestDataGenerator.generateRecordsWrite({ author: bob, data });
123
121
  const bobWrite2Reply = yield dwn.processMessage(bob.did, bobWrite2Data.message, { dataStream: bobWrite2Data.dataStream });
124
- expect(bobWrite2Reply.status.code).to.equal(202);
122
+ expect(bobWrite2Reply.status.code).toBe(202);
125
123
  // alice deletes one of the two records
126
124
  const aliceDeleteWriteData = yield TestDataGenerator.generateRecordsDelete({
127
125
  author: alice,
128
126
  recordId: aliceWriteData.message.recordId
129
127
  });
130
128
  const aliceDeleteWriteReply = yield dwn.processMessage(alice.did, aliceDeleteWriteData.message);
131
- expect(aliceDeleteWriteReply.status.code).to.equal(202);
129
+ expect(aliceDeleteWriteReply.status.code).toBe(202);
132
130
  // verify the other record with the same data is unaffected
133
131
  const aliceRead1 = yield RecordsRead.create({
134
132
  filter: {
@@ -137,19 +135,19 @@ export function testRecordsDeleteHandler() {
137
135
  signer: Jws.createSigner(alice)
138
136
  });
139
137
  const aliceRead1Reply = yield dwn.processMessage(alice.did, aliceRead1.message);
140
- expect(aliceRead1Reply.status.code).to.equal(200);
138
+ expect(aliceRead1Reply.status.code).toBe(200);
141
139
  const aliceDataFetched = yield DataStream.toBytes(aliceRead1Reply.entry.data);
142
- expect(ArrayUtility.byteArraysEqual(aliceDataFetched, data)).to.be.true;
140
+ expect(ArrayUtility.byteArraysEqual(aliceDataFetched, data)).toBe(true);
143
141
  // alice deletes the other record
144
142
  const aliceDeleteWrite2Data = yield TestDataGenerator.generateRecordsDelete({
145
143
  author: alice,
146
144
  recordId: aliceWrite2Data.message.recordId
147
145
  });
148
146
  const aliceDeleteWrite2Reply = yield dwn.processMessage(alice.did, aliceDeleteWrite2Data.message);
149
- expect(aliceDeleteWrite2Reply.status.code).to.equal(202);
147
+ expect(aliceDeleteWrite2Reply.status.code).toBe(202);
150
148
  // verify that alice can no longer fetch the 2nd record
151
149
  const aliceRead2Reply = yield dwn.processMessage(alice.did, aliceRead1.message);
152
- expect(aliceRead2Reply.status.code).to.equal(404);
150
+ expect(aliceRead2Reply.status.code).toBe(404);
153
151
  // verify that bob can still fetch record with the same data
154
152
  const bobRead1 = yield RecordsRead.create({
155
153
  filter: {
@@ -158,9 +156,9 @@ export function testRecordsDeleteHandler() {
158
156
  signer: Jws.createSigner(bob)
159
157
  });
160
158
  const bobRead1Reply = yield dwn.processMessage(bob.did, bobRead1.message);
161
- expect(bobRead1Reply.status.code).to.equal(200);
159
+ expect(bobRead1Reply.status.code).toBe(200);
162
160
  const bobDataFetched = yield DataStream.toBytes(bobRead1Reply.entry.data);
163
- expect(ArrayUtility.byteArraysEqual(bobDataFetched, data)).to.be.true;
161
+ expect(ArrayUtility.byteArraysEqual(bobDataFetched, data)).toBe(true);
164
162
  }));
165
163
  it('should return 404 if deleting a non-existent record', () => __awaiter(this, void 0, void 0, function* () {
166
164
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -170,7 +168,7 @@ export function testRecordsDeleteHandler() {
170
168
  signer: Jws.createSigner(alice)
171
169
  });
172
170
  const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
173
- expect(deleteReply.status.code).to.equal(404);
171
+ expect(deleteReply.status.code).toBe(404);
174
172
  }));
175
173
  it('should be disallowed if there is a newer RecordsWrite already in the DWN ', () => __awaiter(this, void 0, void 0, function* () {
176
174
  var _a;
@@ -178,7 +176,7 @@ export function testRecordsDeleteHandler() {
178
176
  // initial write
179
177
  const initialWriteData = yield TestDataGenerator.generateRecordsWrite({ author: alice });
180
178
  const initialWriteReply = yield dwn.processMessage(alice.did, initialWriteData.message, { dataStream: initialWriteData.dataStream });
181
- expect(initialWriteReply.status.code).to.equal(202);
179
+ expect(initialWriteReply.status.code).toBe(202);
182
180
  // generate subsequent write and delete with the delete having an earlier timestamp
183
181
  // NOTE: creating RecordsDelete first ensures it has an earlier `messageTimestamp` time
184
182
  const recordsDelete = yield RecordsDelete.create({
@@ -192,10 +190,10 @@ export function testRecordsDeleteHandler() {
192
190
  });
193
191
  // subsequent write
194
192
  const subsequentWriteReply = yield dwn.processMessage(alice.did, subsequentWriteData.message, { dataStream: subsequentWriteData.dataStream });
195
- expect(subsequentWriteReply.status.code).to.equal(202);
193
+ expect(subsequentWriteReply.status.code).toBe(202);
196
194
  // test that a delete with an earlier `messageTimestamp` results in a 409
197
195
  const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
198
- expect(deleteReply.status.code).to.equal(409);
196
+ expect(deleteReply.status.code).toBe(409);
199
197
  // ensure data still exists
200
198
  const queryData = yield TestDataGenerator.generateRecordsQuery({
201
199
  author: alice,
@@ -203,9 +201,9 @@ export function testRecordsDeleteHandler() {
203
201
  });
204
202
  const expectedEncodedData = Encoder.bytesToBase64Url(subsequentWriteData.dataBytes);
205
203
  const reply = yield dwn.processMessage(alice.did, queryData.message);
206
- expect(reply.status.code).to.equal(200);
207
- expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
208
- expect(reply.entries[0].encodedData).to.equal(expectedEncodedData);
204
+ expect(reply.status.code).toBe(200);
205
+ expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
206
+ expect(reply.entries[0].encodedData).toBe(expectedEncodedData);
209
207
  }));
210
208
  it('should be able to delete then rewrite the same data', () => __awaiter(this, void 0, void 0, function* () {
211
209
  var _a, _b, _c;
@@ -218,44 +216,44 @@ export function testRecordsDeleteHandler() {
218
216
  data
219
217
  });
220
218
  const aliceWriteReply = yield dwn.processMessage(alice.did, aliceWriteData.message, { dataStream: aliceWriteData.dataStream });
221
- expect(aliceWriteReply.status.code).to.equal(202);
219
+ expect(aliceWriteReply.status.code).toBe(202);
222
220
  const aliceQueryWriteAfterAliceWriteData = yield TestDataGenerator.generateRecordsQuery({
223
221
  author: alice,
224
222
  filter: { recordId: aliceWriteData.message.recordId }
225
223
  });
226
224
  const aliceQueryWriteAfterAliceWriteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceWriteData.message);
227
- expect(aliceQueryWriteAfterAliceWriteReply.status.code).to.equal(200);
228
- expect((_a = aliceQueryWriteAfterAliceWriteReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
229
- expect(aliceQueryWriteAfterAliceWriteReply.entries[0].encodedData).to.equal(encodedData);
225
+ expect(aliceQueryWriteAfterAliceWriteReply.status.code).toBe(200);
226
+ expect((_a = aliceQueryWriteAfterAliceWriteReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
227
+ expect(aliceQueryWriteAfterAliceWriteReply.entries[0].encodedData).toBe(encodedData);
230
228
  // alice deleting the record
231
229
  const aliceDeleteWriteData = yield TestDataGenerator.generateRecordsDelete({
232
230
  author: alice,
233
231
  recordId: aliceWriteData.message.recordId
234
232
  });
235
233
  const aliceDeleteWriteReply = yield dwn.processMessage(alice.did, aliceDeleteWriteData.message);
236
- expect(aliceDeleteWriteReply.status.code).to.equal(202);
234
+ expect(aliceDeleteWriteReply.status.code).toBe(202);
237
235
  const aliceQueryWriteAfterAliceDeleteData = yield TestDataGenerator.generateRecordsQuery({
238
236
  author: alice,
239
237
  filter: { recordId: aliceWriteData.message.recordId }
240
238
  });
241
239
  const aliceQueryWriteAfterAliceDeleteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceDeleteData.message);
242
- expect(aliceQueryWriteAfterAliceDeleteReply.status.code).to.equal(200);
243
- expect((_b = aliceQueryWriteAfterAliceDeleteReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
240
+ expect(aliceQueryWriteAfterAliceDeleteReply.status.code).toBe(200);
241
+ expect((_b = aliceQueryWriteAfterAliceDeleteReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
244
242
  // alice writes a new record with the same data
245
243
  const aliceRewriteData = yield TestDataGenerator.generateRecordsWrite({
246
244
  author: alice,
247
245
  data
248
246
  });
249
247
  const aliceRewriteReply = yield dwn.processMessage(alice.did, aliceRewriteData.message, { dataStream: aliceRewriteData.dataStream });
250
- expect(aliceRewriteReply.status.code).to.equal(202);
248
+ expect(aliceRewriteReply.status.code).toBe(202);
251
249
  const aliceQueryWriteAfterAliceRewriteData = yield TestDataGenerator.generateRecordsQuery({
252
250
  author: alice,
253
251
  filter: { recordId: aliceRewriteData.message.recordId }
254
252
  });
255
253
  const aliceQueryWriteAfterAliceRewriteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceRewriteData.message);
256
- expect(aliceQueryWriteAfterAliceRewriteReply.status.code).to.equal(200);
257
- expect((_c = aliceQueryWriteAfterAliceRewriteReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(1);
258
- expect(aliceQueryWriteAfterAliceRewriteReply.entries[0].encodedData).to.equal(encodedData);
254
+ expect(aliceQueryWriteAfterAliceRewriteReply.status.code).toBe(200);
255
+ expect((_c = aliceQueryWriteAfterAliceRewriteReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(1);
256
+ expect(aliceQueryWriteAfterAliceRewriteReply.entries[0].encodedData).toBe(encodedData);
259
257
  }));
260
258
  describe('protocol based deletes', () => {
261
259
  it('should allow delete with allow-anyone rule', () => __awaiter(this, void 0, void 0, function* () {
@@ -270,7 +268,7 @@ export function testRecordsDeleteHandler() {
270
268
  // setting up a stub DID resolver
271
269
  TestStubGenerator.stubDidResolver(didResolver, [alice, bob]);
272
270
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
273
- expect(protocolsConfigureReply.status.code).to.equal(202);
271
+ expect(protocolsConfigureReply.status.code).toBe(202);
274
272
  // Alice writes a record
275
273
  const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
276
274
  author: alice,
@@ -278,14 +276,14 @@ export function testRecordsDeleteHandler() {
278
276
  protocolPath: 'doc',
279
277
  });
280
278
  const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream: recordsWrite.dataStream });
281
- expect(recordsWriteReply.status.code).to.eq(202);
279
+ expect(recordsWriteReply.status.code).toBe(202);
282
280
  // Bob (anyone) is able to delete the record
283
281
  const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
284
282
  author: bob,
285
283
  recordId: recordsWrite.message.recordId,
286
284
  });
287
285
  const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
288
- expect(recordsDeleteReply.status.code).to.eq(202);
286
+ expect(recordsDeleteReply.status.code).toBe(202);
289
287
  }));
290
288
  describe('recipient rules', () => {
291
289
  it('should allow delete with ancestor recipient rule', () => __awaiter(this, void 0, void 0, function* () {
@@ -302,7 +300,7 @@ export function testRecordsDeleteHandler() {
302
300
  // setting up a stub DID resolver
303
301
  TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
304
302
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
305
- expect(protocolsConfigureReply.status.code).to.equal(202);
303
+ expect(protocolsConfigureReply.status.code).toBe(202);
306
304
  // Alice writes a chat
307
305
  const chatRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
308
306
  author: alice,
@@ -311,7 +309,7 @@ export function testRecordsDeleteHandler() {
311
309
  protocolPath: 'post',
312
310
  });
313
311
  const chatRecordsWriteReply = yield dwn.processMessage(alice.did, chatRecordsWrite.message, { dataStream: chatRecordsWrite.dataStream });
314
- expect(chatRecordsWriteReply.status.code).to.eq(202);
312
+ expect(chatRecordsWriteReply.status.code).toBe(202);
315
313
  // Alice writes a 'chat/tag'
316
314
  const tagRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
317
315
  author: alice,
@@ -320,22 +318,22 @@ export function testRecordsDeleteHandler() {
320
318
  parentContextId: chatRecordsWrite.message.contextId,
321
319
  });
322
320
  const tagRecordsWriteReply = yield dwn.processMessage(alice.did, tagRecordsWrite.message, { dataStream: tagRecordsWrite.dataStream });
323
- expect(tagRecordsWriteReply.status.code).to.eq(202);
321
+ expect(tagRecordsWriteReply.status.code).toBe(202);
324
322
  // Carol is unable to delete the 'chat/tag'
325
323
  const recordsDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
326
324
  author: carol,
327
325
  recordId: tagRecordsWrite.message.recordId,
328
326
  });
329
327
  const recordsDeleteCarolReply = yield dwn.processMessage(alice.did, recordsDeleteCarol.message);
330
- expect(recordsDeleteCarolReply.status.code).to.eq(401);
331
- expect(recordsDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
328
+ expect(recordsDeleteCarolReply.status.code).toBe(401);
329
+ expect(recordsDeleteCarolReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
332
330
  // Bob is able to delete the 'chat/tag'
333
331
  const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
334
332
  author: bob,
335
333
  recordId: tagRecordsWrite.message.recordId,
336
334
  });
337
335
  const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
338
- expect(recordsDeleteReply.status.code).to.eq(202);
336
+ expect(recordsDeleteReply.status.code).toBe(202);
339
337
  }));
340
338
  it('should allow delete with direct recipient rule', () => __awaiter(this, void 0, void 0, function* () {
341
339
  // scenario: Alice creates a 'post' with Bob as recipient. Bob is able to delete
@@ -351,7 +349,7 @@ export function testRecordsDeleteHandler() {
351
349
  // setting up a stub DID resolver
352
350
  TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
353
351
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
354
- expect(protocolsConfigureReply.status.code).to.equal(202);
352
+ expect(protocolsConfigureReply.status.code).toBe(202);
355
353
  // Alice creates a 'post' with Bob as recipient
356
354
  const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
357
355
  author: alice,
@@ -360,22 +358,22 @@ export function testRecordsDeleteHandler() {
360
358
  protocolPath: 'post',
361
359
  });
362
360
  const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream: recordsWrite.dataStream });
363
- expect(recordsWriteReply.status.code).to.eq(202);
361
+ expect(recordsWriteReply.status.code).toBe(202);
364
362
  // Carol is unable to delete the 'post'
365
363
  const carolRecordsDelete = yield TestDataGenerator.generateRecordsDelete({
366
364
  author: carol,
367
365
  recordId: recordsWrite.message.recordId,
368
366
  });
369
367
  const carolRecordsDeleteReply = yield dwn.processMessage(alice.did, carolRecordsDelete.message);
370
- expect(carolRecordsDeleteReply.status.code).to.eq(401);
371
- expect(carolRecordsDeleteReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
368
+ expect(carolRecordsDeleteReply.status.code).toBe(401);
369
+ expect(carolRecordsDeleteReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
372
370
  // Bob is able to delete the post
373
371
  const bobRecordsDelete = yield TestDataGenerator.generateRecordsDelete({
374
372
  author: bob,
375
373
  recordId: recordsWrite.message.recordId,
376
374
  });
377
375
  const bobRecordsDeleteReply = yield dwn.processMessage(alice.did, bobRecordsDelete.message);
378
- expect(bobRecordsDeleteReply.status.code).to.eq(202);
376
+ expect(bobRecordsDeleteReply.status.code).toBe(202);
379
377
  }));
380
378
  });
381
379
  describe('author action rules', () => {
@@ -393,7 +391,7 @@ export function testRecordsDeleteHandler() {
393
391
  // setting up a stub DID resolver
394
392
  TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
395
393
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
396
- expect(protocolsConfigureReply.status.code).to.equal(202);
394
+ expect(protocolsConfigureReply.status.code).toBe(202);
397
395
  // Bob writes a post
398
396
  const postRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
399
397
  author: bob,
@@ -401,7 +399,7 @@ export function testRecordsDeleteHandler() {
401
399
  protocolPath: 'post',
402
400
  });
403
401
  const postRecordsWriteReply = yield dwn.processMessage(alice.did, postRecordsWrite.message, { dataStream: postRecordsWrite.dataStream });
404
- expect(postRecordsWriteReply.status.code).to.eq(202);
402
+ expect(postRecordsWriteReply.status.code).toBe(202);
405
403
  // Alice writes a 'post/comment'
406
404
  const commentRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
407
405
  author: alice,
@@ -410,22 +408,22 @@ export function testRecordsDeleteHandler() {
410
408
  parentContextId: postRecordsWrite.message.contextId,
411
409
  });
412
410
  const commentRecordsWriteReply = yield dwn.processMessage(alice.did, commentRecordsWrite.message, { dataStream: commentRecordsWrite.dataStream });
413
- expect(commentRecordsWriteReply.status.code).to.eq(202);
411
+ expect(commentRecordsWriteReply.status.code).toBe(202);
414
412
  // Carol is unable to delete Alice's 'post/comment'
415
413
  const recordsDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
416
414
  author: carol,
417
415
  recordId: commentRecordsWrite.message.recordId,
418
416
  });
419
417
  const recordsDeleteCarolReply = yield dwn.processMessage(alice.did, recordsDeleteCarol.message);
420
- expect(recordsDeleteCarolReply.status.code).to.eq(401);
421
- expect(recordsDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
418
+ expect(recordsDeleteCarolReply.status.code).toBe(401);
419
+ expect(recordsDeleteCarolReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
422
420
  // Bob is able to delete the Alice's 'post/comment'
423
421
  const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
424
422
  author: bob,
425
423
  recordId: commentRecordsWrite.message.recordId,
426
424
  });
427
425
  const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
428
- expect(recordsDeleteReply.status.code).to.eq(202);
426
+ expect(recordsDeleteReply.status.code).toBe(202);
429
427
  }));
430
428
  });
431
429
  describe('role based deletes', () => {
@@ -442,7 +440,7 @@ export function testRecordsDeleteHandler() {
442
440
  protocolDefinition
443
441
  });
444
442
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
445
- expect(protocolsConfigureReply.status.code).to.equal(202);
443
+ expect(protocolsConfigureReply.status.code).toBe(202);
446
444
  // Alice creates a thread
447
445
  const threadRecord = yield TestDataGenerator.generateRecordsWrite({
448
446
  author: alice,
@@ -451,7 +449,7 @@ export function testRecordsDeleteHandler() {
451
449
  protocolPath: 'thread'
452
450
  });
453
451
  const threadRecordReply = yield dwn.processMessage(alice.did, threadRecord.message, { dataStream: threadRecord.dataStream });
454
- expect(threadRecordReply.status.code).to.equal(202);
452
+ expect(threadRecordReply.status.code).toBe(202);
455
453
  // Alice adds Bob as a 'thread/admin' in that thread
456
454
  const participantRecord = yield TestDataGenerator.generateRecordsWrite({
457
455
  author: alice,
@@ -461,7 +459,7 @@ export function testRecordsDeleteHandler() {
461
459
  parentContextId: threadRecord.message.contextId,
462
460
  });
463
461
  const participantRecordReply = yield dwn.processMessage(alice.did, participantRecord.message, { dataStream: participantRecord.dataStream });
464
- expect(participantRecordReply.status.code).to.equal(202);
462
+ expect(participantRecordReply.status.code).toBe(202);
465
463
  // Alice writes a chat message in that thread
466
464
  const chatRecord = yield TestDataGenerator.generateRecordsWrite({
467
465
  author: alice,
@@ -471,15 +469,15 @@ export function testRecordsDeleteHandler() {
471
469
  parentContextId: threadRecord.message.contextId,
472
470
  });
473
471
  const chatRecordReply = yield dwn.processMessage(alice.did, chatRecord.message, { dataStream: chatRecord.dataStream });
474
- expect(chatRecordReply.status.code).to.equal(202);
472
+ expect(chatRecordReply.status.code).toBe(202);
475
473
  // Verifies that Carol cannot delete without appropriate role
476
474
  const chatDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
477
475
  author: carol,
478
476
  recordId: chatRecord.message.recordId,
479
477
  });
480
478
  const chatDeleteReplyCarol = yield dwn.processMessage(alice.did, chatDeleteCarol.message);
481
- expect(chatDeleteReplyCarol.status.code).to.eq(401);
482
- expect(chatDeleteReplyCarol.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
479
+ expect(chatDeleteReplyCarol.status.code).toBe(401);
480
+ expect(chatDeleteReplyCarol.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
483
481
  // Bob invokes the role to delete the chat message
484
482
  const chatDelete = yield TestDataGenerator.generateRecordsDelete({
485
483
  author: bob,
@@ -487,7 +485,7 @@ export function testRecordsDeleteHandler() {
487
485
  protocolRole: 'thread/admin',
488
486
  });
489
487
  const chatDeleteReply = yield dwn.processMessage(alice.did, chatDelete.message);
490
- expect(chatDeleteReply.status.code).to.equal(202);
488
+ expect(chatDeleteReply.status.code).toBe(202);
491
489
  }));
492
490
  it('should allow co-delete invoking a root-level role', () => __awaiter(this, void 0, void 0, function* () {
493
491
  // scenario: Alice adds Bob as a root-level 'admin' role. She writes a 'chat'.
@@ -501,7 +499,7 @@ export function testRecordsDeleteHandler() {
501
499
  protocolDefinition
502
500
  });
503
501
  const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
504
- expect(protocolsConfigureReply.status.code).to.equal(202);
502
+ expect(protocolsConfigureReply.status.code).toBe(202);
505
503
  // Alice adds Bob as a 'thread/admin' in that thread
506
504
  const participantRecord = yield TestDataGenerator.generateRecordsWrite({
507
505
  author: alice,
@@ -510,7 +508,7 @@ export function testRecordsDeleteHandler() {
510
508
  protocolPath: 'admin',
511
509
  });
512
510
  const participantRecordReply = yield dwn.processMessage(alice.did, participantRecord.message, { dataStream: participantRecord.dataStream });
513
- expect(participantRecordReply.status.code).to.equal(202);
511
+ expect(participantRecordReply.status.code).toBe(202);
514
512
  // Alice writes a chat message in that thread
515
513
  const chatRecord = yield TestDataGenerator.generateRecordsWrite({
516
514
  author: alice,
@@ -519,15 +517,15 @@ export function testRecordsDeleteHandler() {
519
517
  protocolPath: 'chat',
520
518
  });
521
519
  const chatRecordReply = yield dwn.processMessage(alice.did, chatRecord.message, { dataStream: chatRecord.dataStream });
522
- expect(chatRecordReply.status.code).to.equal(202);
520
+ expect(chatRecordReply.status.code).toBe(202);
523
521
  // Carol is unable to delete the chat message
524
522
  const chatDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
525
523
  author: carol,
526
524
  recordId: chatRecord.message.recordId,
527
525
  });
528
526
  const chatDeleteCarolReply = yield dwn.processMessage(alice.did, chatDeleteCarol.message);
529
- expect(chatDeleteCarolReply.status.code).to.equal(401);
530
- expect(chatDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
527
+ expect(chatDeleteCarolReply.status.code).toBe(401);
528
+ expect(chatDeleteCarolReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
531
529
  // Bob invokes the role to delete the chat message
532
530
  const chatDelete = yield TestDataGenerator.generateRecordsDelete({
533
531
  author: bob,
@@ -535,7 +533,7 @@ export function testRecordsDeleteHandler() {
535
533
  protocolRole: 'admin',
536
534
  });
537
535
  const chatDeleteReply = yield dwn.processMessage(alice.did, chatDelete.message);
538
- expect(chatDeleteReply.status.code).to.equal(202);
536
+ expect(chatDeleteReply.status.code).toBe(202);
539
537
  }));
540
538
  });
541
539
  });
@@ -547,21 +545,21 @@ export function testRecordsDeleteHandler() {
547
545
  author: alice,
548
546
  });
549
547
  const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream: recordsWrite.dataStream });
550
- expect(recordsWriteReply.status.code).to.equal(202);
548
+ expect(recordsWriteReply.status.code).toBe(202);
551
549
  const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
552
550
  author: bob,
553
551
  recordId: recordsWrite.message.recordId,
554
552
  });
555
553
  const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
556
- expect(recordsDeleteReply.status.code).to.equal(401);
557
- expect(recordsDeleteReply.status.detail).to.contain(DwnErrorCode.RecordsDeleteAuthorizationFailed);
554
+ expect(recordsDeleteReply.status.code).toBe(401);
555
+ expect(recordsDeleteReply.status.detail).toContain(DwnErrorCode.RecordsDeleteAuthorizationFailed);
558
556
  }));
559
557
  it('should index additional properties from the RecordsWrite being deleted', () => __awaiter(this, void 0, void 0, function* () {
560
558
  const alice = yield TestDataGenerator.generateDidKeyPersona();
561
559
  // initial write
562
560
  const initialWriteData = yield TestDataGenerator.generateRecordsWrite({ author: alice, schema: 'testSchema' });
563
561
  const initialWriteReply = yield dwn.processMessage(alice.did, initialWriteData.message, { dataStream: initialWriteData.dataStream });
564
- expect(initialWriteReply.status.code).to.equal(202);
562
+ expect(initialWriteReply.status.code).toBe(202);
565
563
  // generate subsequent write and delete with the delete having an earlier timestamp
566
564
  // NOTE: creating RecordsDelete first ensures it has an earlier `messageTimestamp` time
567
565
  const recordsDelete = yield RecordsDelete.create({
@@ -570,62 +568,61 @@ export function testRecordsDeleteHandler() {
570
568
  });
571
569
  const deleteMessageCid = yield Message.getCid(recordsDelete.message);
572
570
  const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
573
- expect(deleteReply.status.code).to.equal(202);
571
+ expect(deleteReply.status.code).toBe(202);
574
572
  // message store
575
573
  const { messages } = yield messageStore.query(alice.did, [{ schema: normalizeSchemaUrl('testSchema'), method: DwnMethodName.Delete }]);
576
- expect(messages.length).to.equal(1);
577
- expect(yield Message.getCid(messages[0])).to.equal(deleteMessageCid);
578
- // event log
579
- const { events } = yield eventLog.queryEvents(alice.did, [{ schema: normalizeSchemaUrl('testSchema'), method: DwnMethodName.Delete }]);
580
- expect(events.length).to.equal(1);
581
- expect(events[0]).to.equal(deleteMessageCid);
574
+ expect(messages.length).toBe(1);
575
+ expect(yield Message.getCid(messages[0])).toBe(deleteMessageCid);
576
+ // state index
577
+ const events = yield stateIndex.getLeaves(alice.did, []);
578
+ expect(events).toContain(deleteMessageCid);
582
579
  }));
583
- describe('event log', () => {
580
+ describe('state index', () => {
584
581
  it('should include RecordsDelete event and keep initial RecordsWrite event', () => __awaiter(this, void 0, void 0, function* () {
585
582
  const alice = yield TestDataGenerator.generateDidKeyPersona();
586
583
  const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
587
584
  const writeReply = yield dwn.processMessage(alice.did, message, { dataStream });
588
- expect(writeReply.status.code).to.equal(202);
585
+ expect(writeReply.status.code).toBe(202);
589
586
  const recordsDelete = yield RecordsDelete.create({
590
587
  recordId: message.recordId,
591
588
  signer: Jws.createSigner(alice)
592
589
  });
593
590
  const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
594
- expect(deleteReply.status.code).to.equal(202);
595
- const { events } = yield eventLog.getEvents(alice.did);
596
- expect(events.length).to.equal(2);
591
+ expect(deleteReply.status.code).toBe(202);
592
+ const events = yield stateIndex.getLeaves(alice.did, []);
593
+ expect(events.length).toBe(2);
597
594
  const writeMessageCid = yield Message.getCid(message);
598
595
  const deleteMessageCid = yield Message.getCid(recordsDelete.message);
599
596
  const expectedMessageCids = new Set([writeMessageCid, deleteMessageCid]);
600
597
  for (const messageCid of events) {
601
598
  expectedMessageCids.delete(messageCid);
602
599
  }
603
- expect(expectedMessageCids.size).to.equal(0);
600
+ expect(expectedMessageCids.size).toBe(0);
604
601
  }));
605
602
  it('should only keep first write and delete when subsequent writes happen', () => __awaiter(this, void 0, void 0, function* () {
606
603
  const { message, author, dataStream, recordsWrite } = yield TestDataGenerator.generateRecordsWrite();
607
604
  TestStubGenerator.stubDidResolver(didResolver, [author]);
608
605
  const reply = yield dwn.processMessage(author.did, message, { dataStream });
609
- expect(reply.status.code).to.equal(202);
606
+ expect(reply.status.code).toBe(202);
610
607
  const newWrite = yield RecordsWrite.createFrom({
611
608
  recordsWriteMessage: recordsWrite.message,
612
609
  published: true,
613
610
  signer: Jws.createSigner(author)
614
611
  });
615
612
  const newWriteReply = yield dwn.processMessage(author.did, newWrite.message);
616
- expect(newWriteReply.status.code).to.equal(202);
613
+ expect(newWriteReply.status.code).toBe(202);
617
614
  const recordsDelete = yield RecordsDelete.create({
618
615
  recordId: message.recordId,
619
616
  signer: Jws.createSigner(author)
620
617
  });
621
618
  const deleteReply = yield dwn.processMessage(author.did, recordsDelete.message);
622
- expect(deleteReply.status.code).to.equal(202);
623
- const { events } = yield eventLog.getEvents(author.did);
624
- expect(events.length).to.equal(2);
619
+ expect(deleteReply.status.code).toBe(202);
620
+ const events = yield stateIndex.getLeaves(author.did, []);
621
+ expect(events.length).toBe(2);
625
622
  const deletedMessageCid = yield Message.getCid(newWrite.message);
626
623
  for (const messageCid of events) {
627
624
  if (messageCid === deletedMessageCid) {
628
- expect.fail(`${messageCid} should not exist`);
625
+ throw new Error(`${messageCid} should not exist`);
629
626
  }
630
627
  }
631
628
  }));
@@ -643,7 +640,7 @@ export function testRecordsDeleteHandler() {
643
640
  const resumableTaskManagerStub = sinon.createStubInstance(ResumableTaskManager);
644
641
  const recordsDeleteHandler = new RecordsDeleteHandler(didResolver, messageStoreStub, resumableTaskManagerStub);
645
642
  const reply = yield recordsDeleteHandler.handle({ tenant, message });
646
- expect(reply.status.code).to.equal(401);
643
+ expect(reply.status.code).toBe(401);
647
644
  }));
648
645
  it('should return 400 if fail parsing the message', () => __awaiter(this, void 0, void 0, function* () {
649
646
  const { author, message } = yield TestDataGenerator.generateRecordsDelete();
@@ -655,7 +652,7 @@ export function testRecordsDeleteHandler() {
655
652
  // stub the `parse()` function to throw an error
656
653
  sinon.stub(RecordsDelete, 'parse').throws('anyError');
657
654
  const reply = yield recordsDeleteHandler.handle({ tenant, message });
658
- expect(reply.status.code).to.equal(400);
655
+ expect(reply.status.code).toBe(400);
659
656
  }));
660
657
  });
661
658
  }