@enbox/dwn-sdk-js 0.0.6 → 0.0.8

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