@enbox/dwn-sdk-js 0.0.2 → 0.0.4

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,12 +7,10 @@ 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';
11
- import emailProtocolDefinition from '../vectors/protocol-definitions/email.json' assert { type: 'json' };
12
- import messageProtocolDefinition from '../vectors/protocol-definitions/message.json' assert { type: 'json' };
10
+ import emailProtocolDefinition from '../vectors/protocol-definitions/email.json' with { type: 'json' };
11
+ import messageProtocolDefinition from '../vectors/protocol-definitions/message.json' with { type: 'json' };
13
12
  import sinon from 'sinon';
14
- import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' assert { type: 'json' };
15
- import chai, { expect } from 'chai';
13
+ import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' with { type: 'json' };
16
14
  import { base64url } from 'multiformats/bases/base64';
17
15
  import { DataStream } from '../../src/utils/data-stream.js';
18
16
  import { Dwn } from '../../src/dwn.js';
@@ -25,29 +23,29 @@ import { TestDataGenerator } from '../utils/test-data-generator.js';
25
23
  import { TestEventStream } from '../test-event-stream.js';
26
24
  import { TestStores } from '../test-stores.js';
27
25
  import { Time } from '../../src/utils/time.js';
26
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
28
27
  import { DidKey, UniversalResolver } from '@enbox/dids';
29
28
  import { DwnInterfaceName, DwnMethodName, Encoder, Message, PermissionsProtocol, RecordsDelete, RecordsQuery, RecordsRead, RecordsSubscribe } from '../../src/index.js';
