@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 minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' with { type: 'json' };
11
2
  import sinon from 'sinon';
12
3
  import { DataStream } from '../../src/utils/data-stream.js';
@@ -33,7 +24,7 @@ export function testOwnerDelegatedGrant() {
33
24
  let dwn;
34
25
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
35
26
  // so that different test suites can reuse the same backend store for testing
36
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
27
+ beforeAll(async () => {
37
28
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
38
29
  const stores = TestStores.get();
39
30
  messageStore = stores.messageStore;
@@ -41,31 +32,31 @@ export function testOwnerDelegatedGrant() {
41
32
  resumableTaskStore = stores.resumableTaskStore;
42
33
  stateIndex = stores.stateIndex;
43
34
  eventStream = TestEventStream.get();
44
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
45
- }));
46
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
35
+ dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
36
+ });
37
+ beforeEach(async () => {
47
38
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
48
39
  // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
49
- yield messageStore.clear();
50
- yield dataStore.clear();
51
- yield resumableTaskStore.clear();
52
- yield stateIndex.clear();
53
- }));
54
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
55
- yield dwn.close();
56
- }));
40
+ await messageStore.clear();
41
+ await dataStore.clear();
42
+ await resumableTaskStore.clear();
43
+ await stateIndex.clear();
44
+ });
45
+ afterAll(async () => {
46
+ await dwn.close();
47
+ });
57
48
  describe('RecordsWrite.parse()', () => {
58
- it('should throw if a message invokes an owner-delegated grant (ID) but the owner-delegated grant is not given', () => __awaiter(this, void 0, void 0, function* () {
59
- const alice = yield TestDataGenerator.generatePersona();
60
- const bob = yield TestDataGenerator.generatePersona();
61
- const appX = yield TestDataGenerator.generatePersona();
49
+ it('should throw if a message invokes an owner-delegated grant (ID) but the owner-delegated grant is not given', async () => {
50
+ const alice = await TestDataGenerator.generatePersona();
51
+ const bob = await TestDataGenerator.generatePersona();
52
+ const appX = await TestDataGenerator.generatePersona();
62
53
  // Alice grants App X to write as her for the chat protocol
63
54
  const scope = {
64
55
  interface: DwnInterfaceName.Records,
65
56
  method: DwnMethodName.Write,
66
57
  protocol: 'chat'
67
58
  };
68
- const grantToAppX = yield PermissionsProtocol.createGrant({
59
+ const grantToAppX = await PermissionsProtocol.createGrant({
69
60
  delegated: true, // this is a delegated grant
70
61
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
71
62
  description: 'Allow App X to write as me in chat protocol',
@@ -74,28 +65,28 @@ export function testOwnerDelegatedGrant() {
74
65
  signer: Jws.createSigner(alice)
75
66
  });
76
67
  // Bob creates a RecordsWrite message
77
- const recordsWrite = yield RecordsWrite.create({
68
+ const recordsWrite = await RecordsWrite.create({
78
69
  signer: Jws.createSigner(bob),
79
70
  dataFormat: 'application/octet-stream',
80
71
  data: TestDataGenerator.randomBytes(10),
81
72
  });
82
73
  // App X signs over Bob's RecordsWrite as DWN owner but does not include the delegated grant (we remove it below)
83
- yield recordsWrite.signAsOwnerDelegate(Jws.createSigner(appX), grantToAppX.dataEncodedMessage);
74
+ await recordsWrite.signAsOwnerDelegate(Jws.createSigner(appX), grantToAppX.dataEncodedMessage);
84
75
  delete recordsWrite.message.authorization.ownerDelegatedGrant; // intentionally remove `ownerDelegatedGrant`
85
76
  const parsePromise = RecordsWrite.parse(recordsWrite.message);
86
- yield expect(parsePromise).rejects.toThrow(DwnErrorCode.RecordsOwnerDelegatedGrantAndIdExistenceMismatch);
87
- }));
88
- it('should throw if a message includes an owner-delegated grant but does not reference it in owner signature', () => __awaiter(this, void 0, void 0, function* () {
89
- const alice = yield TestDataGenerator.generatePersona();
90
- const bob = yield TestDataGenerator.generatePersona();
91
- const appX = yield TestDataGenerator.generatePersona();
77
+ await expect(parsePromise).rejects.toThrow(DwnErrorCode.RecordsOwnerDelegatedGrantAndIdExistenceMismatch);
78
+ });
79
+ it('should throw if a message includes an owner-delegated grant but does not reference it in owner signature', async () => {
80
+ const alice = await TestDataGenerator.generatePersona();
81
+ const bob = await TestDataGenerator.generatePersona();
82
+ const appX = await TestDataGenerator.generatePersona();
92
83
  // Alice grants App X to write as her for the chat protocol
93
84
  const scope = {
94
85
  interface: DwnInterfaceName.Records,
95
86
  method: DwnMethodName.Write,
96
87
  protocol: 'chat'
97
88
  };
98
- const grantToAppX = yield PermissionsProtocol.createGrant({
89
+ const grantToAppX = await PermissionsProtocol.createGrant({
99
90
  delegated: true, // this is a delegated grant
100
91
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
101
92
  description: 'Allow App X to write as me in chat protocol',
@@ -104,23 +95,22 @@ export function testOwnerDelegatedGrant() {
104
95
  signer: Jws.createSigner(alice)
105
96
  });
106
97
  // Bob creates a RecordsWrite message
107
- const recordsWrite = yield RecordsWrite.create({
98
+ const recordsWrite = await RecordsWrite.create({
108
99
  signer: Jws.createSigner(bob),
109
100
  dataFormat: 'application/octet-stream',
110
101
  data: TestDataGenerator.randomBytes(10),
111
102
  });
112
103
  // App X attempts to sign over Bob's RecordsWrite as the DWN owner by including an owner-delegated grant
113
104
  // but does not reference the grant ID in owner signature (we remove it below)
114
- yield recordsWrite.signAsOwnerDelegate(Jws.createSigner(appX), grantToAppX.dataEncodedMessage);
115
- const ownerSignaturePayloadCopy = Object.assign({}, recordsWrite.ownerSignaturePayload);
105
+ await recordsWrite.signAsOwnerDelegate(Jws.createSigner(appX), grantToAppX.dataEncodedMessage);
106
+ const ownerSignaturePayloadCopy = { ...recordsWrite.ownerSignaturePayload };
116
107
  delete ownerSignaturePayloadCopy.delegatedGrantId; // intentionally remove `delegatedGrantId` in ownerSignature
117
108
  recordsWrite.message.authorization.ownerSignature.payload = Encoder.stringToBase64Url(JSON.stringify(ownerSignaturePayloadCopy));
118
109
  const parsePromise = RecordsWrite.parse(recordsWrite.message);
119
- yield expect(parsePromise).rejects.toThrow(DwnErrorCode.RecordsOwnerDelegatedGrantAndIdExistenceMismatch);
120
- }));
110
+ await expect(parsePromise).rejects.toThrow(DwnErrorCode.RecordsOwnerDelegatedGrantAndIdExistenceMismatch);
111
+ });
121
112
  });
122
- it('should only allow correct entity invoking an owner-delegated grant to write', () => __awaiter(this, void 0, void 0, function* () {
123
- var _a;
113
+ it('should only allow correct entity invoking an owner-delegated grant to write', async () => {
124
114
  // scenario:
125
115
  // 1. Alice installs a protocol
126
116
  // 2. Alice creates a delegated grant for app X to write in the protocol
@@ -129,18 +119,18 @@ export function testOwnerDelegatedGrant() {
129
119
  // 5. Verify that App Y cannot write Bob's message in Alice's DWN by invoking the delegated grant for App X.
130
120
  // 6. Verify that App X can successfully write Bob's message in Alice's DWN by invoking an owner-delegated grant
131
121
  // 7. Sanity verify the RecordsWrite written by App X
132
- const alice = yield TestDataGenerator.generateDidKeyPersona();
133
- const bob = yield TestDataGenerator.generateDidKeyPersona();
134
- const appX = yield TestDataGenerator.generateDidKeyPersona();
135
- const appY = yield TestDataGenerator.generateDidKeyPersona();
122
+ const alice = await TestDataGenerator.generateDidKeyPersona();
123
+ const bob = await TestDataGenerator.generateDidKeyPersona();
124
+ const appX = await TestDataGenerator.generateDidKeyPersona();
125
+ const appY = await TestDataGenerator.generateDidKeyPersona();
136
126
  // 1. Alice installs a protocol
137
127
  const protocolDefinition = minimalProtocolDefinition;
138
128
  const protocol = minimalProtocolDefinition.protocol;
139
- const protocolsConfig = yield ProtocolsConfigure.create({
129
+ const protocolsConfig = await ProtocolsConfigure.create({
140
130
  signer: Jws.createSigner(alice),
141
131
  definition: protocolDefinition
142
132
  });
143
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
133
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
144
134
  expect(protocolsConfigureReply.status.code).toBe(202);
145
135
  // 2. Alice creates a delegated grant for app X to write in the protocol
146
136
  const scope = {
@@ -148,7 +138,7 @@ export function testOwnerDelegatedGrant() {
148
138
  method: DwnMethodName.Write,
149
139
  protocol
150
140
  };
151
- const appXGrant = yield PermissionsProtocol.createGrant({
141
+ const appXGrant = await PermissionsProtocol.createGrant({
152
142
  delegated: true, // this is a delegated grant
153
143
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
154
144
  grantedTo: appX.did,
@@ -157,7 +147,7 @@ export function testOwnerDelegatedGrant() {
157
147
  });
158
148
  // 3. A third party (Bob) authors a RecordsWrite
159
149
  const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
160
- const bobRecordsWrite = yield RecordsWrite.create({
150
+ const bobRecordsWrite = await RecordsWrite.create({
161
151
  signer: Jws.createSigner(bob),
162
152
  protocol,
163
153
  protocolPath: 'foo', // this comes from `types` in protocol definition
@@ -165,51 +155,50 @@ export function testOwnerDelegatedGrant() {
165
155
  data: bobRecordsWriteBytes
166
156
  });
167
157
  // 4. Sanity test that Bob's RecordsWrite cannot be written to Alice's DWN by itself
168
- const unauthorizedRecordsWriteReply = yield dwn.processMessage(alice.did, bobRecordsWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
158
+ const unauthorizedRecordsWriteReply = await dwn.processMessage(alice.did, bobRecordsWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
169
159
  expect(unauthorizedRecordsWriteReply.status.code).toBe(401);
170
160
  // 5. Verify that App Y cannot write Bob's message in Alice's DWN by invoking the delegated grant for App X.
171
- const appYAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
172
- yield appYAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appY), appXGrant.dataEncodedMessage);
173
- const appYWriteReply = yield dwn.processMessage(alice.did, appYAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
161
+ const appYAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
162
+ await appYAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appY), appXGrant.dataEncodedMessage);
163
+ const appYWriteReply = await dwn.processMessage(alice.did, appYAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
174
164
  expect(appYWriteReply.status.code).toBe(400);
175
165
  expect(appYWriteReply.status.detail).toContain(DwnErrorCode.RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch);
176
166
  // 6. Verify that App X can successfully write Bob's message in Alice's DWN by invoking an owner-delegated grant
177
- const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
178
- yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
179
- const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
167
+ const appXAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
168
+ await appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
169
+ const appXWriteReply = await dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
180
170
  expect(appXWriteReply.status.code).toBe(202);
181
171
  // 7. Sanity verify the RecordsWrite written by App X
182
- const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
172
+ const recordsQuery = await TestDataGenerator.generateRecordsQuery({
183
173
  author: alice,
184
174
  filter: { protocol }
185
175
  });
186
- const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
176
+ const recordsQueryReply = await dwn.processMessage(alice.did, recordsQuery.message);
187
177
  expect(recordsQueryReply.status.code).toBe(200);
188
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
178
+ expect(recordsQueryReply.entries?.length).toBe(1);
189
179
  const fetchedEntry = recordsQueryReply.entries[0];
190
180
  expect(fetchedEntry.encodedData).toBe(Encoder.bytesToBase64Url(bobRecordsWriteBytes));
191
- const fetchedRecordsWrite = yield RecordsWrite.parse(fetchedEntry);
181
+ const fetchedRecordsWrite = await RecordsWrite.parse(fetchedEntry);
192
182
  expect(fetchedRecordsWrite.author).toBe(bob.did);
193
- }));
194
- it('should not allow entity using a non-delegated grant as an owner-delegated grant to invoke write', () => __awaiter(this, void 0, void 0, function* () {
195
- var _a;
183
+ });
184
+ it('should not allow entity using a non-delegated grant as an owner-delegated grant to invoke write', async () => {
196
185
  // scenario:
197
186
  // 1. Alice installs a protocol
198
187
  // 2. Alice creates a non-delegated grant for app X to write in the protocol
199
188
  // 3. A third party (Bob) authors a RecordsWrite
200
189
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an non-delegated grant
201
190
  // 5. Sanity verify the RecordsWrite is not written by App X
202
- const alice = yield TestDataGenerator.generateDidKeyPersona();
203
- const bob = yield TestDataGenerator.generateDidKeyPersona();
204
- const appX = yield TestDataGenerator.generateDidKeyPersona();
191
+ const alice = await TestDataGenerator.generateDidKeyPersona();
192
+ const bob = await TestDataGenerator.generateDidKeyPersona();
193
+ const appX = await TestDataGenerator.generateDidKeyPersona();
205
194
  // 1. Alice installs a protocol
206
195
  const protocolDefinition = minimalProtocolDefinition;
207
196
  const protocol = minimalProtocolDefinition.protocol;
208
- const protocolsConfig = yield ProtocolsConfigure.create({
197
+ const protocolsConfig = await ProtocolsConfigure.create({
209
198
  signer: Jws.createSigner(alice),
210
199
  definition: protocolDefinition
211
200
  });
212
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
201
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
213
202
  expect(protocolsConfigureReply.status.code).toBe(202);
214
203
  // 2. Alice creates a non-delegated grant for app X to write in the protocol
215
204
  const scope = {
@@ -217,7 +206,7 @@ export function testOwnerDelegatedGrant() {
217
206
  method: DwnMethodName.Write,
218
207
  protocol
219
208
  };
220
- const appXGrant = yield PermissionsProtocol.createGrant({
209
+ const appXGrant = await PermissionsProtocol.createGrant({
221
210
  // delegated : true, // intentionally commented out to show that this is not a delegated grant
222
211
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
223
212
  grantedTo: appX.did,
@@ -226,7 +215,7 @@ export function testOwnerDelegatedGrant() {
226
215
  });
227
216
  // 3. A third party (Bob) authors a RecordsWrite
228
217
  const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
229
- const bobRecordsWrite = yield RecordsWrite.create({
218
+ const bobRecordsWrite = await RecordsWrite.create({
230
219
  signer: Jws.createSigner(bob),
231
220
  protocol,
232
221
  protocolPath: 'foo', // this comes from `types` in protocol definition
@@ -234,22 +223,21 @@ export function testOwnerDelegatedGrant() {
234
223
  data: bobRecordsWriteBytes
235
224
  });
236
225
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an non-delegated grant
237
- const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
238
- yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
239
- const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
226
+ const appXAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
227
+ await appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
228
+ const appXWriteReply = await dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
240
229
  expect(appXWriteReply.status.code).toBe(400);
241
230
  expect(appXWriteReply.status.detail).toContain(DwnErrorCode.RecordsOwnerDelegatedGrantNotADelegatedGrant);
242
231
  // 5. Sanity verify the RecordsWrite is not written by App X
243
- const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
232
+ const recordsQuery = await TestDataGenerator.generateRecordsQuery({
244
233
  author: alice,
245
234
  filter: { protocol }
246
235
  });
247
- const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
236
+ const recordsQueryReply = await dwn.processMessage(alice.did, recordsQuery.message);
248
237
  expect(recordsQueryReply.status.code).toBe(200);
249
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
250
- }));
251
- it('should fail if owner-delegated grant invoked for write has a mismatching interface method or protocol scope', () => __awaiter(this, void 0, void 0, function* () {
252
- var _a;
238
+ expect(recordsQueryReply.entries?.length).toBe(0);
239
+ });
240
+ it('should fail if owner-delegated grant invoked for write has a mismatching interface method or protocol scope', async () => {
253
241
  // scenario:
254
242
  // 1. Alice installs a protocol
255
243
  // 2. Alice creates a delegated grant for app X to read in the protocol
@@ -258,17 +246,17 @@ export function testOwnerDelegatedGrant() {
258
246
  // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for RecordsRead
259
247
  // 6. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for writing in another random protocol
260
248
  // 7. Sanity verify the RecordsWrite is not written by App X
261
- const alice = yield TestDataGenerator.generateDidKeyPersona();
262
- const bob = yield TestDataGenerator.generateDidKeyPersona();
263
- const appX = yield TestDataGenerator.generateDidKeyPersona();
249
+ const alice = await TestDataGenerator.generateDidKeyPersona();
250
+ const bob = await TestDataGenerator.generateDidKeyPersona();
251
+ const appX = await TestDataGenerator.generateDidKeyPersona();
264
252
  // 1. Alice installs a protocol
265
253
  const protocolDefinition = minimalProtocolDefinition;
266
254
  const protocol = minimalProtocolDefinition.protocol;
267
- const protocolsConfig = yield ProtocolsConfigure.create({
255
+ const protocolsConfig = await ProtocolsConfigure.create({
268
256
  signer: Jws.createSigner(alice),
269
257
  definition: protocolDefinition
270
258
  });
271
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
259
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
272
260
  expect(protocolsConfigureReply.status.code).toBe(202);
273
261
  // 2. Alice creates a delegated grant for app X to read in the protocol
274
262
  const readScope = {
@@ -276,7 +264,7 @@ export function testOwnerDelegatedGrant() {
276
264
  method: DwnMethodName.Read,
277
265
  protocol
278
266
  };
279
- const appXGrantToRead = yield PermissionsProtocol.createGrant({
267
+ const appXGrantToRead = await PermissionsProtocol.createGrant({
280
268
  delegated: true,
281
269
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
282
270
  grantedTo: appX.did,
@@ -289,7 +277,7 @@ export function testOwnerDelegatedGrant() {
289
277
  method: DwnMethodName.Write,
290
278
  protocol: `random-protocol`
291
279
  };
292
- const appXGrantToWriteInRandomProtocol = yield PermissionsProtocol.createGrant({
280
+ const appXGrantToWriteInRandomProtocol = await PermissionsProtocol.createGrant({
293
281
  delegated: true,
294
282
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
295
283
  grantedTo: appX.did,
@@ -298,7 +286,7 @@ export function testOwnerDelegatedGrant() {
298
286
  });
299
287
  // 4. A third party (Bob) authors a RecordsWrite
300
288
  const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
301
- const bobRecordsWrite = yield RecordsWrite.create({
289
+ const bobRecordsWrite = await RecordsWrite.create({
302
290
  signer: Jws.createSigner(bob),
303
291
  protocol,
304
292
  protocolPath: 'foo', // this comes from `types` in protocol definition
@@ -306,45 +294,44 @@ export function testOwnerDelegatedGrant() {
306
294
  data: bobRecordsWriteBytes
307
295
  });
308
296
  // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for RecordsRead
309
- const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
310
- yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantToRead.dataEncodedMessage);
311
- const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
297
+ const appXAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
298
+ await appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantToRead.dataEncodedMessage);
299
+ const appXWriteReply = await dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
312
300
  expect(appXWriteReply.status.code).toBe(401);
313
301
  expect(appXWriteReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationMethodMismatch);
314
302
  // 6. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for writing in another random protocol
315
- const appXAugmentedWrite2 = yield RecordsWrite.parse(bobRecordsWrite.message);
316
- yield appXAugmentedWrite2.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantToWriteInRandomProtocol.dataEncodedMessage);
317
- const appXWriteReply2 = yield dwn.processMessage(alice.did, appXAugmentedWrite2.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
303
+ const appXAugmentedWrite2 = await RecordsWrite.parse(bobRecordsWrite.message);
304
+ await appXAugmentedWrite2.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantToWriteInRandomProtocol.dataEncodedMessage);
305
+ const appXWriteReply2 = await dwn.processMessage(alice.did, appXAugmentedWrite2.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
318
306
  expect(appXWriteReply2.status.code).toBe(401);
319
307
  expect(appXWriteReply2.status.detail).toContain(DwnErrorCode.RecordsGrantAuthorizationScopeProtocolMismatch);
320
308
  // 7. Sanity verify the RecordsWrite is not written by App X
321
- const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
309
+ const recordsQuery = await TestDataGenerator.generateRecordsQuery({
322
310
  author: alice,
323
311
  filter: { protocol }
324
312
  });
325
- const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
313
+ const recordsQueryReply = await dwn.processMessage(alice.did, recordsQuery.message);
326
314
  expect(recordsQueryReply.status.code).toBe(200);
327
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
328
- }));
329
- it('should fail RecordsWrite if presented with an owner-delegated grant with invalid grantor signature', () => __awaiter(this, void 0, void 0, function* () {
330
- var _a;
315
+ expect(recordsQueryReply.entries?.length).toBe(0);
316
+ });
317
+ it('should fail RecordsWrite if presented with an owner-delegated grant with invalid grantor signature', async () => {
331
318
  // scenario:
332
319
  // 1. Alice installs a protocol
333
320
  // 2. Alice creates a delegated grant for App X to write as Alice, but with invalid signature
334
321
  // 3. A third party (Bob) authors a RecordsWrite
335
322
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with invalid signature
336
323
  // 5. Sanity verify the RecordsWrite is not written by App X
337
- const alice = yield TestDataGenerator.generateDidKeyPersona();
338
- const bob = yield TestDataGenerator.generateDidKeyPersona();
339
- const appX = yield TestDataGenerator.generateDidKeyPersona();
324
+ const alice = await TestDataGenerator.generateDidKeyPersona();
325
+ const bob = await TestDataGenerator.generateDidKeyPersona();
326
+ const appX = await TestDataGenerator.generateDidKeyPersona();
340
327
  // 1. Alice installs a protocol
341
328
  const protocolDefinition = minimalProtocolDefinition;
342
329
  const protocol = minimalProtocolDefinition.protocol;
343
- const protocolsConfig = yield ProtocolsConfigure.create({
330
+ const protocolsConfig = await ProtocolsConfigure.create({
344
331
  signer: Jws.createSigner(alice),
345
332
  definition: protocolDefinition
346
333
  });
347
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
334
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
348
335
  expect(protocolsConfigureReply.status.code).toBe(202);
349
336
  // 2. Alice creates a delegated grant for App X to write as Alice, but with invalid signature
350
337
  const scope = {
@@ -352,7 +339,7 @@ export function testOwnerDelegatedGrant() {
352
339
  method: DwnMethodName.Write,
353
340
  protocol
354
341
  };
355
- const appXGrant = yield PermissionsProtocol.createGrant({
342
+ const appXGrant = await PermissionsProtocol.createGrant({
356
343
  delegated: true,
357
344
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
358
345
  grantedTo: appX.did,
@@ -360,10 +347,10 @@ export function testOwnerDelegatedGrant() {
360
347
  signer: Jws.createSigner(alice)
361
348
  });
362
349
  const appXGrantMessage = appXGrant.dataEncodedMessage;
363
- appXGrantMessage.authorization.signature.signatures[0].signature = yield TestDataGenerator.randomSignatureString();
350
+ appXGrantMessage.authorization.signature.signatures[0].signature = await TestDataGenerator.randomSignatureString();
364
351
  // 3. A third party (Bob) authors a RecordsWrite
365
352
  const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
366
- const bobRecordsWrite = yield RecordsWrite.create({
353
+ const bobRecordsWrite = await RecordsWrite.create({
367
354
  signer: Jws.createSigner(bob),
368
355
  protocol,
369
356
  protocolPath: 'foo', // this comes from `types` in protocol definition
@@ -371,39 +358,38 @@ export function testOwnerDelegatedGrant() {
371
358
  data: bobRecordsWriteBytes
372
359
  });
373
360
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with invalid signature
374
- const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
375
- yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantMessage);
376
- const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
361
+ const appXAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
362
+ await appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantMessage);
363
+ const appXWriteReply = await dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
377
364
  expect(appXWriteReply.status.code).toBe(401);
378
365
  expect(appXWriteReply.status.detail).toContain(DwnErrorCode.GeneralJwsVerifierInvalidSignature);
379
366
  // 5. Sanity verify the RecordsWrite is not written by App X
380
- const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
367
+ const recordsQuery = await TestDataGenerator.generateRecordsQuery({
381
368
  author: alice,
382
369
  filter: { protocol }
383
370
  });
384
- const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
371
+ const recordsQueryReply = await dwn.processMessage(alice.did, recordsQuery.message);
385
372
  expect(recordsQueryReply.status.code).toBe(200);
386
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
387
- }));
388
- it('should fail RecordsWrite if grant ID in owner signature payload and CID of owner-delegated grant are mismatching', () => __awaiter(this, void 0, void 0, function* () {
389
- var _a;
373
+ expect(recordsQueryReply.entries?.length).toBe(0);
374
+ });
375
+ it('should fail RecordsWrite if grant ID in owner signature payload and CID of owner-delegated grant are mismatching', async () => {
390
376
  // scenario:
391
377
  // 1. Alice installs a protocol
392
378
  // 2. Creates two delegated grant for App X to write as Alice
393
379
  // 3. A third party (Bob) authors a RecordsWrite
394
380
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with the wrong ID
395
381
  // 5. Sanity verify the RecordsWrite is not written by App X
396
- const alice = yield TestDataGenerator.generateDidKeyPersona();
397
- const bob = yield TestDataGenerator.generateDidKeyPersona();
398
- const appX = yield TestDataGenerator.generateDidKeyPersona();
382
+ const alice = await TestDataGenerator.generateDidKeyPersona();
383
+ const bob = await TestDataGenerator.generateDidKeyPersona();
384
+ const appX = await TestDataGenerator.generateDidKeyPersona();
399
385
  // 1. Alice installs a protocol
400
386
  const protocolDefinition = minimalProtocolDefinition;
401
387
  const protocol = minimalProtocolDefinition.protocol;
402
- const protocolsConfig = yield ProtocolsConfigure.create({
388
+ const protocolsConfig = await ProtocolsConfigure.create({
403
389
  signer: Jws.createSigner(alice),
404
390
  definition: protocolDefinition
405
391
  });
406
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
392
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
407
393
  expect(protocolsConfigureReply.status.code).toBe(202);
408
394
  // 2. Creates two delegated grant for App X to write as Alice
409
395
  const scope = {
@@ -411,15 +397,15 @@ export function testOwnerDelegatedGrant() {
411
397
  method: DwnMethodName.Write,
412
398
  protocol
413
399
  };
414
- const appXGrant = yield PermissionsProtocol.createGrant({
400
+ const appXGrant = await PermissionsProtocol.createGrant({
415
401
  delegated: true,
416
402
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
417
403
  grantedTo: appX.did,
418
404
  scope: scope,
419
405
  signer: Jws.createSigner(alice)
420
406
  });
421
- yield Time.minimalSleep();
422
- const appXGrant2 = yield PermissionsProtocol.createGrant({
407
+ await Time.minimalSleep();
408
+ const appXGrant2 = await PermissionsProtocol.createGrant({
423
409
  delegated: true,
424
410
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
425
411
  grantedTo: appX.did,
@@ -428,7 +414,7 @@ export function testOwnerDelegatedGrant() {
428
414
  });
429
415
  // 3. A third party (Bob) authors a RecordsWrite
430
416
  const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
431
- const bobRecordsWrite = yield RecordsWrite.create({
417
+ const bobRecordsWrite = await RecordsWrite.create({
432
418
  signer: Jws.createSigner(bob),
433
419
  protocol,
434
420
  protocolPath: 'foo', // this comes from `types` in protocol definition
@@ -436,23 +422,22 @@ export function testOwnerDelegatedGrant() {
436
422
  data: bobRecordsWriteBytes
437
423
  });
438
424
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with the wrong ID
439
- const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
440
- yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
425
+ const appXAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
426
+ await appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
441
427
  appXAugmentedWrite.message.authorization.ownerDelegatedGrant = appXGrant2.dataEncodedMessage; // intentionally have a mismatching grant
442
- const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
428
+ const appXWriteReply = await dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
443
429
  expect(appXWriteReply.status.code).toBe(400);
444
430
  expect(appXWriteReply.status.detail).toContain(DwnErrorCode.RecordsOwnerDelegatedGrantCidMismatch);
445
431
  // 5. Sanity verify the RecordsWrite is not written by App X
446
- const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
432
+ const recordsQuery = await TestDataGenerator.generateRecordsQuery({
447
433
  author: alice,
448
434
  filter: { protocol }
449
435
  });
450
- const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
436
+ const recordsQueryReply = await dwn.processMessage(alice.did, recordsQuery.message);
451
437
  expect(recordsQueryReply.status.code).toBe(200);
452
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
453
- }));
454
- it('should fail RecordsWrite if owner-delegated grant is revoked', () => __awaiter(this, void 0, void 0, function* () {
455
- var _a;
438
+ expect(recordsQueryReply.entries?.length).toBe(0);
439
+ });
440
+ it('should fail RecordsWrite if owner-delegated grant is revoked', async () => {
456
441
  // scenario:
457
442
  // 1. Alice installs a protocol
458
443
  // 2. Alice creates a delegated grant for App X to write as Alice
@@ -460,17 +445,17 @@ export function testOwnerDelegatedGrant() {
460
445
  // 4. A third party (Bob) authors a RecordsWrite
461
446
  // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a revoked owner-delegated grant
462
447
  // 6. Sanity verify the RecordsWrite is not written by App X
463
- const alice = yield TestDataGenerator.generateDidKeyPersona();
464
- const bob = yield TestDataGenerator.generateDidKeyPersona();
465
- const appX = yield TestDataGenerator.generateDidKeyPersona();
448
+ const alice = await TestDataGenerator.generateDidKeyPersona();
449
+ const bob = await TestDataGenerator.generateDidKeyPersona();
450
+ const appX = await TestDataGenerator.generateDidKeyPersona();
466
451
  // 1. Alice installs a protocol
467
452
  const protocolDefinition = minimalProtocolDefinition;
468
453
  const protocol = minimalProtocolDefinition.protocol;
469
- const protocolsConfig = yield ProtocolsConfigure.create({
454
+ const protocolsConfig = await ProtocolsConfigure.create({
470
455
  signer: Jws.createSigner(alice),
471
456
  definition: protocolDefinition
472
457
  });
473
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
458
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
474
459
  expect(protocolsConfigureReply.status.code).toBe(202);
475
460
  // 2. Alice creates a delegated grant for App X to write as Alice
476
461
  const scope = {
@@ -478,7 +463,7 @@ export function testOwnerDelegatedGrant() {
478
463
  method: DwnMethodName.Write,
479
464
  protocol
480
465
  };
481
- const appXGrant = yield PermissionsProtocol.createGrant({
466
+ const appXGrant = await PermissionsProtocol.createGrant({
482
467
  delegated: true,
483
468
  dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
484
469
  grantedTo: appX.did,
@@ -486,19 +471,19 @@ export function testOwnerDelegatedGrant() {
486
471
  signer: Jws.createSigner(alice)
487
472
  });
488
473
  const grantDataStream = DataStream.fromBytes(appXGrant.permissionGrantBytes);
489
- const permissionGrantWriteReply = yield dwn.processMessage(alice.did, appXGrant.recordsWrite.message, { dataStream: grantDataStream });
474
+ const permissionGrantWriteReply = await dwn.processMessage(alice.did, appXGrant.recordsWrite.message, { dataStream: grantDataStream });
490
475
  expect(permissionGrantWriteReply.status.code).toBe(202);
491
476
  // 3. Alice revokes the grant
492
- const permissionRevoke = yield PermissionsProtocol.createRevocation({
477
+ const permissionRevoke = await PermissionsProtocol.createRevocation({
493
478
  signer: Jws.createSigner(alice),
494
- grant: yield PermissionGrant.parse(appXGrant.dataEncodedMessage),
479
+ grant: await PermissionGrant.parse(appXGrant.dataEncodedMessage),
495
480
  });
496
481
  const revocationDataStream = DataStream.fromBytes(permissionRevoke.permissionRevocationBytes);
497
- const permissionRevokeReply = yield dwn.processMessage(alice.did, permissionRevoke.recordsWrite.message, { dataStream: revocationDataStream });
482
+ const permissionRevokeReply = await dwn.processMessage(alice.did, permissionRevoke.recordsWrite.message, { dataStream: revocationDataStream });
498
483
  expect(permissionRevokeReply.status.code).toBe(202);
499
484
  // 4. A third party (Bob) authors a RecordsWrite
500
485
  const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
501
- const bobRecordsWrite = yield RecordsWrite.create({
486
+ const bobRecordsWrite = await RecordsWrite.create({
502
487
  signer: Jws.createSigner(bob),
503
488
  protocol,
504
489
  protocolPath: 'foo', // this comes from `types` in protocol definition
@@ -506,39 +491,38 @@ export function testOwnerDelegatedGrant() {
506
491
  data: bobRecordsWriteBytes
507
492
  });
508
493
  // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a revoked owner-delegated grant
509
- const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
510
- yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
511
- const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
494
+ const appXAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
495
+ await appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
496
+ const appXWriteReply = await dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
512
497
  expect(appXWriteReply.status.code).toBe(401);
513
498
  expect(appXWriteReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationGrantRevoked);
514
499
  // 6. Sanity verify the RecordsWrite is not written by App X
515
- const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
500
+ const recordsQuery = await TestDataGenerator.generateRecordsQuery({
516
501
  author: alice,
517
502
  filter: { protocol }
518
503
  });
519
- const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
504
+ const recordsQueryReply = await dwn.processMessage(alice.did, recordsQuery.message);
520
505
  expect(recordsQueryReply.status.code).toBe(200);
521
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
522
- }));
523
- it('should fail RecordsWrite if owner-delegated grant is expired', () => __awaiter(this, void 0, void 0, function* () {
524
- var _a;
506
+ expect(recordsQueryReply.entries?.length).toBe(0);
507
+ });
508
+ it('should fail RecordsWrite if owner-delegated grant is expired', async () => {
525
509
  // scenario:
526
510
  // 1. Alice installs a protocol
527
511
  // 2. Alice creates a delegated grant for App X to write as Alice, but make it expired
528
512
  // 3. A third party (Bob) authors a RecordsWrite
529
513
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an expired owner-delegated grant
530
514
  // 5. Sanity verify the RecordsWrite is not written by App X
531
- const alice = yield TestDataGenerator.generateDidKeyPersona();
532
- const bob = yield TestDataGenerator.generateDidKeyPersona();
533
- const appX = yield TestDataGenerator.generateDidKeyPersona();
515
+ const alice = await TestDataGenerator.generateDidKeyPersona();
516
+ const bob = await TestDataGenerator.generateDidKeyPersona();
517
+ const appX = await TestDataGenerator.generateDidKeyPersona();
534
518
  // 1. Alice installs a protocol
535
519
  const protocolDefinition = minimalProtocolDefinition;
536
520
  const protocol = minimalProtocolDefinition.protocol;
537
- const protocolsConfig = yield ProtocolsConfigure.create({
521
+ const protocolsConfig = await ProtocolsConfigure.create({
538
522
  signer: Jws.createSigner(alice),
539
523
  definition: protocolDefinition
540
524
  });
541
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
525
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
542
526
  expect(protocolsConfigureReply.status.code).toBe(202);
543
527
  // 2. Alice creates a delegated grant for App X to write as Alice, but make it expired
544
528
  const scope = {
@@ -546,7 +530,7 @@ export function testOwnerDelegatedGrant() {
546
530
  method: DwnMethodName.Write,
547
531
  protocol
548
532
  };
549
- const appXGrant = yield PermissionsProtocol.createGrant({
533
+ const appXGrant = await PermissionsProtocol.createGrant({
550
534
  delegated: true,
551
535
  dateExpires: Time.getCurrentTimestamp(), // intentionally set to current time to make it expired immediately
552
536
  grantedTo: appX.did,
@@ -555,7 +539,7 @@ export function testOwnerDelegatedGrant() {
555
539
  });
556
540
  // 3. A third party (Bob) authors a RecordsWrite
557
541
  const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
558
- const bobRecordsWrite = yield RecordsWrite.create({
542
+ const bobRecordsWrite = await RecordsWrite.create({
559
543
  signer: Jws.createSigner(bob),
560
544
  protocol,
561
545
  protocolPath: 'foo', // this comes from `types` in protocol definition
@@ -563,20 +547,20 @@ export function testOwnerDelegatedGrant() {
563
547
  data: bobRecordsWriteBytes
564
548
  });
565
549
  // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an expired owner-delegated grant
566
- const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
567
- yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
568
- const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
550
+ const appXAugmentedWrite = await RecordsWrite.parse(bobRecordsWrite.message);
551
+ await appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
552
+ const appXWriteReply = await dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
569
553
  expect(appXWriteReply.status.code).toBe(401);
570
554
  expect(appXWriteReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationGrantExpired);
571
555
  // 5. Sanity verify the RecordsWrite is not written by App X
572
- const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
556
+ const recordsQuery = await TestDataGenerator.generateRecordsQuery({
573
557
  author: alice,
574
558
  filter: { protocol }
575
559
  });
576
- const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
560
+ const recordsQueryReply = await dwn.processMessage(alice.did, recordsQuery.message);
577
561
  expect(recordsQueryReply.status.code).toBe(200);
578
- expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).toBe(0);
579
- }));
562
+ expect(recordsQueryReply.entries?.length).toBe(0);
563
+ });
580
564
  });
581
565
  }
582
566
  //# sourceMappingURL=owner-delegated-grant.spec.js.map