@enbox/dwn-sdk-js 0.0.5 → 0.0.7

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 (363) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +1 -2
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/abstract-message.js +4 -0
  6. package/dist/esm/src/core/abstract-message.js.map +1 -1
  7. package/dist/esm/src/core/auth.js +22 -33
  8. package/dist/esm/src/core/auth.js.map +1 -1
  9. package/dist/esm/src/core/dwn-constant.js +7 -7
  10. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  11. package/dist/esm/src/core/dwn-error.js +1 -0
  12. package/dist/esm/src/core/dwn-error.js.map +1 -1
  13. package/dist/esm/src/core/grant-authorization.js +37 -52
  14. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/message.js +85 -116
  16. package/dist/esm/src/core/message.js.map +1 -1
  17. package/dist/esm/src/core/messages-grant-authorization.js +63 -78
  18. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  19. package/dist/esm/src/core/protocol-authorization-action.js +266 -0
  20. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
  21. package/dist/esm/src/core/protocol-authorization-validation.js +254 -0
  22. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
  23. package/dist/esm/src/core/protocol-authorization.js +122 -740
  24. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  25. package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
  26. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  27. package/dist/esm/src/core/record-chain.js +64 -0
  28. package/dist/esm/src/core/record-chain.js.map +1 -0
  29. package/dist/esm/src/core/records-grant-authorization.js +55 -72
  30. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  31. package/dist/esm/src/core/resumable-task-manager.js +50 -65
  32. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  33. package/dist/esm/src/core/tenant-gate.js +2 -13
  34. package/dist/esm/src/core/tenant-gate.js.map +1 -1
  35. package/dist/esm/src/dwn.js +69 -86
  36. package/dist/esm/src/dwn.js.map +1 -1
  37. package/dist/esm/src/event-stream/event-emitter-stream.js +17 -31
  38. package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -1
  39. package/dist/esm/src/handlers/messages-read.js +67 -77
  40. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  41. package/dist/esm/src/handlers/messages-subscribe.js +51 -61
  42. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  43. package/dist/esm/src/handlers/messages-sync.js +75 -85
  44. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  45. package/dist/esm/src/handlers/protocols-configure.js +135 -155
  46. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  47. package/dist/esm/src/handlers/protocols-query.js +52 -51
  48. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  49. package/dist/esm/src/handlers/records-count.js +96 -82
  50. package/dist/esm/src/handlers/records-count.js.map +1 -1
  51. package/dist/esm/src/handlers/records-delete.js +78 -88
  52. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  53. package/dist/esm/src/handlers/records-query.js +116 -101
  54. package/dist/esm/src/handlers/records-query.js.map +1 -1
  55. package/dist/esm/src/handlers/records-read.js +124 -131
  56. package/dist/esm/src/handlers/records-read.js.map +1 -1
  57. package/dist/esm/src/handlers/records-subscribe.js +150 -103
  58. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  59. package/dist/esm/src/handlers/records-write.js +250 -259
  60. package/dist/esm/src/handlers/records-write.js.map +1 -1
  61. package/dist/esm/src/interfaces/messages-read.js +24 -32
  62. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  63. package/dist/esm/src/interfaces/messages-subscribe.js +27 -41
  64. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  65. package/dist/esm/src/interfaces/messages-sync.js +26 -40
  66. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  67. package/dist/esm/src/interfaces/protocols-configure.js +63 -63
  68. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  69. package/dist/esm/src/interfaces/protocols-query.js +55 -68
  70. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  71. package/dist/esm/src/interfaces/records-count.js +50 -66
  72. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  73. package/dist/esm/src/interfaces/records-delete.js +45 -55
  74. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  75. package/dist/esm/src/interfaces/records-query.js +60 -76
  76. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-read.js +51 -67
  78. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-subscribe.js +52 -68
  80. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-write-query.js +102 -0
  82. package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
  83. package/dist/esm/src/interfaces/records-write-signing.js +92 -0
  84. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
  85. package/dist/esm/src/interfaces/records-write.js +407 -602
  86. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  87. package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
  88. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  89. package/dist/esm/src/jose/jws/general/builder.js +23 -35
  90. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  91. package/dist/esm/src/jose/jws/general/verifier.js +56 -69
  92. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  93. package/dist/esm/src/protocols/permission-grant.js +44 -15
  94. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  95. package/dist/esm/src/protocols/permission-request.js +29 -15
  96. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  97. package/dist/esm/src/protocols/permissions.js +216 -226
  98. package/dist/esm/src/protocols/permissions.js.map +1 -1
  99. package/dist/esm/src/smt/smt-store-level.js +42 -64
  100. package/dist/esm/src/smt/smt-store-level.js.map +1 -1
  101. package/dist/esm/src/smt/smt-store-memory.js +19 -45
  102. package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
  103. package/dist/esm/src/smt/smt-utils.js +28 -45
  104. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  105. package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
  106. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
  107. package/dist/esm/src/state-index/state-index-level.js +115 -150
  108. package/dist/esm/src/state-index/state-index-level.js.map +1 -1
  109. package/dist/esm/src/store/blockstore-level.js +54 -156
  110. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  111. package/dist/esm/src/store/blockstore-mock.js +48 -153
  112. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  113. package/dist/esm/src/store/data-store-level.js +59 -99
  114. package/dist/esm/src/store/data-store-level.js.map +1 -1
  115. package/dist/esm/src/store/index-level-compound.js +246 -0
  116. package/dist/esm/src/store/index-level-compound.js.map +1 -0
  117. package/dist/esm/src/store/index-level.js +295 -713
  118. package/dist/esm/src/store/index-level.js.map +1 -1
  119. package/dist/esm/src/store/level-wrapper.js +143 -244
  120. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  121. package/dist/esm/src/store/message-store-level.js +71 -94
  122. package/dist/esm/src/store/message-store-level.js.map +1 -1
  123. package/dist/esm/src/store/resumable-task-store-level.js +62 -101
  124. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
  125. package/dist/esm/src/store/storage-controller.js +129 -144
  126. package/dist/esm/src/store/storage-controller.js.map +1 -1
  127. package/dist/esm/src/utils/abort.js +8 -19
  128. package/dist/esm/src/utils/abort.js.map +1 -1
  129. package/dist/esm/src/utils/array.js +15 -49
  130. package/dist/esm/src/utils/array.js.map +1 -1
  131. package/dist/esm/src/utils/cid.js +29 -77
  132. package/dist/esm/src/utils/cid.js.map +1 -1
  133. package/dist/esm/src/utils/data-stream.js +37 -65
  134. package/dist/esm/src/utils/data-stream.js.map +1 -1
  135. package/dist/esm/src/utils/encryption.js +136 -162
  136. package/dist/esm/src/utils/encryption.js.map +1 -1
  137. package/dist/esm/src/utils/filter.js +1 -12
  138. package/dist/esm/src/utils/filter.js.map +1 -1
  139. package/dist/esm/src/utils/hd-key.js +45 -63
  140. package/dist/esm/src/utils/hd-key.js.map +1 -1
  141. package/dist/esm/src/utils/jws.js +9 -20
  142. package/dist/esm/src/utils/jws.js.map +1 -1
  143. package/dist/esm/src/utils/memory-cache.js +12 -23
  144. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  145. package/dist/esm/src/utils/messages.js +9 -3
  146. package/dist/esm/src/utils/messages.js.map +1 -1
  147. package/dist/esm/src/utils/private-key-signer.js +9 -17
  148. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  149. package/dist/esm/src/utils/protocols.js +62 -70
  150. package/dist/esm/src/utils/protocols.js.map +1 -1
  151. package/dist/esm/src/utils/records.js +108 -140
  152. package/dist/esm/src/utils/records.js.map +1 -1
  153. package/dist/esm/src/utils/secp256k1.js +60 -96
  154. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  155. package/dist/esm/src/utils/secp256r1.js +54 -71
  156. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  157. package/dist/esm/src/utils/time.js +5 -18
  158. package/dist/esm/src/utils/time.js.map +1 -1
  159. package/dist/esm/src/utils/url.js +3 -3
  160. package/dist/esm/src/utils/url.js.map +1 -1
  161. package/dist/esm/tests/core/auth.spec.js +3 -12
  162. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  163. package/dist/esm/tests/core/message.spec.js +50 -59
  164. package/dist/esm/tests/core/message.spec.js.map +1 -1
  165. package/dist/esm/tests/core/protocol-authorization.spec.js +9 -18
  166. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  167. package/dist/esm/tests/dwn.spec.js +45 -58
  168. package/dist/esm/tests/dwn.spec.js.map +1 -1
  169. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +24 -33
  170. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -1
  171. package/dist/esm/tests/event-stream/event-stream.spec.js +46 -55
  172. package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -1
  173. package/dist/esm/tests/features/author-delegated-grant.spec.js +326 -343
  174. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  175. package/dist/esm/tests/features/owner-delegated-grant.spec.js +153 -169
  176. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  177. package/dist/esm/tests/features/owner-signature.spec.js +67 -78
  178. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  179. package/dist/esm/tests/features/permissions.spec.js +446 -181
  180. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  181. package/dist/esm/tests/features/protocol-composition.spec.js +346 -356
  182. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  183. package/dist/esm/tests/features/protocol-create-action.spec.js +42 -51
  184. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  185. package/dist/esm/tests/features/protocol-delete-action.spec.js +94 -103
  186. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  187. package/dist/esm/tests/features/protocol-update-action.spec.js +105 -114
  188. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  189. package/dist/esm/tests/features/records-prune.spec.js +175 -191
  190. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  191. package/dist/esm/tests/features/records-tags.spec.js +441 -460
  192. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  193. package/dist/esm/tests/features/resumable-tasks.spec.js +82 -91
  194. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  195. package/dist/esm/tests/handlers/messages-read.spec.js +206 -207
  196. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  197. package/dist/esm/tests/handlers/messages-subscribe.spec.js +145 -154
  198. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  199. package/dist/esm/tests/handlers/messages-sync.spec.js +174 -183
  200. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  201. package/dist/esm/tests/handlers/protocols-configure.spec.js +244 -238
  202. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  203. package/dist/esm/tests/handlers/protocols-query.spec.js +156 -169
  204. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  205. package/dist/esm/tests/handlers/records-count.spec.js +93 -102
  206. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  207. package/dist/esm/tests/handlers/records-delete.spec.js +252 -264
  208. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  209. package/dist/esm/tests/handlers/records-query.spec.js +917 -988
  210. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  211. package/dist/esm/tests/handlers/records-read.spec.js +553 -568
  212. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  213. package/dist/esm/tests/handlers/records-subscribe.spec.js +269 -278
  214. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  215. package/dist/esm/tests/handlers/records-write.spec.js +1057 -1082
  216. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  217. package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
  218. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  219. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
  220. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  221. package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
  222. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  223. package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
  224. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  225. package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
  226. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  227. package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
  228. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  229. package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
  230. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  231. package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
  232. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  233. package/dist/esm/tests/interfaces/records-write.spec.js +152 -165
  234. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  235. package/dist/esm/tests/jose/jws/general.spec.js +36 -45
  236. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  237. package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
  238. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
  239. package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
  240. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  241. package/dist/esm/tests/protocols/permissions.spec.js +49 -55
  242. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  243. package/dist/esm/tests/scenarios/aggregator.spec.js +124 -135
  244. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  245. package/dist/esm/tests/scenarios/deleted-record.spec.js +23 -32
  246. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  247. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +52 -61
  248. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  249. package/dist/esm/tests/scenarios/nested-roles.spec.js +63 -73
  250. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  251. package/dist/esm/tests/scenarios/subscriptions.spec.js +377 -333
  252. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  253. package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
  254. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
  255. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
  256. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
  257. package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
  258. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
  259. package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
  260. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  261. package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
  262. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  263. package/dist/esm/tests/store/data-store-level.spec.js +86 -95
  264. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  265. package/dist/esm/tests/store/index-level.spec.js +404 -414
  266. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  267. package/dist/esm/tests/store/message-store-level.spec.js +13 -22
  268. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  269. package/dist/esm/tests/store/message-store.spec.js +229 -238
  270. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  271. package/dist/esm/tests/test-event-stream.js +3 -3
  272. package/dist/esm/tests/test-event-stream.js.map +1 -1
  273. package/dist/esm/tests/test-stores.js +16 -13
  274. package/dist/esm/tests/test-stores.js.map +1 -1
  275. package/dist/esm/tests/test-suite.js +2 -11
  276. package/dist/esm/tests/test-suite.js.map +1 -1
  277. package/dist/esm/tests/utils/cid.spec.js +24 -33
  278. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  279. package/dist/esm/tests/utils/data-stream.spec.js +48 -57
  280. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  281. package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
  282. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  283. package/dist/esm/tests/utils/encryption.spec.js +291 -44
  284. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  285. package/dist/esm/tests/utils/filters.spec.js +46 -55
  286. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  287. package/dist/esm/tests/utils/hd-key.spec.js +10 -19
  288. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  289. package/dist/esm/tests/utils/jws.spec.js +3 -12
  290. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  291. package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
  292. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  293. package/dist/esm/tests/utils/messages.spec.js +6 -15
  294. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  295. package/dist/esm/tests/utils/poller.js +22 -33
  296. package/dist/esm/tests/utils/poller.js.map +1 -1
  297. package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
  298. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  299. package/dist/esm/tests/utils/records.spec.js +10 -19
  300. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  301. package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
  302. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  303. package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
  304. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  305. package/dist/esm/tests/utils/test-data-generator.js +414 -468
  306. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  307. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
  308. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  309. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
  310. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  311. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
  312. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  313. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
  314. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  315. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
  316. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  317. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
  318. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  319. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
  320. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
  321. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +7 -16
  322. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  323. package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
  324. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
  325. package/dist/types/src/core/protocol-authorization-validation.d.ts +60 -0
  326. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
  327. package/dist/types/src/core/protocol-authorization.d.ts +10 -100
  328. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  329. package/dist/types/src/core/record-chain.d.ts +24 -0
  330. package/dist/types/src/core/record-chain.d.ts.map +1 -0
  331. package/dist/types/src/handlers/records-write.d.ts +2 -1
  332. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  333. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  334. package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
  335. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
  336. package/dist/types/src/interfaces/records-write-signing.d.ts +35 -0
  337. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
  338. package/dist/types/src/interfaces/records-write.d.ts +10 -44
  339. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  340. package/dist/types/src/store/index-level-compound.d.ts +70 -0
  341. package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
  342. package/dist/types/src/store/index-level.d.ts +0 -58
  343. package/dist/types/src/store/index-level.d.ts.map +1 -1
  344. package/dist/types/src/utils/protocols.d.ts +5 -0
  345. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  346. package/dist/types/src/utils/records.d.ts +3 -1
  347. package/dist/types/src/utils/records.d.ts.map +1 -1
  348. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  349. package/package.json +3 -3
  350. package/src/core/protocol-authorization-action.ts +377 -0
  351. package/src/core/protocol-authorization-validation.ts +391 -0
  352. package/src/core/protocol-authorization.ts +60 -849
  353. package/src/core/record-chain.ts +99 -0
  354. package/src/handlers/records-read.ts +1 -1
  355. package/src/handlers/records-write.ts +37 -21
  356. package/src/interfaces/protocols-configure.ts +33 -5
  357. package/src/interfaces/records-write-query.ts +139 -0
  358. package/src/interfaces/records-write-signing.ts +143 -0
  359. package/src/interfaces/records-write.ts +49 -221
  360. package/src/store/index-level-compound.ts +324 -0
  361. package/src/store/index-level.ts +24 -306
  362. package/src/utils/protocols.ts +8 -0
  363. package/src/utils/records.ts +9 -15
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { GeneralJwsVerifier } from '../../src/jose/jws/general/verifier.js';
11
2
  import { Message } from '../../src/core/message.js';
