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