30
- chai.use(chaiAsPromised);
31
29
  export function testAuthorDelegatedGrant() {
32
- describe('author delegated grant', () => __awaiter(this, void 0, void 0, function* () {
30
+ describe('author delegated grant', () => {
33
31
  let didResolver;
34
32
  let messageStore;
35
33
  let dataStore;
36
34
  let resumableTaskStore;
37
- let eventLog;
35
+ let stateIndex;
38
36
  let eventStream;
39
37
  let dwn;
40
38
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
41
39
  // so that different test suites can reuse the same backend store for testing
42
- before(() => __awaiter(this, void 0, void 0, function* () {
40
+ beforeAll(() => __awaiter(this, void 0, void 0, function* () {
43
41
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
44
42
  const stores = TestStores.get();
45
43
  messageStore = stores.messageStore;
46
44
  dataStore = stores.dataStore;
47
45
  resumableTaskStore = stores.resumableTaskStore;
48
- eventLog = stores.eventLog;
46
+ stateIndex = stores.stateIndex;
49
47
  eventStream = TestEventStream.get();
50
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
48
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
51
49
  }));
52
50
  beforeEach(() => __awaiter(this, void 0, void 0, function* () {
53
51
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
@@ -55,9 +53,9 @@ export function testAuthorDelegatedGrant() {
55
53
  yield messageStore.clear();
56
54
  yield dataStore.clear();
57
55
  yield resumableTaskStore.clear();
58
- yield eventLog.clear();
56
+ yield stateIndex.clear();
59
57
  }));
60
- after(() => __awaiter(this, void 0, void 0, function* () {
58
+ afterAll(() => __awaiter(this, void 0, void 0, function* () {
61
59
  yield dwn.close();
62
60
  }));
63
61
  describe('ProtocolsConfigure', () => {
@@ -85,22 +83,22 @@ export function testAuthorDelegatedGrant() {
85
83
  });
86
84
  // Bob should be able to configure a protocol on behalf of alice
87
85
  const protocolConfigureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
88
- expect(protocolConfigureReply.status.code).to.equal(202);
86
+ expect(protocolConfigureReply.status.code).toBe(202);
89
87
  // verify the protocol configure message was processed
90
88
  const protocolsQuery = yield TestDataGenerator.generateProtocolsQuery({
91
89
  author: alice,
92
90
  filter: { protocol: emailProtocolDefinition.protocol }
93
91
  });
94
92
  const { status, entries } = yield dwn.processMessage(alice.did, protocolsQuery.message);
95
- expect(status.code).to.equal(200);
96
- expect(entries === null || entries === void 0 ? void 0 : entries.length).to.equal(1);
93
+ expect(status.code).toBe(200);
94
+ expect(entries === null || entries === void 0 ? void 0 : entries.length).toBe(1);
97
95
  const fetchedProtocolConfigure = entries[0];
98
- expect(fetchedProtocolConfigure.descriptor.definition).to.deep.equal(emailProtocolDefinition);
96
+ expect(fetchedProtocolConfigure.descriptor.definition).toEqual(emailProtocolDefinition);
99
97
  // author should be alice
100
98
  const author = Message.getAuthor(fetchedProtocolConfigure);
101
- expect(author).to.equal(alice.did);
99
+ expect(author).toBe(alice.did);
102
100
  const signer = Message.getSigner(fetchedProtocolConfigure);
103
- expect(signer).to.equal(bob.did);
101
+ expect(signer).toBe(bob.did);
104
102
  }));
105
103
  it('should allow author-delegated grant to configure a specific protocol', () => __awaiter(this, void 0, void 0, function* () {
106
104
  const alice = yield TestDataGenerator.generateDidKeyPersona();
@@ -127,22 +125,22 @@ export function testAuthorDelegatedGrant() {
127
125
  });
128
126
  // Bob should be able to configure a protocol on behalf of alice
129
127
  const protocolConfigureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
130
- expect(protocolConfigureReply.status.code).to.equal(202);
128
+ expect(protocolConfigureReply.status.code).toBe(202);
131
129
  // verify the protocol configure message was processed
132
130
  const protocolsQuery = yield TestDataGenerator.generateProtocolsQuery({
133
131
  author: alice,
134
132
  filter: { protocol: emailProtocolDefinition.protocol }
135
133
  });
136
134
  const { status, entries } = yield dwn.processMessage(alice.did, protocolsQuery.message);
137
- expect(status.code).to.equal(200);
138
- expect(entries === null || entries === void 0 ? void 0 : entries.length).to.equal(1);
135
+ expect(status.code).toBe(200);
136
+ expect(entries === null || entries === void 0 ? void 0 : entries.length).toBe(1);
139
137
  const fetchedProtocolConfigure = entries[0];
140
- expect(fetchedProtocolConfigure.descriptor.definition).to.deep.equal(emailProtocolDefinition);
138
+ expect(fetchedProtocolConfigure.descriptor.definition).toEqual(emailProtocolDefinition);
141
139
  // author should be alice
142
140
  const author = Message.getAuthor(fetchedProtocolConfigure);
143
- expect(author).to.equal(alice.did);
141
+ expect(author).toBe(alice.did);
144
142
  const signer = Message.getSigner(fetchedProtocolConfigure);
145
- expect(signer).to.equal(bob.did);
143
+ expect(signer).toBe(bob.did);
146
144
  // verify that bob cannot configure a different protocol
147
145
  const otherProtocolDefinition = Object.assign(Object.assign({}, emailProtocolDefinition), { protocol: 'https://example.com/protocol/otherProtocol' });
148
146
  const otherProtocolConfigure = yield TestDataGenerator.generateProtocolsConfigure({
@@ -151,11 +149,11 @@ export function testAuthorDelegatedGrant() {
151
149
  protocolDefinition: otherProtocolDefinition,
152
150
  });
153
151
  const otherProtocolConfigureReply = yield dwn.processMessage(alice.did, otherProtocolConfigure.message);
154
- expect(otherProtocolConfigureReply.status.code).to.equal(401);
155
- expect(otherProtocolConfigureReply.status.detail).to.contain(DwnErrorCode.ProtocolsGrantAuthorizationScopeProtocolMismatch);
152
+ expect(otherProtocolConfigureReply.status.code).toBe(401);
153
+ expect(otherProtocolConfigureReply.status.detail).toContain(DwnErrorCode.ProtocolsGrantAuthorizationScopeProtocolMismatch);
156
154
  }));
157
155
  });
158
- describe('RecordsWrite.parse()', () => __awaiter(this, void 0, void 0, function* () {
156
+ describe('RecordsWrite.parse()', () => {
159
157
  it('should throw if a message invokes a author-delegated grant (ID) but the author-delegated grant is not given', () => __awaiter(this, void 0, void 0, function* () {
160
158
  const alice = yield TestDataGenerator.generatePersona();
161
159
  const bob = yield TestDataGenerator.generatePersona();
@@ -182,7 +180,7 @@ export function testAuthorDelegatedGrant() {
182
180
  });
183
181
  delete recordsWrite.message.authorization.authorDelegatedGrant; // intentionally remove `authorDelegatedGrant`
184
182
  const parsePromise = RecordsWrite.parse(recordsWrite.message);
185
- yield expect(parsePromise).to.be.rejectedWith(DwnErrorCode.RecordsAuthorDelegatedGrantAndIdExistenceMismatch);
183
+ yield expect(parsePromise).rejects.toThrow(DwnErrorCode.RecordsAuthorDelegatedGrantAndIdExistenceMismatch);
186
184
  }));
187
185
  it('should throw if a message includes an author-delegated grant but does not reference it in author signature', () => __awaiter(this, void 0, void 0, function* () {
188
186
  const alice = yield TestDataGenerator.generatePersona();
@@ -213,9 +211,9 @@ export function testAuthorDelegatedGrant() {
213
211
  delete authorSignaturePayloadCopy.delegatedGrantId; // intentionally remove `delegatedGrantId` in author signature
214
212
  recordsWrite.message.authorization.signature.payload = Encoder.stringToBase64Url(JSON.stringify(authorSignaturePayloadCopy));
215
213
  const parsePromise = RecordsWrite.parse(recordsWrite.message);
216
- yield expect(parsePromise).to.be.rejectedWith(DwnErrorCode.RecordsAuthorDelegatedGrantAndIdExistenceMismatch);
214
+ yield expect(parsePromise).rejects.toThrow(DwnErrorCode.RecordsAuthorDelegatedGrantAndIdExistenceMismatch);
217
215
  }));
218
- }));
216
+ });
219
217
  it('should only allow correct entity invoking an author-delegated grant to write', () => __awaiter(this, void 0, void 0, function* () {
220
218
  var _a, _b;
221
219
  // scenario:
@@ -236,7 +234,7 @@ export function testAuthorDelegatedGrant() {
236
234
  protocolDefinition
237
235
  });
238
236
  const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
239
- expect(protocolConfigureReply.status.code).to.equal(202);
237
+ expect(protocolConfigureReply.status.code).toBe(202);
240
238
  // Alice creates a delegated grant for device X and device Y
241
239
  const scope = {
242
240
  interface: DwnInterfaceName.Records,
@@ -270,19 +268,19 @@ export function testAuthorDelegatedGrant() {
270
268
  data: deviceXData
271
269
  });
272
270
  const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, { dataStream: deviceXDataStream });
273
- expect(deviceXWriteReply.status.code).to.equal(202);
271
+ expect(deviceXWriteReply.status.code).toBe(202);
274
272
  // verify the message by device X got written to Bob's DWN, AND Alice is the logical author
275
273
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
276
274
  author: bob,
277
275
  filter: { protocol }
278
276
  });
279
277
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
280
- expect(bobRecordsQueryReply.status.code).to.equal(200);
281
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
278
+ expect(bobRecordsQueryReply.status.code).toBe(200);
279
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
282
280
  const fetchedDeviceXWriteEntry = bobRecordsQueryReply.entries[0];
283
- expect(fetchedDeviceXWriteEntry.encodedData).to.equal(base64url.baseEncode(deviceXData));
281
+ expect(fetchedDeviceXWriteEntry.encodedData).toBe(base64url.baseEncode(deviceXData));
284
282
  const fetchedDeviceXWrite = yield RecordsWrite.parse(fetchedDeviceXWriteEntry);
285
- expect(fetchedDeviceXWrite.author).to.equal(alice.did);
283
+ expect(fetchedDeviceXWrite.author).toBe(alice.did);
286
284
  // generate a new message by device Y updating the existing record device X created, and write to Bob's DWN
287
285
  const deviceYData = new TextEncoder().encode('message from device Y');
288
286
  const deviceYDataStream = DataStream.fromBytes(deviceYData);
@@ -293,15 +291,15 @@ export function testAuthorDelegatedGrant() {
293
291
  delegatedGrant: deviceYGrant.dataEncodedMessage,
294
292
  });
295
293
  const deviceYWriteReply = yield dwn.processMessage(bob.did, messageByDeviceY.message, { dataStream: deviceYDataStream });
296
- expect(deviceYWriteReply.status.code).to.equal(202);
294
+ expect(deviceYWriteReply.status.code).toBe(202);
297
295
  // verify the message by device Y got written to Bob's DWN, AND Alice is the logical author
298
296
  const bobRecordsQueryReply2 = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
299
- expect(bobRecordsQueryReply2.status.code).to.equal(200);
300
- expect((_b = bobRecordsQueryReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(1);
297
+ expect(bobRecordsQueryReply2.status.code).toBe(200);
298
+ expect((_b = bobRecordsQueryReply2.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(1);
301
299
  const fetchedDeviceYWriteEntry = bobRecordsQueryReply2.entries[0];
302
- expect(fetchedDeviceYWriteEntry.encodedData).to.equal(base64url.baseEncode(deviceYData));
300
+ expect(fetchedDeviceYWriteEntry.encodedData).toBe(base64url.baseEncode(deviceYData));
303
301
  const fetchedDeviceYWrite = yield RecordsWrite.parse(fetchedDeviceYWriteEntry);
304
- expect(fetchedDeviceYWrite.author).to.equal(alice.did);
302
+ expect(fetchedDeviceYWrite.author).toBe(alice.did);
305
303
  // Verify that Carol cannot write a chat message as Alice by invoking the Device X's grant
306
304
  const messageByCarolAsAlice = new TextEncoder().encode('Message from Carol pretending to be Alice');
307
305
  const writeByCarolAsAlice = yield RecordsWrite.create({
@@ -314,8 +312,8 @@ export function testAuthorDelegatedGrant() {
314
312
  data: messageByCarolAsAlice
315
313
  });
316
314
  const carolWriteReply = yield dwn.processMessage(carol.did, writeByCarolAsAlice.message, { dataStream: DataStream.fromBytes(messageByCarolAsAlice) });
317
- expect(carolWriteReply.status.code).to.equal(400);
318
- expect(carolWriteReply.status.detail).to.contain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
315
+ expect(carolWriteReply.status.code).toBe(400);
316
+ expect(carolWriteReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
319
317
  }));
320
318
  it('should only allow correct entity invoking an author-delegated grant to read and query ', () => __awaiter(this, void 0, void 0, function* () {
321
319
  var _a, _b, _c, _d;
@@ -336,7 +334,7 @@ export function testAuthorDelegatedGrant() {
336
334
  protocolDefinition
337
335
  });
338
336
  const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
339
- expect(protocolsConfigureReply.status.code).to.equal(202);
337
+ expect(protocolsConfigureReply.status.code).toBe(202);
340
338
  // Bob starts a chat thread
341
339
  const threadRecord = yield TestDataGenerator.generateRecordsWrite({
342
340
  author: bob,
@@ -344,7 +342,7 @@ export function testAuthorDelegatedGrant() {
344
342
  protocolPath: 'thread',
345
343
  });
346
344
  const threadRoleReply = yield dwn.processMessage(bob.did, threadRecord.message, { dataStream: threadRecord.dataStream });
347
- expect(threadRoleReply.status.code).to.equal(202);
345
+ expect(threadRoleReply.status.code).toBe(202);
348
346
  // Bob adds Alice as a participant in the thread
349
347
  const participantRoleRecord = yield TestDataGenerator.generateRecordsWrite({
350
348
  author: bob,
@@ -355,7 +353,7 @@ export function testAuthorDelegatedGrant() {
355
353
  data: new TextEncoder().encode('Alice is my friend'),
356
354
  });
357
355
  const participantRoleReply = yield dwn.processMessage(bob.did, participantRoleRecord.message, { dataStream: participantRoleRecord.dataStream });
358
- expect(participantRoleReply.status.code).to.equal(202);
356
+ expect(participantRoleReply.status.code).toBe(202);
359
357
  // Bob writes a chat message in the thread
360
358
  const chatRecord = yield TestDataGenerator.generateRecordsWrite({
361
359
  author: bob,
@@ -364,7 +362,7 @@ export function testAuthorDelegatedGrant() {
364
362
  parentContextId: threadRecord.message.contextId,
365
363
  });
366
364
  const chatRecordReply = yield dwn.processMessage(bob.did, chatRecord.message, { dataStream: chatRecord.dataStream });
367
- expect(chatRecordReply.status.code).to.equal(202);
365
+ expect(chatRecordReply.status.code).toBe(202);
368
366
  // Alice creates a delegated query grant for device X to act as Alice.
369
367
  const queryGrantForDeviceX = yield PermissionsProtocol.createGrant({
370
368
  delegated: true, // this is a delegated grant
@@ -395,8 +393,8 @@ export function testAuthorDelegatedGrant() {
395
393
  filter: { protocol }
396
394
  });
397
395
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
398
- expect(bobRecordsQueryReply.status.code).to.equal(200);
399
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(3);
396
+ expect(bobRecordsQueryReply.status.code).toBe(200);
397
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(3);
400
398
  // sanity verify Alice herself is able to query for the chat message from Bob's DWN
401
399
  const recordsQueryByAlice = yield RecordsQuery.create({
402
400
  signer: Jws.createSigner(alice),
@@ -408,8 +406,8 @@ export function testAuthorDelegatedGrant() {
408
406
  }
409
407
  });
410
408
  const aliceRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByAlice.message);
411
- expect(aliceRecordsQueryReply.status.code).to.equal(200);
412
- expect((_b = aliceRecordsQueryReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(1);
409
+ expect(aliceRecordsQueryReply.status.code).toBe(200);
410
+ expect((_b = aliceRecordsQueryReply.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(1);
413
411
  // verify device X is able to query for the chat message from Bob's DWN
414
412
  const recordsQueryByDeviceX = yield RecordsQuery.create({
415
413
  signer: Jws.createSigner(deviceX),
@@ -422,8 +420,8 @@ export function testAuthorDelegatedGrant() {
422
420
  }
423
421
  });
424
422
  const deviceXRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByDeviceX.message);
425
- expect(deviceXRecordsQueryReply.status.code).to.equal(200);
426
- expect((_c = deviceXRecordsQueryReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(1);
423
+ expect(deviceXRecordsQueryReply.status.code).toBe(200);
424
+ expect((_c = deviceXRecordsQueryReply.entries) === null || _c === void 0 ? void 0 : _c.length).toBe(1);
427
425
  // verify device X is able to read the chat message from Bob's DWN
428
426
  const recordsReadByDeviceX = yield RecordsRead.create({
429
427
  signer: Jws.createSigner(deviceX),
@@ -434,8 +432,8 @@ export function testAuthorDelegatedGrant() {
434
432
  }
435
433
  });
436
434
  const deviceXRecordsReadReply = yield dwn.processMessage(bob.did, recordsReadByDeviceX.message);
437
- expect(deviceXRecordsReadReply.status.code).to.equal(200);
438
- expect((_d = deviceXRecordsReadReply.entry.recordsWrite) === null || _d === void 0 ? void 0 : _d.recordId).to.equal(chatRecord.message.recordId);
435
+ expect(deviceXRecordsReadReply.status.code).toBe(200);
436
+ expect((_d = deviceXRecordsReadReply.entry.recordsWrite) === null || _d === void 0 ? void 0 : _d.recordId).toBe(chatRecord.message.recordId);
439
437
  // Verify that Carol cannot query as Alice by invoking the delegated grant granted to Device X
440
438
  const recordsQueryByCarol = yield RecordsQuery.create({
441
439
  signer: Jws.createSigner(carol),
@@ -448,8 +446,8 @@ export function testAuthorDelegatedGrant() {
448
446
  }
449
447
  });
450
448
  const recordsQueryByCarolReply = yield dwn.processMessage(bob.did, recordsQueryByCarol.message);
451
- expect(recordsQueryByCarolReply.status.code).to.equal(400);
452
- expect(recordsQueryByCarolReply.status.detail).to.contain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
449
+ expect(recordsQueryByCarolReply.status.code).toBe(400);
450
+ expect(recordsQueryByCarolReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
453
451
  // Verify that Carol cannot read as Alice by invoking the delegated grant granted to Device X
454
452
  const recordsReadByCarol = yield RecordsRead.create({
455
453
  signer: Jws.createSigner(carol),
@@ -460,8 +458,8 @@ export function testAuthorDelegatedGrant() {
460
458
  }
461
459
  });
462
460
  const recordsReadByCarolReply = yield dwn.processMessage(bob.did, recordsReadByCarol.message);
463
- expect(recordsReadByCarolReply.status.code).to.equal(400);
464
- expect(recordsQueryByCarolReply.status.detail).to.contain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
461
+ expect(recordsReadByCarolReply.status.code).toBe(400);
462
+ expect(recordsQueryByCarolReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
465
463
  }));
466
464
  it('should only allow correct entity invoking an author-delegated grant to subscribe', () => __awaiter(this, void 0, void 0, function* () {
467
465
  // scenario:
@@ -486,7 +484,7 @@ export function testAuthorDelegatedGrant() {
486
484
  protocolDefinition
487
485
  });
488
486
  const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
489
- expect(protocolsConfigureReply.status.code).to.equal(202);
487
+ expect(protocolsConfigureReply.status.code).toBe(202);
490
488
  // Bob starts a chat thread
491
489
  const threadRecord = yield TestDataGenerator.generateRecordsWrite({
492
490
  author: bob,
@@ -494,7 +492,7 @@ export function testAuthorDelegatedGrant() {
494
492
  protocolPath: 'thread',
495
493
  });
496
494
  const threadRoleReply = yield dwn.processMessage(bob.did, threadRecord.message, { dataStream: threadRecord.dataStream });
497
- expect(threadRoleReply.status.code).to.equal(202);
495
+ expect(threadRoleReply.status.code).toBe(202);
498
496
  // Bob adds Alice as a participant in the thread
499
497
  const participantRoleRecord = yield TestDataGenerator.generateRecordsWrite({
500
498
  author: bob,
@@ -505,7 +503,7 @@ export function testAuthorDelegatedGrant() {
505
503
  data: new TextEncoder().encode('Alice is my friend'),
506
504
  });
507
505
  const participantRoleReply = yield dwn.processMessage(bob.did, participantRoleRecord.message, { dataStream: participantRoleRecord.dataStream });
508
- expect(participantRoleReply.status.code).to.equal(202);
506
+ expect(participantRoleReply.status.code).toBe(202);
509
507
  // Alice creates a delegated subscribe grant for device X to act as Alice.
510
508
  const subscribeGrantForDeviceX = yield PermissionsProtocol.createGrant({
511
509
  delegated: true, // this is a delegated grant
@@ -542,7 +540,7 @@ export function testAuthorDelegatedGrant() {
542
540
  }
543
541
  });
544
542
  const recordsSubscribeByDeviceXWithoutGrantReply = yield dwn.processMessage(bob.did, recordsSubscribeByDeviceXWithoutGrant.message);
545
- expect(recordsSubscribeByDeviceXWithoutGrantReply.status.code).to.equal(401, 'device X without grant subscribe');
543
+ expect(recordsSubscribeByDeviceXWithoutGrantReply.status.code).toBe(401, 'device X without grant subscribe');
546
544
  // control: verify that Carol cannot subscribe as Alice by invoking the delegated grant granted to Device X
547
545
  const recordsSubscribeByCarol = yield RecordsSubscribe.create({
548
546
  signer: Jws.createSigner(carol),
@@ -555,8 +553,8 @@ export function testAuthorDelegatedGrant() {
555
553
  }
556
554
  });
557
555
  const recordsSubscribeByCarolReply = yield dwn.processMessage(bob.did, recordsSubscribeByCarol.message);
558
- expect(recordsSubscribeByCarolReply.status.code).to.equal(400, 'carol subscribe');
559
- expect(recordsSubscribeByCarolReply.status.detail).to.contain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
556
+ expect(recordsSubscribeByCarolReply.status.code).toBe(400, 'carol subscribe');
557
+ expect(recordsSubscribeByCarolReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch);
560
558
  // verify device X is able to subscribe the chat message from Bob's DWN using the delegated grant
561
559
  const recordsSubscribeByDeviceX = yield RecordsSubscribe.create({
562
560
  signer: Jws.createSigner(deviceX),
@@ -571,7 +569,7 @@ export function testAuthorDelegatedGrant() {
571
569
  const recordsSubscribeByDeviceXReply = yield dwn.processMessage(bob.did, recordsSubscribeByDeviceX.message, {
572
570
  subscriptionHandler: captureChatRecords
573
571
  });
574
- expect(recordsSubscribeByDeviceXReply.status.code).to.equal(200, 'subscribe');
572
+ expect(recordsSubscribeByDeviceXReply.status.code).toBe(200, 'subscribe');
575
573
  // Bob writes chat messages in the thread
576
574
  const chatRecord1 = yield TestDataGenerator.generateRecordsWrite({
577
575
  author: bob,
@@ -580,7 +578,7 @@ export function testAuthorDelegatedGrant() {
580
578
  parentContextId: threadRecord.message.contextId,
581
579
  });
582
580
  const chatRecord1Reply = yield dwn.processMessage(bob.did, chatRecord1.message, { dataStream: chatRecord1.dataStream });
583
- expect(chatRecord1Reply.status.code).to.equal(202);
581
+ expect(chatRecord1Reply.status.code).toBe(202);
584
582
  const chatRecord2 = yield TestDataGenerator.generateRecordsWrite({
585
583
  author: bob,
586
584
  protocol: protocolDefinition.protocol,
@@ -588,10 +586,10 @@ export function testAuthorDelegatedGrant() {
588
586
  parentContextId: threadRecord.message.contextId,
589
587
  });
590
588
  const chatRecord2Reply = yield dwn.processMessage(bob.did, chatRecord2.message, { dataStream: chatRecord2.dataStream });
591
- expect(chatRecord2Reply.status.code).to.equal(202);
589
+ expect(chatRecord2Reply.status.code).toBe(202);
592
590
  yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
593
- expect(subscriptionChatRecords.size).to.equal(2);
594
- expect([...subscriptionChatRecords]).to.have.members([chatRecord1.message.recordId, chatRecord2.message.recordId]);
591
+ expect(subscriptionChatRecords.size).toBe(2);
592
+ expect([...subscriptionChatRecords]).toEqual(expect.arrayContaining([chatRecord1.message.recordId, chatRecord2.message.recordId]));
595
593
  }));
596
594
  yield ((_a = recordsSubscribeByDeviceXReply.subscription) === null || _a === void 0 ? void 0 : _a.close());
597
595
  }));
@@ -615,7 +613,7 @@ export function testAuthorDelegatedGrant() {
615
613
  protocolDefinition
616
614
  });
617
615
  const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
618
- expect(protocolsConfigureReply.status.code).to.equal(202);
616
+ expect(protocolsConfigureReply.status.code).toBe(202);
619
617
  // Bob adds Alice as an admin
620
618
  const globalAdminRecord = yield TestDataGenerator.generateRecordsWrite({
621
619
  author: bob,
@@ -625,7 +623,7 @@ export function testAuthorDelegatedGrant() {
625
623
  data: new TextEncoder().encode('I trust Alice to manage my chat thread'),
626
624
  });
627
625
  const globalAdminRecordReply = yield dwn.processMessage(bob.did, globalAdminRecord.message, { dataStream: globalAdminRecord.dataStream });
628
- expect(globalAdminRecordReply.status.code).to.equal(202);
626
+ expect(globalAdminRecordReply.status.code).toBe(202);
629
627
  // Bob starts a chat thread
630
628
  const threadRecord = yield TestDataGenerator.generateRecordsWrite({
631
629
  author: bob,
@@ -633,7 +631,7 @@ export function testAuthorDelegatedGrant() {
633
631
  protocolPath: 'thread',
634
632
  });
635
633
  const threadRoleReply = yield dwn.processMessage(bob.did, threadRecord.message, { dataStream: threadRecord.dataStream });
636
- expect(threadRoleReply.status.code).to.equal(202);
634
+ expect(threadRoleReply.status.code).toBe(202);
637
635
  // Bob adds Carol as a participant in the thread
638
636
  const participantRoleRecord = yield TestDataGenerator.generateRecordsWrite({
639
637
  author: bob,
@@ -643,7 +641,7 @@ export function testAuthorDelegatedGrant() {
643
641
  parentContextId: threadRecord.message.contextId
644
642
  });
645
643
  const participantRoleReply = yield dwn.processMessage(bob.did, participantRoleRecord.message, { dataStream: participantRoleRecord.dataStream });
646
- expect(participantRoleReply.status.code).to.equal(202);
644
+ expect(participantRoleReply.status.code).toBe(202);
647
645
  // Carol writes a chat message in the thread
648
646
  const chatRecord = yield TestDataGenerator.generateRecordsWrite({
649
647
  author: carol,
@@ -654,7 +652,7 @@ export function testAuthorDelegatedGrant() {
654
652
  data: new TextEncoder().encode('A rude message'),
655
653
  });
656
654
  const chatRecordReply = yield dwn.processMessage(bob.did, chatRecord.message, { dataStream: chatRecord.dataStream });
657
- expect(chatRecordReply.status.code).to.equal(202);
655
+ expect(chatRecordReply.status.code).toBe(202);
658
656
  // Alice creates a delegated delete grant for device X to act as Alice.
659
657
  const deleteGrantForDeviceX = yield PermissionsProtocol.createGrant({
660
658
  delegated: true, // this is a delegated grant
@@ -675,15 +673,15 @@ export function testAuthorDelegatedGrant() {
675
673
  recordId: chatRecord.message.recordId
676
674
  });
677
675
  const carolRecordsDeleteReply = yield dwn.processMessage(bob.did, recordsDeleteByCarol.message);
678
- expect(carolRecordsDeleteReply.status.code).to.equal(400);
676
+ expect(carolRecordsDeleteReply.status.code).toBe(400);
679
677
  // sanity verify the chat message is still in Bob's DWN
680
678
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
681
679
  author: bob,
682
680
  filter: { protocolPath: 'thread/chat' }
683
681
  });
684
682
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
685
- expect(bobRecordsQueryReply.status.code).to.equal(200);
686
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
683
+ expect(bobRecordsQueryReply.status.code).toBe(200);
684
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
687
685
  // verify device X is able to delete Carol's chat message from Bob's DWN
688
686
  const recordsDeleteByDeviceX = yield RecordsDelete.create({
689
687
  signer: Jws.createSigner(deviceX),
@@ -692,11 +690,11 @@ export function testAuthorDelegatedGrant() {
692
690
  recordId: chatRecord.message.recordId
693
691
  });
694
692
  const deviceXRecordsDeleteReply = yield dwn.processMessage(bob.did, recordsDeleteByDeviceX.message);
695
- expect(deviceXRecordsDeleteReply.status.code).to.equal(202);
693
+ expect(deviceXRecordsDeleteReply.status.code).toBe(202);
696
694
  // sanity verify the chat message is no longer queryable from Bob's DWN
697
695
  const bobRecordsQueryReply2 = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
698
- expect(bobRecordsQueryReply2.status.code).to.equal(200);
699
- expect((_b = bobRecordsQueryReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
696
+ expect(bobRecordsQueryReply2.status.code).toBe(200);
697
+ expect((_b = bobRecordsQueryReply2.entries) === null || _b === void 0 ? void 0 : _b.length).toBe(0);
700
698
  }));
701
699
  it('should not allow entity using a non-delegated grant as an author-delegated grant to invoke write', () => __awaiter(this, void 0, void 0, function* () {
702
700
  var _a;
@@ -716,7 +714,7 @@ export function testAuthorDelegatedGrant() {
716
714
  protocolDefinition
717
715
  });
718
716
  const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
719
- expect(protocolConfigureReply.status.code).to.equal(202);
717
+ expect(protocolConfigureReply.status.code).toBe(202);
720
718
  // 2. Alice creates a non-delegated grant for device X
721
719
  const scope = {
722
720
  interface: DwnInterfaceName.Records,
@@ -743,22 +741,170 @@ export function testAuthorDelegatedGrant() {
743
741
  data: deviceXData
744
742
  });
745
743
  const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, { dataStream: deviceXDataStream });
746
- expect(deviceXWriteReply.status.code).to.equal(400);
747
- expect(deviceXWriteReply.status.detail).to.contain(DwnErrorCode.RecordsAuthorDelegatedGrantNotADelegatedGrant);
744
+ expect(deviceXWriteReply.status.code).toBe(400);
745
+ expect(deviceXWriteReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantNotADelegatedGrant);
748
746
  // 4. Sanity verify the message by device X did not get written to Bob's DWN
749
747
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
750
748
  author: bob,
751
749
  filter: { protocol }
752
750
  });
753
751
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
754
- expect(bobRecordsQueryReply.status.code).to.equal(200);
755
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
752
+ expect(bobRecordsQueryReply.status.code).toBe(200);
753
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
756
754
  }));
757
- xit('should not allow entity using a non-delegated grant as an author-delegated grant to invoke read', () => __awaiter(this, void 0, void 0, function* () {
755
+ it('should not allow entity using a non-delegated grant as an author-delegated grant to invoke read', () => __awaiter(this, void 0, void 0, function* () {
756
+ // scenario:
757
+ // 1. Bob has the message protocol installed
758
+ // 2. Alice writes a message to Bob's DWN
759
+ // 3. Alice creates a non-delegated read grant for device X
760
+ // 4. Verify that device X cannot read the message from Bob's DWN as Alice using the non-delegated grant
761
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
762
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
763
+ const deviceX = yield TestDataGenerator.generateDidKeyPersona();
764
+ // 1. Bob has the message protocol installed
765
+ const protocolDefinition = messageProtocolDefinition;
766
+ const protocol = protocolDefinition.protocol;
767
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
768
+ author: bob,
769
+ protocolDefinition
770
+ });
771
+ const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
772
+ expect(protocolConfigureReply.status.code).toBe(202);
773
+ // 2. Alice writes a message to Bob's DWN
774
+ const messageByAlice = yield TestDataGenerator.generateRecordsWrite({
775
+ author: alice,
776
+ protocol,
777
+ protocolPath: 'message',
778
+ schema: protocolDefinition.types.message.schema,
779
+ dataFormat: protocolDefinition.types.message.dataFormats[0],
780
+ });
781
+ const aliceWriteReply = yield dwn.processMessage(bob.did, messageByAlice.message, { dataStream: messageByAlice.dataStream });
782
+ expect(aliceWriteReply.status.code).toBe(202);
783
+ // 3. Alice creates a non-delegated read grant for device X
784
+ const deviceXGrant = yield PermissionsProtocol.createGrant({
785
+ // delegated : true, // intentionally commented out to show that this is not a delegated grant
786
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
787
+ grantedTo: deviceX.did,
788
+ scope: {
789
+ interface: DwnInterfaceName.Records,
790
+ method: DwnMethodName.Read,
791
+ protocol
792
+ },
793
+ signer: Jws.createSigner(alice)
794
+ });
795
+ // 4. Verify that device X cannot read the message from Bob's DWN as Alice using the non-delegated grant
796
+ const recordsReadByDeviceX = yield RecordsRead.create({
797
+ signer: Jws.createSigner(deviceX),
798
+ delegatedGrant: deviceXGrant.dataEncodedMessage,
799
+ filter: {
800
+ recordId: messageByAlice.message.recordId
801
+ }
802
+ });
803
+ const deviceXReadReply = yield dwn.processMessage(bob.did, recordsReadByDeviceX.message);
804
+ expect(deviceXReadReply.status.code).toBe(400);
805
+ expect(deviceXReadReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantNotADelegatedGrant);
758
806
  }));
759
- xit('should not allow entity using a non-delegated grant as an author-delegated grant to invoke query', () => __awaiter(this, void 0, void 0, function* () {
807
+ it('should not allow entity using a non-delegated grant as an author-delegated grant to invoke query', () => __awaiter(this, void 0, void 0, function* () {
808
+ // scenario:
809
+ // 1. Bob has the message protocol installed
810
+ // 2. Alice creates a non-delegated query grant for device X
811
+ // 3. Verify that device X cannot query Bob's DWN as Alice using the non-delegated grant
812
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
813
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
814
+ const deviceX = yield TestDataGenerator.generateDidKeyPersona();
815
+ // 1. Bob has the message protocol installed
816
+ const protocolDefinition = messageProtocolDefinition;
817
+ const protocol = protocolDefinition.protocol;
818
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
819
+ author: bob,
820
+ protocolDefinition
821
+ });
822
+ const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
823
+ expect(protocolConfigureReply.status.code).toBe(202);
824
+ // 2. Alice creates a non-delegated query grant for device X
825
+ const deviceXGrant = yield PermissionsProtocol.createGrant({
826
+ // delegated : true, // intentionally commented out to show that this is not a delegated grant
827
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
828
+ grantedTo: deviceX.did,
829
+ scope: {
830
+ interface: DwnInterfaceName.Records,
831
+ method: DwnMethodName.Query,
832
+ protocol
833
+ },
834
+ signer: Jws.createSigner(alice)
835
+ });
836
+ // 3. Verify that device X cannot query Bob's DWN as Alice using the non-delegated grant
837
+ const recordsQueryByDeviceX = yield RecordsQuery.create({
838
+ signer: Jws.createSigner(deviceX),
839
+ delegatedGrant: deviceXGrant.dataEncodedMessage,
840
+ filter: {
841
+ protocol,
842
+ protocolPath: 'message'
843
+ }
844
+ });
845
+ const deviceXQueryReply = yield dwn.processMessage(bob.did, recordsQueryByDeviceX.message);
846
+ expect(deviceXQueryReply.status.code).toBe(400);
847
+ expect(deviceXQueryReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantNotADelegatedGrant);
760
848
  }));
761
- xit('should not allow entity using a non-delegated grant as an author-delegated grant to invoke delete', () => __awaiter(this, void 0, void 0, function* () {
849
+ it('should not allow entity using a non-delegated grant as an author-delegated grant to invoke delete', () => __awaiter(this, void 0, void 0, function* () {
850
+ var _a;
851
+ // scenario:
852
+ // 1. Bob has the message protocol installed
853
+ // 2. Alice writes a message to Bob's DWN
854
+ // 3. Alice creates a non-delegated delete grant for device X
855
+ // 4. Verify that device X cannot delete the message from Bob's DWN as Alice using the non-delegated grant
856
+ // 5. Sanity verify the message still exists in Bob's DWN
857
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
858
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
859
+ const deviceX = yield TestDataGenerator.generateDidKeyPersona();
860
+ // 1. Bob has the message protocol installed
861
+ const protocolDefinition = messageProtocolDefinition;
862
+ const protocol = protocolDefinition.protocol;
863
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
864
+ author: bob,
865
+ protocolDefinition
866
+ });
867
+ const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
868
+ expect(protocolConfigureReply.status.code).toBe(202);
869
+ // 2. Alice writes a message to Bob's DWN
870
+ const messageByAlice = yield TestDataGenerator.generateRecordsWrite({
871
+ author: alice,
872
+ protocol,
873
+ protocolPath: 'message',
874
+ schema: protocolDefinition.types.message.schema,
875
+ dataFormat: protocolDefinition.types.message.dataFormats[0],
876
+ });
877
+ const aliceWriteReply = yield dwn.processMessage(bob.did, messageByAlice.message, { dataStream: messageByAlice.dataStream });
878
+ expect(aliceWriteReply.status.code).toBe(202);
879
+ // 3. Alice creates a non-delegated delete grant for device X
880
+ const deviceXGrant = yield PermissionsProtocol.createGrant({
881
+ // delegated : true, // intentionally commented out to show that this is not a delegated grant
882
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
883
+ grantedTo: deviceX.did,
884
+ scope: {
885
+ interface: DwnInterfaceName.Records,
886
+ method: DwnMethodName.Delete,
887
+ protocol
888
+ },
889
+ signer: Jws.createSigner(alice)
890
+ });
891
+ // 4. Verify that device X cannot delete the message from Bob's DWN as Alice using the non-delegated grant
892
+ const recordsDeleteByDeviceX = yield RecordsDelete.create({
893
+ signer: Jws.createSigner(deviceX),
894
+ delegatedGrant: deviceXGrant.dataEncodedMessage,
895
+ recordId: messageByAlice.message.recordId
896
+ });
897
+ const deviceXDeleteReply = yield dwn.processMessage(bob.did, recordsDeleteByDeviceX.message);
898
+ expect(deviceXDeleteReply.status.code).toBe(400);
899
+ expect(deviceXDeleteReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantNotADelegatedGrant);
900
+ // 5. Sanity verify the message still exists in Bob's DWN
901
+ const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
902
+ author: bob,
903
+ filter: { protocol }
904
+ });
905
+ const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
906
+ expect(bobRecordsQueryReply.status.code).toBe(200);
907
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
762
908
  }));
763
909
  it('should fail if author-delegated grant has a mismatching protocol scope - write', () => __awaiter(this, void 0, void 0, function* () {
764
910
  // scenario:
@@ -790,7 +936,7 @@ export function testAuthorDelegatedGrant() {
790
936
  protocolDefinition
791
937
  });
792
938
  const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
793
- expect(protocolConfigureReply.status.code).to.equal(202);
939
+ expect(protocolConfigureReply.status.code).toBe(202);
794
940
  // 3. Device X attempts to use the delegated grant to write an email to Bob as Alice
795
941
  const deviceXData = new TextEncoder().encode('message from device X');
796
942
  const deviceXDataStream = DataStream.fromBytes(deviceXData);
@@ -804,8 +950,8 @@ export function testAuthorDelegatedGrant() {
804
950
  data: deviceXData
805
951
  });
806
952
  const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, { dataStream: deviceXDataStream });
807
- expect(deviceXWriteReply.status.code).to.equal(401);
808
- expect(deviceXWriteReply.status.detail).to.contain(DwnErrorCode.RecordsGrantAuthorizationScopeProtocolMismatch);
953
+ expect(deviceXWriteReply.status.code).toBe(401);
954
+ expect(deviceXWriteReply.status.detail).toContain(DwnErrorCode.RecordsGrantAuthorizationScopeProtocolMismatch);
809
955
  }));
810
956
  it('should fail if author-delegated grant has a mismatching protocol scope - query, subscribe & read', () => __awaiter(this, void 0, void 0, function* () {
811
957
  // scenario:
@@ -824,7 +970,7 @@ export function testAuthorDelegatedGrant() {
824
970
  protocolDefinition
825
971
  });
826
972
  const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
827
- expect(protocolsConfigureReply.status.code).to.equal(202);
973
+ expect(protocolsConfigureReply.status.code).toBe(202);
828
974
  // Bob starts a chat thread
829
975
  const threadRecord = yield TestDataGenerator.generateRecordsWrite({
830
976
  author: bob,
@@ -832,7 +978,7 @@ export function testAuthorDelegatedGrant() {
832
978
  protocolPath: 'thread',
833
979
  });
834
980
  const threadRoleReply = yield dwn.processMessage(bob.did, threadRecord.message, { dataStream: threadRecord.dataStream });
835
- expect(threadRoleReply.status.code).to.equal(202);
981
+ expect(threadRoleReply.status.code).toBe(202);
836
982
  // Bob adds Alice as a participant in the thread
837
983
  const participantRoleRecord = yield TestDataGenerator.generateRecordsWrite({
838
984
  author: bob,
@@ -843,7 +989,7 @@ export function testAuthorDelegatedGrant() {
843
989
  data: new TextEncoder().encode('Alice is my friend'),
844
990
  });
845
991
  const participantRoleReply = yield dwn.processMessage(bob.did, participantRoleRecord.message, { dataStream: participantRoleRecord.dataStream });
846
- expect(participantRoleReply.status.code).to.equal(202);
992
+ expect(participantRoleReply.status.code).toBe(202);
847
993
  // Bob writes a chat message in the thread
848
994
  const chatRecord = yield TestDataGenerator.generateRecordsWrite({
849
995
  author: bob,
@@ -852,7 +998,7 @@ export function testAuthorDelegatedGrant() {
852
998
  parentContextId: threadRecord.message.contextId,
853
999
  });
854
1000
  const chatRecordReply = yield dwn.processMessage(bob.did, chatRecord.message, { dataStream: chatRecord.dataStream });
855
- expect(chatRecordReply.status.code).to.equal(202);
1001
+ expect(chatRecordReply.status.code).toBe(202);
856
1002
  // 2. Alice creates a delegated grant for device X to act as her for a protocol that is NOT chat protocol
857
1003
  // Alice creates a delegated query grant for device X to act as Alice but not for chat protocol
858
1004
  const queryGrantForDeviceX = yield PermissionsProtocol.createGrant({
@@ -903,8 +1049,8 @@ export function testAuthorDelegatedGrant() {
903
1049
  }
904
1050
  });
905
1051
  const deviceXRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByDeviceX.message);
906
- expect(deviceXRecordsQueryReply.status.code).to.equal(401);
907
- expect(deviceXRecordsQueryReply.status.detail).to.contain(DwnErrorCode.RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch);
1052
+ expect(deviceXRecordsQueryReply.status.code).toBe(401);
1053
+ expect(deviceXRecordsQueryReply.status.detail).toContain(DwnErrorCode.RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch);
908
1054
  // verify device X reading for the chat message from Bob's DWN fails
909
1055
  const recordsReadByDeviceX = yield RecordsRead.create({
910
1056
  signer: Jws.createSigner(deviceX),
@@ -915,8 +1061,8 @@ export function testAuthorDelegatedGrant() {
915
1061
  }
916
1062
  });
917
1063
  const deviceXReadReply = yield dwn.processMessage(bob.did, recordsReadByDeviceX.message);
918
- expect(deviceXReadReply.status.code).to.equal(401);
919
- expect(deviceXReadReply.status.detail).to.contain(DwnErrorCode.RecordsGrantAuthorizationScopeProtocolMismatch);
1064
+ expect(deviceXReadReply.status.code).toBe(401);
1065
+ expect(deviceXReadReply.status.detail).toContain(DwnErrorCode.RecordsGrantAuthorizationScopeProtocolMismatch);
920
1066
  // verify device X subscribing to the chat message from Bob's DWN fails
921
1067
  const recordsSubscribeByDeviceX = yield RecordsSubscribe.create({
922
1068
  signer: Jws.createSigner(deviceX),
@@ -929,8 +1075,8 @@ export function testAuthorDelegatedGrant() {
929
1075
  }
930
1076
  });
931
1077
  const deviceXRecordsSubscribeReply = yield dwn.processMessage(bob.did, recordsSubscribeByDeviceX.message);
932
- expect(deviceXRecordsSubscribeReply.status.code).to.equal(401);
933
- expect(deviceXRecordsSubscribeReply.status.detail).to.contain(DwnErrorCode.RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch);
1078
+ expect(deviceXRecordsSubscribeReply.status.code).toBe(401);
1079
+ expect(deviceXRecordsSubscribeReply.status.detail).toContain(DwnErrorCode.RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch);
934
1080
  }));
935
1081
  it('should fail if author-delegated grant has a mismatching protocol scope - delete', () => __awaiter(this, void 0, void 0, function* () {
936
1082
  var _a;
@@ -950,7 +1096,7 @@ export function testAuthorDelegatedGrant() {
950
1096
  protocolDefinition
951
1097
  });
952
1098
  const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
953
- expect(protocolsConfigureReply.status.code).to.equal(202);
1099
+ expect(protocolsConfigureReply.status.code).toBe(202);
954
1100
  // Bob adds Alice as an admin
955
1101
  const globalAdminRecord = yield TestDataGenerator.generateRecordsWrite({
956
1102
  author: bob,
@@ -960,7 +1106,7 @@ export function testAuthorDelegatedGrant() {
960
1106
  data: new TextEncoder().encode('I trust Alice to manage my chat thread'),
961
1107
  });
962
1108
  const globalAdminRecordReply = yield dwn.processMessage(bob.did, globalAdminRecord.message, { dataStream: globalAdminRecord.dataStream });
963
- expect(globalAdminRecordReply.status.code).to.equal(202);
1109
+ expect(globalAdminRecordReply.status.code).toBe(202);
964
1110
  // Bob starts a chat thread
965
1111
  const threadRecord = yield TestDataGenerator.generateRecordsWrite({
966
1112
  author: bob,
@@ -968,7 +1114,7 @@ export function testAuthorDelegatedGrant() {
968
1114
  protocolPath: 'thread',
969
1115
  });
970
1116
  const threadRoleReply = yield dwn.processMessage(bob.did, threadRecord.message, { dataStream: threadRecord.dataStream });
971
- expect(threadRoleReply.status.code).to.equal(202);
1117
+ expect(threadRoleReply.status.code).toBe(202);
972
1118
  // Bob adds Carol as a participant in the thread
973
1119
  const participantRoleRecord = yield TestDataGenerator.generateRecordsWrite({
974
1120
  author: bob,
@@ -978,7 +1124,7 @@ export function testAuthorDelegatedGrant() {
978
1124
  parentContextId: threadRecord.message.contextId
979
1125
  });
980
1126
  const participantRoleReply = yield dwn.processMessage(bob.did, participantRoleRecord.message, { dataStream: participantRoleRecord.dataStream });
981
- expect(participantRoleReply.status.code).to.equal(202);
1127
+ expect(participantRoleReply.status.code).toBe(202);
982
1128
  // Carol writes a chat message in the thread
983
1129
  const chatRecord = yield TestDataGenerator.generateRecordsWrite({
984
1130
  author: carol,
@@ -989,7 +1135,7 @@ export function testAuthorDelegatedGrant() {
989
1135
  data: new TextEncoder().encode('A rude message'),
990
1136
  });
991
1137
  const chatRecordReply = yield dwn.processMessage(bob.did, chatRecord.message, { dataStream: chatRecord.dataStream });
992
- expect(chatRecordReply.status.code).to.equal(202);
1138
+ expect(chatRecordReply.status.code).toBe(202);
993
1139
  // Alice creates a delegated delete grant for Device X to act as her for a protocol that is NOT chat protocol
994
1140
  const delegatedGrantForDeviceX = yield PermissionsProtocol.createGrant({
995
1141
  delegated: true, // this is a delegated grant
@@ -1010,16 +1156,16 @@ export function testAuthorDelegatedGrant() {
1010
1156
  recordId: chatRecord.message.recordId
1011
1157
  });
1012
1158
  const deviceXRecordsDeleteReply = yield dwn.processMessage(bob.did, recordsDeleteByDeviceX.message);
1013
- expect(deviceXRecordsDeleteReply.status.code).to.equal(401);
1014
- expect(deviceXRecordsDeleteReply.status.detail).to.contain(DwnErrorCode.RecordsGrantAuthorizationDeleteProtocolScopeMismatch);
1159
+ expect(deviceXRecordsDeleteReply.status.code).toBe(401);
1160
+ expect(deviceXRecordsDeleteReply.status.detail).toContain(DwnErrorCode.RecordsGrantAuthorizationDeleteProtocolScopeMismatch);
1015
1161
  // sanity verify the chat message is still in Bob's DWN
1016
1162
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
1017
1163
  author: bob,
1018
1164
  filter: { protocolPath: 'thread/chat' }
1019
1165
  });
1020
1166
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
1021
- expect(bobRecordsQueryReply.status.code).to.equal(200);
1022
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
1167
+ expect(bobRecordsQueryReply.status.code).toBe(200);
1168
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
1023
1169
  }));
1024
1170
  it('should fail if presented with an author-delegated grant with invalid grantor signature - write', () => __awaiter(this, void 0, void 0, function* () {
1025
1171
  var _a;
@@ -1039,7 +1185,7 @@ export function testAuthorDelegatedGrant() {
1039
1185
  protocolDefinition
1040
1186
  });
1041
1187
  const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
1042
- expect(protocolConfigureReply.status.code).to.equal(202);
1188
+ expect(protocolConfigureReply.status.code).toBe(202);
1043
1189
  // 2. Alice creates a delegated grant for device X to write as Alice, but with invalid signature
1044
1190
  const scope = {
1045
1191
  interface: DwnInterfaceName.Records,
@@ -1068,16 +1214,16 @@ export function testAuthorDelegatedGrant() {
1068
1214
  data: deviceXData
1069
1215
  });
1070
1216
  const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, { dataStream: deviceXDataStream });
1071
- expect(deviceXWriteReply.status.code).to.equal(401);
1072
- expect(deviceXWriteReply.status.detail).to.contain(DwnErrorCode.GeneralJwsVerifierInvalidSignature);
1217
+ expect(deviceXWriteReply.status.code).toBe(401);
1218
+ expect(deviceXWriteReply.status.detail).toContain(DwnErrorCode.GeneralJwsVerifierInvalidSignature);
1073
1219
  // 4. Sanity verify the message by device X did not get written to Bob's DWN
1074
1220
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
1075
1221
  author: bob,
1076
1222
  filter: { protocol }
1077
1223
  });
1078
1224
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
1079
- expect(bobRecordsQueryReply.status.code).to.equal(200);
1080
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
1225
+ expect(bobRecordsQueryReply.status.code).toBe(200);
1226
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
1081
1227
  }));
1082
1228
  it('should fail if the CID of the author-delegated grant and the grant ID in the payload of the message signature is mismatching - write', () => __awaiter(this, void 0, void 0, function* () {
1083
1229
  var _a;
@@ -1097,7 +1243,7 @@ export function testAuthorDelegatedGrant() {
1097
1243
  protocolDefinition
1098
1244
  });
1099
1245
  const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
1100
- expect(protocolConfigureReply.status.code).to.equal(202);
1246
+ expect(protocolConfigureReply.status.code).toBe(202);
1101
1247
  // 2. Alice creates two delegated grants for device X to write as Alice
1102
1248
  const scope = {
1103
1249
  interface: DwnInterfaceName.Records,
@@ -1133,16 +1279,16 @@ export function testAuthorDelegatedGrant() {
1133
1279
  });
1134
1280
  messageByDeviceX.message.authorization.authorDelegatedGrant = deviceXGrant2.dataEncodedMessage; // intentionally have a mismatching grant
1135
1281
  const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, { dataStream: deviceXDataStream });
1136
- expect(deviceXWriteReply.status.code).to.equal(400);
1137
- expect(deviceXWriteReply.status.detail).to.contain(DwnErrorCode.RecordsAuthorDelegatedGrantCidMismatch);
1282
+ expect(deviceXWriteReply.status.code).toBe(400);
1283
+ expect(deviceXWriteReply.status.detail).toContain(DwnErrorCode.RecordsAuthorDelegatedGrantCidMismatch);
1138
1284
  // 4. Sanity verify the message by device X did not get written to Bob's DWN
1139
1285
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
1140
1286
  author: bob,
1141
1287
  filter: { protocol }
1142
1288
  });
1143
1289
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
1144
- expect(bobRecordsQueryReply.status.code).to.equal(200);
1145
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
1290
+ expect(bobRecordsQueryReply.status.code).toBe(200);
1291
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
1146
1292
  }));
1147
1293
  it('should fail if author-delegated grant is revoked - write', () => __awaiter(this, void 0, void 0, function* () {
1148
1294
  var _a;
@@ -1163,7 +1309,7 @@ export function testAuthorDelegatedGrant() {
1163
1309
  protocolDefinition
1164
1310
  });
1165
1311
  const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
1166
- expect(protocolConfigureReply.status.code).to.equal(202);
1312
+ expect(protocolConfigureReply.status.code).toBe(202);
1167
1313
  // 2. Alice creates a delegated grant for device X to write as Alice
1168
1314
  const scope = {
1169
1315
  interface: DwnInterfaceName.Records,
@@ -1179,7 +1325,7 @@ export function testAuthorDelegatedGrant() {
1179
1325
  });
1180
1326
  const deviceXGrantDataStream = DataStream.fromBytes(deviceXGrant.permissionGrantBytes);
1181
1327
  const permissionGrantWriteReply = yield dwn.processMessage(alice.did, deviceXGrant.recordsWrite.message, { dataStream: deviceXGrantDataStream });
1182
- expect(permissionGrantWriteReply.status.code).to.equal(202);
1328
+ expect(permissionGrantWriteReply.status.code).toBe(202);
1183
1329
  // 3. Alice revokes the grant
1184
1330
  const permissionRevoke = yield PermissionsProtocol.createRevocation({
1185
1331
  signer: Jws.createSigner(alice),
@@ -1187,7 +1333,7 @@ export function testAuthorDelegatedGrant() {
1187
1333
  });
1188
1334
  const revocationDataStream = DataStream.fromBytes(permissionRevoke.permissionRevocationBytes);
1189
1335
  const permissionRevokeReply = yield dwn.processMessage(alice.did, permissionRevoke.recordsWrite.message, { dataStream: revocationDataStream });
1190
- expect(permissionRevokeReply.status.code).to.equal(202);
1336
+ expect(permissionRevokeReply.status.code).toBe(202);
1191
1337
  // 3. Verify that device X cannot write a `RecordsWrite` message to Bob's DWN as Alice using a mismatching delegated grant ID
1192
1338
  const deviceXData = new TextEncoder().encode('message from device X');
1193
1339
  const deviceXDataStream = DataStream.fromBytes(deviceXData);
@@ -1201,16 +1347,16 @@ export function testAuthorDelegatedGrant() {
1201
1347
  data: deviceXData
1202
1348
  });
1203
1349
  const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, { dataStream: deviceXDataStream });
1204
- expect(deviceXWriteReply.status.code).to.equal(401);
1205
- expect(deviceXWriteReply.status.detail).to.contain(DwnErrorCode.GrantAuthorizationGrantRevoked);
1350
+ expect(deviceXWriteReply.status.code).toBe(401);
1351
+ expect(deviceXWriteReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationGrantRevoked);
1206
1352
  // 4. Sanity verify the message by device X did not get written to Bob's DWN
1207
1353
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
1208
1354
  author: bob,
1209
1355
  filter: { protocol }
1210
1356
  });
1211
1357
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
1212
- expect(bobRecordsQueryReply.status.code).to.equal(200);
1213
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
1358
+ expect(bobRecordsQueryReply.status.code).toBe(200);
1359
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
1214
1360
  }));
1215
1361
  it('should fail if author-delegated grant is expired - write', () => __awaiter(this, void 0, void 0, function* () {
1216
1362
  var _a;
@@ -1230,7 +1376,7 @@ export function testAuthorDelegatedGrant() {
1230
1376
  protocolDefinition
1231
1377
  });
1232
1378
  const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
1233
- expect(protocolConfigureReply.status.code).to.equal(202);
1379
+ expect(protocolConfigureReply.status.code).toBe(202);
1234
1380
  // 2. Alice creates a delegated grant for device X to write as Alice, but make it expired
1235
1381
  const scope = {
1236
1382
  interface: DwnInterfaceName.Records,
@@ -1257,17 +1403,17 @@ export function testAuthorDelegatedGrant() {
1257
1403
  data: deviceXData
1258
1404
  });
1259
1405
  const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, { dataStream: deviceXDataStream });
1260
- expect(deviceXWriteReply.status.code).to.equal(401);
1261
- expect(deviceXWriteReply.status.detail).to.contain(DwnErrorCode.GrantAuthorizationGrantExpired);
1406
+ expect(deviceXWriteReply.status.code).toBe(401);
1407
+ expect(deviceXWriteReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationGrantExpired);
1262
1408
  // 4. Sanity verify the message by device X did not get written to Bob's DWN
1263
1409
  const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
1264
1410
  author: bob,
1265
1411
  filter: { protocol }
1266
1412
  });
1267
1413
  const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
1268
- expect(bobRecordsQueryReply.status.code).to.equal(200);
1269
- expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
1414
+ expect(bobRecordsQueryReply.status.code).toBe(200);
1415
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
1270
1416
  }));
1271
- }));
1417
+ });
1272
1418
  }
1273
1419
  //# sourceMappingURL=author-delegated-grant.spec.js.map