12
3
  import minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' with { type: 'json' };
@@ -28,7 +19,7 @@ export function testMessagesReadHandler() {
28
19
  let eventStream;
29
20
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
30
21
  // so that different test suites can reuse the same backend store for testing
31
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
22
+ beforeAll(async () => {
32
23
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
33
24
  const stores = TestStores.get();
34
25
  messageStore = stores.messageStore;
@@ -36,103 +27,103 @@ export function testMessagesReadHandler() {
36
27
  resumableTaskStore = stores.resumableTaskStore;
37
28
  stateIndex = stores.stateIndex;
38
29
  eventStream = TestEventStream.get();
39
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
40
- }));
41
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
30
+ dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
31
+ });
32
+ beforeEach(async () => {
42
33
  // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
43
- yield messageStore.clear();
44
- yield dataStore.clear();
45
- yield resumableTaskStore.clear();
46
- yield stateIndex.clear();
34
+ await messageStore.clear();
35
+ await dataStore.clear();
36
+ await resumableTaskStore.clear();
37
+ await stateIndex.clear();
47
38
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
48
- }));
49
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
39
+ });
40
+ afterAll(async () => {
50
41
  sinon.restore();
51
- yield dwn.close();
52
- }));
53
- it('returns a 401 if authentication fails', () => __awaiter(this, void 0, void 0, function* () {
54
- const alice = yield TestDataGenerator.generateDidKeyPersona();
42
+ await dwn.close();
43
+ });
44
+ it('returns a 401 if authentication fails', async () => {
45
+ const alice = await TestDataGenerator.generateDidKeyPersona();
55
46
  sinon.stub(GeneralJwsVerifier, 'verifySignatures').throws(new Error('Invalid signature'));
56
47
  // alice creates a record
57
- const { message } = yield TestDataGenerator.generateMessagesRead({
48
+ const { message } = await TestDataGenerator.generateMessagesRead({
58
49
  author: alice,
59
- messageCid: yield TestDataGenerator.randomCborSha256Cid()
50
+ messageCid: await TestDataGenerator.randomCborSha256Cid()
60
51
  });
61
52
  // alice is not the author of the message
62
- const reply = yield dwn.processMessage(alice.did, message);
53
+ const reply = await dwn.processMessage(alice.did, message);
63
54
  expect(reply.status.code).toBe(401);
64
55
  expect(reply.status.detail).toContain('Invalid signature');
65
- }));
66
- it('returns a 400 if message is invalid', () => __awaiter(this, void 0, void 0, function* () {
67
- const alice = yield TestDataGenerator.generateDidKeyPersona();
68
- const { recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
69
- const { message } = yield TestDataGenerator.generateMessagesRead({
56
+ });
57
+ it('returns a 400 if message is invalid', async () => {
58
+ const alice = await TestDataGenerator.generateDidKeyPersona();
59
+ const { recordsWrite } = await TestDataGenerator.generateRecordsWrite({ author: alice });
60
+ const { message } = await TestDataGenerator.generateMessagesRead({
70
61
  author: alice,
71
- messageCid: yield Message.getCid(recordsWrite.message)
62
+ messageCid: await Message.getCid(recordsWrite.message)
72
63
  });
73
64
  message['descriptor']['troll'] = 'hehe';
74
- const reply = yield dwn.processMessage(alice.did, message);
65
+ const reply = await dwn.processMessage(alice.did, message);
75
66
  expect(reply.status.code).toBe(400);
76
- }));
77
- it('returns a 400 if message contains an invalid message cid', () => __awaiter(this, void 0, void 0, function* () {
78
- const alice = yield TestDataGenerator.generateDidKeyPersona();
79
- const { recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
80
- const { message } = yield TestDataGenerator.generateMessagesRead({
67
+ });
68
+ it('returns a 400 if message contains an invalid message cid', async () => {
69
+ const alice = await TestDataGenerator.generateDidKeyPersona();
70
+ const { recordsWrite } = await TestDataGenerator.generateRecordsWrite({ author: alice });
71
+ const { message } = await TestDataGenerator.generateMessagesRead({
81
72
  author: alice,
82
- messageCid: yield Message.getCid(recordsWrite.message)
73
+ messageCid: await Message.getCid(recordsWrite.message)
83
74
  });
84
75
  message.descriptor.messageCid = 'hehetroll';
85
- const reply = yield dwn.processMessage(alice.did, message);
76
+ const reply = await dwn.processMessage(alice.did, message);
86
77
  expect(reply.status.code).toBe(400);
87
78
  expect(reply.status.detail).toContain('is not a valid CID');
88
79
  expect(reply.entry).toBeUndefined();
89
- }));
90
- it('returns a 404 and the entry as undefined in reply entry when a messageCid is not found', () => __awaiter(this, void 0, void 0, function* () {
91
- const alice = yield TestDataGenerator.generateDidKeyPersona();
92
- const { recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
93
- const recordsWriteMessageCid = yield Message.getCid(recordsWrite.message);
94
- const { message } = yield TestDataGenerator.generateMessagesRead({
80
+ });
81
+ it('returns a 404 and the entry as undefined in reply entry when a messageCid is not found', async () => {
82
+ const alice = await TestDataGenerator.generateDidKeyPersona();
83
+ const { recordsWrite } = await TestDataGenerator.generateRecordsWrite({ author: alice });
84
+ const recordsWriteMessageCid = await Message.getCid(recordsWrite.message);
85
+ const { message } = await TestDataGenerator.generateMessagesRead({
95
86
  author: alice,
96
87
  messageCid: recordsWriteMessageCid
97
88
  });
98
89
  // returns a 404 because the RecordsWrite created above was never stored
99
- const reply = yield dwn.processMessage(alice.did, message);
90
+ const reply = await dwn.processMessage(alice.did, message);
100
91
  expect(reply.status.code).toBe(404);
101
92
  expect(reply.entry).toBeUndefined();
102
- }));
93
+ });
103
94
  describe('without a grant', () => {
104
95
  describe('records interface messages', () => {
105
- it('returns a 401 if the tenant is not the author', () => __awaiter(this, void 0, void 0, function* () {
106
- const alice = yield TestDataGenerator.generateDidKeyPersona();
107
- const bob = yield TestDataGenerator.generateDidKeyPersona();
96
+ it('returns a 401 if the tenant is not the author', async () => {
97
+ const alice = await TestDataGenerator.generateDidKeyPersona();
98
+ const bob = await TestDataGenerator.generateDidKeyPersona();
108
99
  // bob creates a record that alice will try and get
109
- const { message: recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: bob });
110
- const { status } = yield dwn.processMessage(bob.did, recordsWrite, { dataStream });
100
+ const { message: recordsWrite, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: bob });
101
+ const { status } = await dwn.processMessage(bob.did, recordsWrite, { dataStream });
111
102
  expect(status.code).toBe(202);
112
103
  // alice tries to read the message
113
- const { message } = yield TestDataGenerator.generateMessagesRead({
104
+ const { message } = await TestDataGenerator.generateMessagesRead({
114
105
  author: alice,
115
- messageCid: yield Message.getCid(recordsWrite)
106
+ messageCid: await Message.getCid(recordsWrite)
116
107
  });
117
- const reply = yield dwn.processMessage(bob.did, message);
108
+ const reply = await dwn.processMessage(bob.did, message);
118
109
  expect(reply.status.code).toBe(401);
119
110
  expect(reply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
120
- }));
111
+ });
121
112
  describe('gets record data in the reply entry', () => {
122
- it('data is less than threshold', () => __awaiter(this, void 0, void 0, function* () {
123
- const alice = yield TestDataGenerator.generateDidKeyPersona();
124
- const { message: recordsWrite, dataStream, dataBytes } = yield TestDataGenerator.generateRecordsWrite({
113
+ it('data is less than threshold', async () => {
114
+ const alice = await TestDataGenerator.generateDidKeyPersona();
115
+ const { message: recordsWrite, dataStream, dataBytes } = await TestDataGenerator.generateRecordsWrite({
125
116
  author: alice,
126
117
  data: TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded),
127
118
  });
128
- const reply = yield dwn.processMessage(alice.did, recordsWrite, { dataStream });
119
+ const reply = await dwn.processMessage(alice.did, recordsWrite, { dataStream });
129
120
  expect(reply.status.code).toBe(202);
130
- const recordsWriteMessageCid = yield Message.getCid(recordsWrite);
131
- const { message } = yield TestDataGenerator.generateMessagesRead({
121
+ const recordsWriteMessageCid = await Message.getCid(recordsWrite);
122
+ const { message } = await TestDataGenerator.generateMessagesRead({
132
123
  author: alice,
133
124
  messageCid: recordsWriteMessageCid
134
125
  });
135
- const messagesReadReply = yield dwn.processMessage(alice.did, message);
126
+ const messagesReadReply = await dwn.processMessage(alice.did, message);
136
127
  expect(messagesReadReply.status.code).toBe(200);
137
128
  expect(messagesReadReply.entry).toBeDefined();
138
129
  const messageReply = messagesReadReply.entry;
@@ -140,23 +131,23 @@ export function testMessagesReadHandler() {
140
131
  expect(messageReply.messageCid).toBe(recordsWriteMessageCid);
141
132
  expect(messageReply.message).toBeDefined();
142
133
  expect(messageReply.data).toBeDefined();
143
- const messageData = yield DataStream.toBytes(messageReply.data);
134
+ const messageData = await DataStream.toBytes(messageReply.data);
144
135
  expect(messageData).toEqual(dataBytes);
145
- }));
146
- it('data is greater than threshold', () => __awaiter(this, void 0, void 0, function* () {
147
- const alice = yield TestDataGenerator.generateDidKeyPersona();
148
- const { message: recordsWrite, dataStream, dataBytes } = yield TestDataGenerator.generateRecordsWrite({
136
+ });
137
+ it('data is greater than threshold', async () => {
138
+ const alice = await TestDataGenerator.generateDidKeyPersona();
139
+ const { message: recordsWrite, dataStream, dataBytes } = await TestDataGenerator.generateRecordsWrite({
149
140
  author: alice,
150
141
  data: TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded + 10),
151
142
  });
152
- const reply = yield dwn.processMessage(alice.did, recordsWrite, { dataStream });
143
+ const reply = await dwn.processMessage(alice.did, recordsWrite, { dataStream });
153
144
  expect(reply.status.code).toBe(202);
154
- const recordsWriteMessageCid = yield Message.getCid(recordsWrite);
155
- const { message } = yield TestDataGenerator.generateMessagesRead({
145
+ const recordsWriteMessageCid = await Message.getCid(recordsWrite);
146
+ const { message } = await TestDataGenerator.generateMessagesRead({
156
147
  author: alice,
157
148
  messageCid: recordsWriteMessageCid
158
149
  });
159
- const messagesReadReply = yield dwn.processMessage(alice.did, message);
150
+ const messagesReadReply = await dwn.processMessage(alice.did, message);
160
151
  expect(messagesReadReply.status.code).toBe(200);
161
152
  expect(messagesReadReply.entry).toBeDefined();
162
153
  const messageReply = messagesReadReply.entry;
@@ -164,31 +155,31 @@ export function testMessagesReadHandler() {
164
155
  expect(messageReply.messageCid).toBe(recordsWriteMessageCid);
165
156
  expect(messageReply.message).toBeDefined();
166
157
  expect(messageReply.data).toBeDefined();
167
- const messageData = yield DataStream.toBytes(messageReply.data);
158
+ const messageData = await DataStream.toBytes(messageReply.data);
168
159
  expect(messageData).toEqual(dataBytes);
169
- }));
170
- it('data is not available', () => __awaiter(this, void 0, void 0, function* () {
171
- const alice = yield TestDataGenerator.generateDidKeyPersona();
160
+ });
161
+ it('data is not available', async () => {
162
+ const alice = await TestDataGenerator.generateDidKeyPersona();
172
163
  // initial write
173
- const { message: recordsWriteMessage, recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({
164
+ const { message: recordsWriteMessage, recordsWrite, dataStream } = await TestDataGenerator.generateRecordsWrite({
174
165
  author: alice,
175
166
  data: TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded + 10),
176
167
  });
177
- const initialMessageCid = yield Message.getCid(recordsWriteMessage);
178
- let reply = yield dwn.processMessage(alice.did, recordsWriteMessage, { dataStream });
168
+ const initialMessageCid = await Message.getCid(recordsWriteMessage);
169
+ let reply = await dwn.processMessage(alice.did, recordsWriteMessage, { dataStream });
179
170
  expect(reply.status.code).toBe(202);
180
- const { recordsWrite: updateMessage, dataStream: updateDataStream } = yield TestDataGenerator.generateFromRecordsWrite({
171
+ const { recordsWrite: updateMessage, dataStream: updateDataStream } = await TestDataGenerator.generateFromRecordsWrite({
181
172
  author: alice,
182
173
  existingWrite: recordsWrite,
183
174
  data: TestDataGenerator.randomBytes(DwnConstant.maxDataSizeAllowedToBeEncoded + 10),
184
175
  });
185
- reply = yield dwn.processMessage(alice.did, updateMessage.toJSON(), { dataStream: updateDataStream });
176
+ reply = await dwn.processMessage(alice.did, updateMessage.toJSON(), { dataStream: updateDataStream });
186
177
  expect(reply.status.code).toBe(202);
187
- const { message } = yield TestDataGenerator.generateMessagesRead({
178
+ const { message } = await TestDataGenerator.generateMessagesRead({
188
179
  author: alice,
189
180
  messageCid: initialMessageCid
190
181
  });
191
- const messagesReadReply = yield dwn.processMessage(alice.did, message);
182
+ const messagesReadReply = await dwn.processMessage(alice.did, message);
192
183
  expect(messagesReadReply.status.code).toBe(200);
193
184
  expect(messagesReadReply.entry).toBeDefined();
194
185
  const messageReply = messagesReadReply.entry;
@@ -196,96 +187,104 @@ export function testMessagesReadHandler() {
196
187
  expect(messageReply.messageCid).toBe(initialMessageCid);
197
188
  expect(messageReply.message).toBeDefined();
198
189
  expect(messageReply.data).toBeUndefined();
199
- }));
190
+ });
200
191
  });
201
192
  });
202
193
  describe('Protocol interface messages', () => {
203
- it('returns a 401 if the tenant is not the author', () => __awaiter(this, void 0, void 0, function* () {
194
+ it('returns a 401 if the tenant is not the author', async () => {
204
195
  // scenario: Alice configures both a published and non-published protocol and writes it to her DWN.
205
196
  // Bob is unable to read either of the ProtocolConfigure messages because he is not the author.
206
- const alice = yield TestDataGenerator.generateDidKeyPersona();
207
- const bob = yield TestDataGenerator.generateDidKeyPersona();
197
+ const alice = await TestDataGenerator.generateDidKeyPersona();
198
+ const bob = await TestDataGenerator.generateDidKeyPersona();
208
199
  // unpublished protocol configuration
209
- const unpublishedProtocolDefinition = Object.assign(Object.assign({}, minimalProtocolDefinition), { protocol: 'http://example.com/protocol/unpublished', published: false });
210
- const { message: unpublishedProtocolsConfigure } = yield TestDataGenerator.generateProtocolsConfigure({
200
+ const unpublishedProtocolDefinition = {
201
+ ...minimalProtocolDefinition,
202
+ protocol: 'http://example.com/protocol/unpublished',
203
+ published: false
204
+ };
205
+ const { message: unpublishedProtocolsConfigure } = await TestDataGenerator.generateProtocolsConfigure({
211
206
  author: alice,
212
207
  protocolDefinition: unpublishedProtocolDefinition
213
208
  });
214
- const unpublishedProtocolsConfigureReply = yield dwn.processMessage(alice.did, unpublishedProtocolsConfigure);
209
+ const unpublishedProtocolsConfigureReply = await dwn.processMessage(alice.did, unpublishedProtocolsConfigure);
215
210
  expect(unpublishedProtocolsConfigureReply.status.code).toBe(202);
216
211
  // published protocol configuration
217
- const publishedProtocolDefinition = Object.assign(Object.assign({}, minimalProtocolDefinition), { protocol: 'http://example.com/protocol/published', published: true });
218
- const { message: publishedProtocolsConfigure } = yield TestDataGenerator.generateProtocolsConfigure({
212
+ const publishedProtocolDefinition = {
213
+ ...minimalProtocolDefinition,
214
+ protocol: 'http://example.com/protocol/published',
215
+ published: true
216
+ };
217
+ const { message: publishedProtocolsConfigure } = await TestDataGenerator.generateProtocolsConfigure({
219
218
  author: alice,
220
219
  protocolDefinition: publishedProtocolDefinition
221
220
  });
222
- const publishedProtocolsConfigureReply = yield dwn.processMessage(alice.did, publishedProtocolsConfigure);
221
+ const publishedProtocolsConfigureReply = await dwn.processMessage(alice.did, publishedProtocolsConfigure);
223
222
  expect(publishedProtocolsConfigureReply.status.code).toBe(202);
224
223
  // get the message CIDs
225
- const unpublishedProtocolMessageCid = yield Message.getCid(unpublishedProtocolsConfigure);
226
- const publishedProtocolMessageCid = yield Message.getCid(publishedProtocolsConfigure);
224
+ const unpublishedProtocolMessageCid = await Message.getCid(unpublishedProtocolsConfigure);
225
+ const publishedProtocolMessageCid = await Message.getCid(publishedProtocolsConfigure);
227
226
  // bob attempts to read the unpublished protocol configuration
228
- const { message: getUnpublishedProtocolConfigure } = yield TestDataGenerator.generateMessagesRead({
227
+ const { message: getUnpublishedProtocolConfigure } = await TestDataGenerator.generateMessagesRead({
229
228
  author: bob,
230
229
  messageCid: unpublishedProtocolMessageCid,
231
230
  });
232
- const getUnpublishedProtocolConfigureReply = yield dwn.processMessage(alice.did, getUnpublishedProtocolConfigure);
231
+ const getUnpublishedProtocolConfigureReply = await dwn.processMessage(alice.did, getUnpublishedProtocolConfigure);
233
232
  expect(getUnpublishedProtocolConfigureReply.status.code).toBe(401);
234
233
  expect(getUnpublishedProtocolConfigureReply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
235
234
  expect(getUnpublishedProtocolConfigureReply.entry).toBeUndefined();
236
235
  // bob attempts to read the published protocol configuration
237
- const { message: getPublishedProtocolConfigure } = yield TestDataGenerator.generateMessagesRead({
236
+ const { message: getPublishedProtocolConfigure } = await TestDataGenerator.generateMessagesRead({
238
237
  author: bob,
239
238
  messageCid: publishedProtocolMessageCid,
240
239
  });
241
- const getPublishedProtocolConfigureReply = yield dwn.processMessage(alice.did, getPublishedProtocolConfigure);
240
+ const getPublishedProtocolConfigureReply = await dwn.processMessage(alice.did, getPublishedProtocolConfigure);
242
241
  expect(getPublishedProtocolConfigureReply.status.code).toBe(401);
243
242
  expect(getPublishedProtocolConfigureReply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
244
243
  expect(getPublishedProtocolConfigureReply.entry).toBeUndefined();
245
244
  // control: alice is able to read both the published and unpublished protocol configurations
246
- const { message: getUnpublishedProtocolConfigureAlice } = yield TestDataGenerator.generateMessagesRead({
245
+ const { message: getUnpublishedProtocolConfigureAlice } = await TestDataGenerator.generateMessagesRead({
247
246
  author: alice,
248
247
  messageCid: unpublishedProtocolMessageCid,
249
248
  });
250
- const getUnpublishedProtocolConfigureAliceReply = yield dwn.processMessage(alice.did, getUnpublishedProtocolConfigureAlice);
249
+ const getUnpublishedProtocolConfigureAliceReply = await dwn.processMessage(alice.did, getUnpublishedProtocolConfigureAlice);
251
250
  expect(getUnpublishedProtocolConfigureAliceReply.status.code).toBe(200);
252
251
  expect(getUnpublishedProtocolConfigureAliceReply.entry).toBeDefined();
253
252
  expect(getUnpublishedProtocolConfigureAliceReply.entry.messageCid).toBe(unpublishedProtocolMessageCid);
254
253
  expect(getUnpublishedProtocolConfigureAliceReply.entry.message).toEqual(unpublishedProtocolsConfigure);
255
- const { message: getPublishedProtocolConfigureAlice } = yield TestDataGenerator.generateMessagesRead({
254
+ const { message: getPublishedProtocolConfigureAlice } = await TestDataGenerator.generateMessagesRead({
256
255
  author: alice,
257
256
  messageCid: publishedProtocolMessageCid,
258
257
  });
259
- const getPublishedProtocolConfigureAliceReply = yield dwn.processMessage(alice.did, getPublishedProtocolConfigureAlice);
258
+ const getPublishedProtocolConfigureAliceReply = await dwn.processMessage(alice.did, getPublishedProtocolConfigureAlice);
260
259
  expect(getPublishedProtocolConfigureAliceReply.status.code).toBe(200);
261
260
  expect(getPublishedProtocolConfigureAliceReply.entry).toBeDefined();
262
261
  expect(getPublishedProtocolConfigureAliceReply.entry.messageCid).toBe(publishedProtocolMessageCid);
263
262
  expect(getPublishedProtocolConfigureAliceReply.entry.message).toEqual(publishedProtocolsConfigure);
264
- }));
263
+ });
265
264
  });
266
265
  });
267
266
  describe('with a grant', () => {
268
- it('returns a 401 if grant has different DWN interface scope', () => __awaiter(this, void 0, void 0, function* () {
267
+ it('returns a 401 if grant has different DWN interface scope', async () => {
269
268
  // scenario: Alice grants Bob access to RecordsWrite, then Bob tries to invoke the grant with MessagesRead
270
- const alice = yield TestDataGenerator.generateDidKeyPersona();
271
- const bob = yield TestDataGenerator.generateDidKeyPersona();
269
+ const alice = await TestDataGenerator.generateDidKeyPersona();
270
+ const bob = await TestDataGenerator.generateDidKeyPersona();
272
271
  // alice installs a protocol
273
- const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
272
+ const protocolsConfig = await TestDataGenerator.generateProtocolsConfigure({
274
273
  author: alice,
275
274
  protocolDefinition: minimalProtocolDefinition
276
275
  });
277
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
276
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
278
277
  expect(protocolsConfigureReply.status.code).toBe(202);
279
278
  // Alice writes a record which Bob will later try to read
280
- const { recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({
279
+ const { recordsWrite, dataStream } = await TestDataGenerator.generateRecordsWrite({
281
280
  author: alice,
282
281
  protocol: minimalProtocolDefinition.protocol,
283
282
  protocolPath: 'foo',
284
283
  });
285
- const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
284
+ const recordsWriteReply = await dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
286
285
  expect(recordsWriteReply.status.code).toBe(202);
287
286
  // Alice gives Bob a permission grant scoped to a RecordsWrite and the protocol
288
- const permissionGrant = yield PermissionsProtocol.createGrant({
287
+ const permissionGrant = await PermissionsProtocol.createGrant({
289
288
  signer: Jws.createSigner(alice),
290
289
  grantedTo: bob.did,
291
290
  dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }), // 24 hours
@@ -296,32 +295,32 @@ export function testMessagesReadHandler() {
296
295
  }
297
296
  });
298
297
  const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
299
- const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
298
+ const permissionGrantWriteReply = await dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
300
299
  expect(permissionGrantWriteReply.status.code).toBe(202);
301
300
  // Bob tries to MessagesRead using the RecordsWrite grant
302
- const messagesRead = yield TestDataGenerator.generateMessagesRead({
301
+ const messagesRead = await TestDataGenerator.generateMessagesRead({
303
302
  author: bob,
304
- messageCid: yield Message.getCid(recordsWrite.message),
303
+ messageCid: await Message.getCid(recordsWrite.message),
305
304
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
306
305
  });
307
- const messagesReadReply = yield dwn.processMessage(alice.did, messagesRead.message);
306
+ const messagesReadReply = await dwn.processMessage(alice.did, messagesRead.message);
308
307
  expect(messagesReadReply.status.code).toBe(401);
309
308
  expect(messagesReadReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationInterfaceMismatch);
310
- }));
311
- it('allows external parties to read a message using a grant with unrestricted scope', () => __awaiter(this, void 0, void 0, function* () {
309
+ });
310
+ it('allows external parties to read a message using a grant with unrestricted scope', async () => {
312
311
  // scenario: Alice gives Bob a grant allowing him to read any message in her DWN.
313
312
  // Bob invokes that grant to read a message.
314
- const alice = yield TestDataGenerator.generateDidKeyPersona();
315
- const bob = yield TestDataGenerator.generateDidKeyPersona();
313
+ const alice = await TestDataGenerator.generateDidKeyPersona();
314
+ const bob = await TestDataGenerator.generateDidKeyPersona();
316
315
  // Alice writes a record to her DWN
317
- const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({
316
+ const { message, dataStream } = await TestDataGenerator.generateRecordsWrite({
318
317
  author: alice,
319
318
  });
320
- const writeReply = yield dwn.processMessage(alice.did, message, { dataStream });
319
+ const writeReply = await dwn.processMessage(alice.did, message, { dataStream });
321
320
  expect(writeReply.status.code).toBe(202);
322
- const messageCid = yield Message.getCid(message);
321
+ const messageCid = await Message.getCid(message);
323
322
  // Alice issues a permission grant allowing Bob to read any record in her DWN
324
- const permissionGrant = yield PermissionsProtocol.createGrant({
323
+ const permissionGrant = await PermissionsProtocol.createGrant({
325
324
  signer: Jws.createSigner(alice),
326
325
  grantedTo: bob.did,
327
326
  dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }), // 24 hours
@@ -331,21 +330,21 @@ export function testMessagesReadHandler() {
331
330
  }
332
331
  });
333
332
  const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
334
- const grantReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
333
+ const grantReply = await dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
335
334
  expect(grantReply.status.code).toBe(202);
336
335
  // Bob invokes that grant to read a record from Alice's DWN
337
- const messagesRead = yield TestDataGenerator.generateMessagesRead({
336
+ const messagesRead = await TestDataGenerator.generateMessagesRead({
338
337
  author: bob,
339
338
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
340
339
  messageCid,
341
340
  });
342
- const readReply = yield dwn.processMessage(alice.did, messagesRead.message);
341
+ const readReply = await dwn.processMessage(alice.did, messagesRead.message);
343
342
  expect(readReply.status.code).toBe(200);
344
343
  expect(readReply.entry).toBeDefined();
345
344
  expect(readReply.entry.messageCid).toBe(messageCid);
346
- }));
345
+ });
347
346
  describe('protocol scoped messages', () => {
348
- it('allows reads of protocol messages with a protocol restricted grant scope', () => __awaiter(this, void 0, void 0, function* () {
347
+ it('allows reads of protocol messages with a protocol restricted grant scope', async () => {
349
348
  // This test will verify that a grant scoped to a specific protocol will allow a user to read messages associated with that protocol.
350
349
  // These messages include the ProtocolConfiguration itself, even if not published,
351
350
  // any RecordsWrite or RecordsDelete messages associated with the protocol,
@@ -358,20 +357,20 @@ export function testMessagesReadHandler() {
358
357
  // Alice revokes the grant to Carol.
359
358
  // Bob invokes his grant to read the various messages.
360
359
  // As a control, Alice writes a record not associated with the protocol and Bob tries to unsuccessfully read it.
361
- const alice = yield TestDataGenerator.generateDidKeyPersona();
362
- const bob = yield TestDataGenerator.generateDidKeyPersona();
363
- const carol = yield TestDataGenerator.generateDidKeyPersona();
364
- const protocolDefinition = Object.assign(Object.assign({}, minimalProtocolDefinition), { published: false });
360
+ const alice = await TestDataGenerator.generateDidKeyPersona();
361
+ const bob = await TestDataGenerator.generateDidKeyPersona();
362
+ const carol = await TestDataGenerator.generateDidKeyPersona();
363
+ const protocolDefinition = { ...minimalProtocolDefinition, published: false };
365
364
  // Alice installs the unpublished protocol
366
- const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
365
+ const protocolsConfig = await TestDataGenerator.generateProtocolsConfigure({
367
366
  author: alice,
368
367
  protocolDefinition
369
368
  });
370
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
369
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
371
370
  expect(protocolsConfigureReply.status.code).toBe(202);
372
- const protocolConfigureMessageCid = yield Message.getCid(protocolsConfig.message);
371
+ const protocolConfigureMessageCid = await Message.getCid(protocolsConfig.message);
373
372
  // Carol requests a grant to write records to the protocol
374
- const permissionRequestCarol = yield PermissionsProtocol.createRequest({
373
+ const permissionRequestCarol = await PermissionsProtocol.createRequest({
375
374
  signer: Jws.createSigner(alice),
376
375
  delegated: false,
377
376
  scope: {
@@ -381,10 +380,10 @@ export function testMessagesReadHandler() {
381
380
  }
382
381
  });
383
382
  const requestDataStreamCarol = DataStream.fromBytes(permissionRequestCarol.permissionRequestBytes);
384
- const permissionRequestWriteReplyCarol = yield dwn.processMessage(alice.did, permissionRequestCarol.recordsWrite.message, { dataStream: requestDataStreamCarol });
383
+ const permissionRequestWriteReplyCarol = await dwn.processMessage(alice.did, permissionRequestCarol.recordsWrite.message, { dataStream: requestDataStreamCarol });
385
384
  expect(permissionRequestWriteReplyCarol.status.code).toBe(202);
386
385
  // Alice gives Carol a grant to write records to the protocol
387
- const permissionGrantCarol = yield PermissionsProtocol.createGrant({
386
+ const permissionGrantCarol = await PermissionsProtocol.createGrant({
388
387
  signer: Jws.createSigner(alice),
389
388
  grantedTo: carol.did,
390
389
  dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }), // 24 hours
@@ -392,45 +391,45 @@ export function testMessagesReadHandler() {
392
391
  scope: permissionRequestCarol.permissionRequestData.scope,
393
392
  });
394
393
  const grantDataStreamCarol = DataStream.fromBytes(permissionGrantCarol.permissionGrantBytes);
395
- const permissionGrantWriteReplyCarol = yield dwn.processMessage(alice.did, permissionGrantCarol.recordsWrite.message, { dataStream: grantDataStreamCarol });
394
+ const permissionGrantWriteReplyCarol = await dwn.processMessage(alice.did, permissionGrantCarol.recordsWrite.message, { dataStream: grantDataStreamCarol });
396
395
  expect(permissionGrantWriteReplyCarol.status.code).toBe(202);
397
- const carolGrantMessageCiD = yield Message.getCid(permissionGrantCarol.recordsWrite.message);
396
+ const carolGrantMessageCiD = await Message.getCid(permissionGrantCarol.recordsWrite.message);
398
397
  // Alice writes a record associated with the protocol
399
- const { recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({
398
+ const { recordsWrite, dataStream } = await TestDataGenerator.generateRecordsWrite({
400
399
  author: alice,
401
400
  protocol: protocolDefinition.protocol,
402
401
  protocolPath: 'foo',
403
402
  });
404
- const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
403
+ const recordsWriteReply = await dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
405
404
  expect(recordsWriteReply.status.code).toBe(202);
406
- const aliceRecordMessageCid = yield Message.getCid(recordsWrite.message);
405
+ const aliceRecordMessageCid = await Message.getCid(recordsWrite.message);
407
406
  // Alice deletes a record associated with the protocol
408
- const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
407
+ const recordsDelete = await TestDataGenerator.generateRecordsDelete({
409
408
  author: alice,
410
409
  recordId: recordsWrite.message.recordId,
411
410
  });
412
- const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
411
+ const recordsDeleteReply = await dwn.processMessage(alice.did, recordsDelete.message);
413
412
  expect(recordsDeleteReply.status.code).toBe(202);
414
413
  // Carol writes a record associated with the protocol
415
- const { recordsWrite: recordsWriteCarol, dataStream: dataStreamCarol } = yield TestDataGenerator.generateRecordsWrite({
414
+ const { recordsWrite: recordsWriteCarol, dataStream: dataStreamCarol } = await TestDataGenerator.generateRecordsWrite({
416
415
  author: carol,
417
416
  protocol: protocolDefinition.protocol,
418
417
  protocolPath: 'foo',
419
418
  permissionGrantId: permissionGrantCarol.recordsWrite.message.recordId,
420
419
  });
421
- const recordsWriteReplyCarol = yield dwn.processMessage(alice.did, recordsWriteCarol.message, { dataStream: dataStreamCarol });
420
+ const recordsWriteReplyCarol = await dwn.processMessage(alice.did, recordsWriteCarol.message, { dataStream: dataStreamCarol });
422
421
  expect(recordsWriteReplyCarol.status.code).toBe(202);
423
- const carolRecordMessageCid = yield Message.getCid(recordsWriteCarol.message);
422
+ const carolRecordMessageCid = await Message.getCid(recordsWriteCarol.message);
424
423
  // Alice revokes Carol's grant
425
- const permissionRevocationCarol = yield PermissionsProtocol.createRevocation({
424
+ const permissionRevocationCarol = await PermissionsProtocol.createRevocation({
426
425
  signer: Jws.createSigner(alice),
427
- grant: yield PermissionGrant.parse(permissionGrantCarol.dataEncodedMessage),
426
+ grant: await PermissionGrant.parse(permissionGrantCarol.dataEncodedMessage),
428
427
  });
429
428
  const permissionRevocationCarolDataStream = DataStream.fromBytes(permissionRevocationCarol.permissionRevocationBytes);
430
- const permissionRevocationCarolReply = yield dwn.processMessage(alice.did, permissionRevocationCarol.recordsWrite.message, { dataStream: permissionRevocationCarolDataStream });
429
+ const permissionRevocationCarolReply = await dwn.processMessage(alice.did, permissionRevocationCarol.recordsWrite.message, { dataStream: permissionRevocationCarolDataStream });
431
430
  expect(permissionRevocationCarolReply.status.code).toBe(202);
432
431
  // Alice gives Bob a permission grant with scope MessagesRead
433
- const permissionGrant = yield PermissionsProtocol.createGrant({
432
+ const permissionGrant = await PermissionsProtocol.createGrant({
434
433
  signer: Jws.createSigner(alice),
435
434
  grantedTo: bob.did,
436
435
  dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }), // 24 hours
@@ -441,14 +440,14 @@ export function testMessagesReadHandler() {
441
440
  }
442
441
  });
443
442
  const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
444
- const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
443
+ const permissionGrantWriteReply = await dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
445
444
  expect(permissionGrantWriteReply.status.code).toBe(202);
446
445
  // Bob is unable to read the message without using the permission grant
447
- const messagesReadWithoutGrant = yield TestDataGenerator.generateMessagesRead({
446
+ const messagesReadWithoutGrant = await TestDataGenerator.generateMessagesRead({
448
447
  author: bob,
449
448
  messageCid: aliceRecordMessageCid,
450
449
  });
451
- const messagesReadWithoutGrantReply = yield dwn.processMessage(alice.did, messagesReadWithoutGrant.message);
450
+ const messagesReadWithoutGrantReply = await dwn.processMessage(alice.did, messagesReadWithoutGrant.message);
452
451
  expect(messagesReadWithoutGrantReply.status.code).toBe(401);
453
452
  expect(messagesReadWithoutGrantReply.status.detail).toContain(DwnErrorCode.MessagesReadAuthorizationFailed);
454
453
  // Bob is able to read all the associated messages when using the permission grant
@@ -461,113 +460,113 @@ export function testMessagesReadHandler() {
461
460
  // - Carol's RecordsWrite
462
461
  // - Alice's Revocation of Carol's Grant
463
462
  // Protocol configuration
464
- const messagesReadProtocolConfigure = yield TestDataGenerator.generateMessagesRead({
463
+ const messagesReadProtocolConfigure = await TestDataGenerator.generateMessagesRead({
465
464
  author: bob,
466
465
  messageCid: protocolConfigureMessageCid,
467
466
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
468
467
  });
469
- const messagesReadProtocolConfigureReply = yield dwn.processMessage(alice.did, messagesReadProtocolConfigure.message);
468
+ const messagesReadProtocolConfigureReply = await dwn.processMessage(alice.did, messagesReadProtocolConfigure.message);
470
469
  expect(messagesReadProtocolConfigureReply.status.code).toBe(200);
471
470
  expect(messagesReadProtocolConfigureReply.entry).toBeDefined();
472
471
  expect(messagesReadProtocolConfigureReply.entry.message).toEqual(protocolsConfig.message);
473
472
  // alice RecordsWrite
474
- const messagesReadWithGrant = yield TestDataGenerator.generateMessagesRead({
473
+ const messagesReadWithGrant = await TestDataGenerator.generateMessagesRead({
475
474
  author: bob,
476
475
  messageCid: aliceRecordMessageCid,
477
476
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
478
477
  });
479
- const messagesReadWithGrantReply = yield dwn.processMessage(alice.did, messagesReadWithGrant.message);
478
+ const messagesReadWithGrantReply = await dwn.processMessage(alice.did, messagesReadWithGrant.message);
480
479
  expect(messagesReadWithGrantReply.status.code).toBe(200);
481
480
  expect(messagesReadWithGrantReply.entry).toBeDefined();
482
481
  expect(messagesReadWithGrantReply.entry.message).toEqual(recordsWrite.message);
483
482
  // alice RecordsDelete
484
- const messagesReadDelete = yield TestDataGenerator.generateMessagesRead({
483
+ const messagesReadDelete = await TestDataGenerator.generateMessagesRead({
485
484
  author: bob,
486
- messageCid: yield Message.getCid(recordsDelete.message),
485
+ messageCid: await Message.getCid(recordsDelete.message),
487
486
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
488
487
  });
489
- const messagesReadDeleteReply = yield dwn.processMessage(alice.did, messagesReadDelete.message);
488
+ const messagesReadDeleteReply = await dwn.processMessage(alice.did, messagesReadDelete.message);
490
489
  expect(messagesReadDeleteReply.status.code).toBe(200);
491
490
  expect(messagesReadDeleteReply.entry).toBeDefined();
492
491
  expect(messagesReadDeleteReply.entry.message).toEqual(recordsDelete.message);
493
492
  // carol's Permission Request
494
- const messagesReadCarolRequest = yield TestDataGenerator.generateMessagesRead({
493
+ const messagesReadCarolRequest = await TestDataGenerator.generateMessagesRead({
495
494
  author: bob,
496
- messageCid: yield Message.getCid(permissionRequestCarol.recordsWrite.message),
495
+ messageCid: await Message.getCid(permissionRequestCarol.recordsWrite.message),
497
496
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
498
497
  });
499
- const messagesReadCarolRequestReply = yield dwn.processMessage(alice.did, messagesReadCarolRequest.message);
498
+ const messagesReadCarolRequestReply = await dwn.processMessage(alice.did, messagesReadCarolRequest.message);
500
499
  expect(messagesReadCarolRequestReply.status.code).toBe(200);
501
500
  expect(messagesReadCarolRequestReply.entry).toBeDefined();
502
501
  expect(messagesReadCarolRequestReply.entry.message).toEqual(permissionRequestCarol.recordsWrite.message);
503
502
  // carol's Permission Grant
504
- const messagesReadCarolGrant = yield TestDataGenerator.generateMessagesRead({
503
+ const messagesReadCarolGrant = await TestDataGenerator.generateMessagesRead({
505
504
  author: bob,
506
505
  messageCid: carolGrantMessageCiD,
507
506
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
508
507
  });
509
- const messagesReadCarolGrantReply = yield dwn.processMessage(alice.did, messagesReadCarolGrant.message);
508
+ const messagesReadCarolGrantReply = await dwn.processMessage(alice.did, messagesReadCarolGrant.message);
510
509
  expect(messagesReadCarolGrantReply.status.code).toBe(200);
511
510
  expect(messagesReadCarolGrantReply.entry).toBeDefined();
512
511
  expect(messagesReadCarolGrantReply.entry.message).toEqual(permissionGrantCarol.recordsWrite.message);
513
512
  // carol's RecordsWrite
514
- const messagesReadCarolRecord = yield TestDataGenerator.generateMessagesRead({
513
+ const messagesReadCarolRecord = await TestDataGenerator.generateMessagesRead({
515
514
  author: bob,
516
515
  messageCid: carolRecordMessageCid,
517
516
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
518
517
  });
519
- const messagesReadCarolRecordReply = yield dwn.processMessage(alice.did, messagesReadCarolRecord.message);
518
+ const messagesReadCarolRecordReply = await dwn.processMessage(alice.did, messagesReadCarolRecord.message);
520
519
  expect(messagesReadCarolRecordReply.status.code).toBe(200);
521
520
  expect(messagesReadCarolRecordReply.entry).toBeDefined();
522
521
  expect(messagesReadCarolRecordReply.entry.message).toEqual(recordsWriteCarol.message);
523
522
  // carol's Grant Revocation
524
- const messagesReadCarolGrantRevocation = yield TestDataGenerator.generateMessagesRead({
523
+ const messagesReadCarolGrantRevocation = await TestDataGenerator.generateMessagesRead({
525
524
  author: bob,
526
- messageCid: yield Message.getCid(permissionRevocationCarol.recordsWrite.message),
525
+ messageCid: await Message.getCid(permissionRevocationCarol.recordsWrite.message),
527
526
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
528
527
  });
529
- const messagesReadCarolGrantRevocationReply = yield dwn.processMessage(alice.did, messagesReadCarolGrantRevocation.message);
528
+ const messagesReadCarolGrantRevocationReply = await dwn.processMessage(alice.did, messagesReadCarolGrantRevocation.message);
530
529
  expect(messagesReadCarolGrantRevocationReply.status.code).toBe(200);
531
530
  expect(messagesReadCarolGrantRevocationReply.entry).toBeDefined();
532
531
  expect(messagesReadCarolGrantRevocationReply.entry.message).toEqual(permissionRevocationCarol.recordsWrite.message);
533
532
  // CONTROL: Alice writes a record not associated with the protocol
534
- const { recordsWrite: recordsWriteControl, dataStream: dataStreamControl } = yield TestDataGenerator.generateRecordsWrite({
533
+ const { recordsWrite: recordsWriteControl, dataStream: dataStreamControl } = await TestDataGenerator.generateRecordsWrite({
535
534
  author: alice,
536
535
  });
537
- const recordsWriteControlReply = yield dwn.processMessage(alice.did, recordsWriteControl.message, { dataStream: dataStreamControl });
536
+ const recordsWriteControlReply = await dwn.processMessage(alice.did, recordsWriteControl.message, { dataStream: dataStreamControl });
538
537
  expect(recordsWriteControlReply.status.code).toBe(202);
539
538
  // Bob is unable to read the control message
540
- const messagesReadControl = yield TestDataGenerator.generateMessagesRead({
539
+ const messagesReadControl = await TestDataGenerator.generateMessagesRead({
541
540
  author: bob,
542
- messageCid: yield Message.getCid(recordsWriteControl.message),
541
+ messageCid: await Message.getCid(recordsWriteControl.message),
543
542
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
544
543
  });
545
- const messagesReadControlReply = yield dwn.processMessage(alice.did, messagesReadControl.message);
544
+ const messagesReadControlReply = await dwn.processMessage(alice.did, messagesReadControl.message);
546
545
  expect(messagesReadControlReply.status.code).toBe(401);
547
- }));
548
- it('rejects message read of protocol messages with mismatching protocol grant scopes', () => __awaiter(this, void 0, void 0, function* () {
546
+ });
547
+ it('rejects message read of protocol messages with mismatching protocol grant scopes', async () => {
549
548
  // scenario: Alice writes a protocol record. Alice gives Bob a grant to read messages from a different protocol
550
549
  // Bob invokes that grant to read the protocol message, but fails.
551
- const alice = yield TestDataGenerator.generateDidKeyPersona();
552
- const bob = yield TestDataGenerator.generateDidKeyPersona();
550
+ const alice = await TestDataGenerator.generateDidKeyPersona();
551
+ const bob = await TestDataGenerator.generateDidKeyPersona();
553
552
  const protocolDefinition = minimalProtocolDefinition;
554
553
  // Alice installs the protocol
555
- const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
554
+ const protocolsConfig = await TestDataGenerator.generateProtocolsConfigure({
556
555
  author: alice,
557
556
  protocolDefinition
558
557
  });
559
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
558
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
560
559
  expect(protocolsConfigureReply.status.code).toBe(202);
561
560
  // Alice writes a record which Bob will later try to read
562
- const { recordsWrite, dataStream } = yield TestDataGenerator.generateRecordsWrite({
561
+ const { recordsWrite, dataStream } = await TestDataGenerator.generateRecordsWrite({
563
562
  author: alice,
564
563
  protocol: protocolDefinition.protocol,
565
564
  protocolPath: 'foo',
566
565
  });
567
- const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
566
+ const recordsWriteReply = await dwn.processMessage(alice.did, recordsWrite.message, { dataStream });
568
567
  expect(recordsWriteReply.status.code).toBe(202);
569
568
  // Alice gives Bob a permission grant with scope MessagesRead
570
- const permissionGrant = yield PermissionsProtocol.createGrant({
569
+ const permissionGrant = await PermissionsProtocol.createGrant({
571
570
  signer: Jws.createSigner(alice),
572
571
  grantedTo: bob.did,
573
572
  dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }), // 24 hours
@@ -578,32 +577,32 @@ export function testMessagesReadHandler() {
578
577
  }
579
578
  });
580
579
  const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
581
- const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
580
+ const permissionGrantWriteReply = await dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
582
581
  expect(permissionGrantWriteReply.status.code).toBe(202);
583
582
  // Bob is unable to read the record using the mismatched permission grant
584
- const messagesReadWithoutGrant = yield TestDataGenerator.generateMessagesRead({
583
+ const messagesReadWithoutGrant = await TestDataGenerator.generateMessagesRead({
585
584
  author: bob,
586
- messageCid: yield Message.getCid(recordsWrite.message),
585
+ messageCid: await Message.getCid(recordsWrite.message),
587
586
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
588
587
  });
589
- const messagesReadWithoutGrantReply = yield dwn.processMessage(alice.did, messagesReadWithoutGrant.message);
588
+ const messagesReadWithoutGrantReply = await dwn.processMessage(alice.did, messagesReadWithoutGrant.message);
590
589
  expect(messagesReadWithoutGrantReply.status.code).toBe(401);
591
590
  expect(messagesReadWithoutGrantReply.status.detail).toContain(DwnErrorCode.MessagesReadVerifyScopeFailed);
592
- }));
593
- it('rejects message if the RecordsWrite message is not found for a RecordsDelete being retrieved', () => __awaiter(this, void 0, void 0, function* () {
591
+ });
592
+ it('rejects message if the RecordsWrite message is not found for a RecordsDelete being retrieved', async () => {
594
593
  // NOTE: This is a corner case that is unlikely to happen in practice, but is tested for completeness
595
- const alice = yield TestDataGenerator.generateDidKeyPersona();
596
- const bob = yield TestDataGenerator.generateDidKeyPersona();
594
+ const alice = await TestDataGenerator.generateDidKeyPersona();
595
+ const bob = await TestDataGenerator.generateDidKeyPersona();
597
596
  const protocolDefinition = minimalProtocolDefinition;
598
597
  // Alice installs the protocol
599
- const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
598
+ const protocolsConfig = await TestDataGenerator.generateProtocolsConfigure({
600
599
  author: alice,
601
600
  protocolDefinition,
602
601
  });
603
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
602
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
604
603
  expect(protocolsConfigureReply.status.code).toBe(202);
605
604
  // Alice gives bob a grant to read messages in the protocol
606
- const permissionGrant = yield PermissionsProtocol.createGrant({
605
+ const permissionGrant = await PermissionsProtocol.createGrant({
607
606
  signer: Jws.createSigner(alice),
608
607
  grantedTo: bob.did,
609
608
  dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }), // 24 hours
@@ -614,32 +613,32 @@ export function testMessagesReadHandler() {
614
613
  }
615
614
  });
616
615
  const grantDataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
617
- const permissionGrantWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
616
+ const permissionGrantWriteReply = await dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream: grantDataStream });
618
617
  expect(permissionGrantWriteReply.status.code).toBe(202);
619
618
  // Alice creates the records write and records delete messages
620
- const { recordsWrite } = yield TestDataGenerator.generateRecordsWrite({
619
+ const { recordsWrite } = await TestDataGenerator.generateRecordsWrite({
621
620
  author: alice,
622
621
  protocol: protocolDefinition.protocol,
623
622
  protocolPath: 'foo',
624
623
  });
625
- const { recordsDelete } = yield TestDataGenerator.generateRecordsDelete({
624
+ const { recordsDelete } = await TestDataGenerator.generateRecordsDelete({
626
625
  author: alice,
627
626
  recordId: recordsWrite.message.recordId,
628
627
  });
629
628
  // Alice inserts the RecordsDelete message directly into the message store
630
- const recordsDeleteCid = yield Message.getCid(recordsDelete.message);
629
+ const recordsDeleteCid = await Message.getCid(recordsDelete.message);
631
630
  const indexes = recordsDelete.constructIndexes(recordsWrite.message);
632
- yield messageStore.put(alice.did, recordsDelete.message, indexes);
631
+ await messageStore.put(alice.did, recordsDelete.message, indexes);
633
632
  // Bob tries to read the message
634
- const messagesRead = yield TestDataGenerator.generateMessagesRead({
633
+ const messagesRead = await TestDataGenerator.generateMessagesRead({
635
634
  author: bob,
636
635
  messageCid: recordsDeleteCid,
637
636
  permissionGrantId: permissionGrant.recordsWrite.message.recordId,
638
637
  });
639
- const messagesReadReply = yield dwn.processMessage(alice.did, messagesRead.message);
638
+ const messagesReadReply = await dwn.processMessage(alice.did, messagesRead.message);
640
639
  expect(messagesReadReply.status.code).toBe(401);
641
640
  expect(messagesReadReply.status.detail).toContain(DwnErrorCode.RecordsWriteGetNewestWriteRecordNotFound);
642
- }));
641
+ });
643
642
  });
644
643
  });
645
644
  });