@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 sinon from 'sinon';
11
2
  import { DataStream } from '../../src/utils/data-stream.js';
12
3
  import { Dwn } from '../../src/dwn.js';
@@ -31,7 +22,7 @@ export function testProtocolUpdateAction() {
31
22
  let dwn;
32
23
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
33
24
  // so that different test suites can reuse the same backend store for testing
34
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
25
+ beforeAll(async () => {
35
26
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
36
27
  const stores = TestStores.get();
37
28
  messageStore = stores.messageStore;
@@ -39,20 +30,20 @@ export function testProtocolUpdateAction() {
39
30
  resumableTaskStore = stores.resumableTaskStore;
40
31
  stateIndex = stores.stateIndex;
41
32
  eventStream = TestEventStream.get();
42
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
43
- }));
44
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
33
+ dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
34
+ });
35
+ beforeEach(async () => {
45
36
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
46
37
  // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
47
- yield messageStore.clear();
48
- yield dataStore.clear();
49
- yield resumableTaskStore.clear();
50
- yield stateIndex.clear();
51
- }));
52
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
53
- yield dwn.close();
54
- }));
55
- it('should only allow author of a role-authorized create to update', () => __awaiter(this, void 0, void 0, function* () {
38
+ await messageStore.clear();
39
+ await dataStore.clear();
40
+ await resumableTaskStore.clear();
41
+ await stateIndex.clear();
42
+ });
43
+ afterAll(async () => {
44
+ await dwn.close();
45
+ });
46
+ it('should only allow author of a role-authorized create to update', async () => {
56
47
  // Scenario:
57
48
  // 1. Alice installs a protocol with a "author of a role-authorized create can update" rule.
58
49
  // 2. Alice gives Bob and Carol the "user" role to be able to write `foo` records.
@@ -62,9 +53,9 @@ export function testProtocolUpdateAction() {
62
53
  // 5. Carol creates a `foo` by invoking the user role.
63
54
  // 6. Verify that Carol can update her `foo`
64
55
  // 7. Verify that Bob cannot update Carol's `foo`
65
- const alice = yield TestDataGenerator.generateDidKeyPersona();
66
- const bob = yield TestDataGenerator.generateDidKeyPersona();
67
- const carol = yield TestDataGenerator.generateDidKeyPersona();
56
+ const alice = await TestDataGenerator.generateDidKeyPersona();
57
+ const bob = await TestDataGenerator.generateDidKeyPersona();
58
+ const carol = await TestDataGenerator.generateDidKeyPersona();
68
59
  // 1. Alice installs a protocol with a "author of a role-authorized create can update" rule.
69
60
  const protocolDefinition = {
70
61
  protocol: 'foo',
@@ -87,32 +78,32 @@ export function testProtocolUpdateAction() {
87
78
  }
88
79
  }
89
80
  };
90
- const protocolsConfig = yield ProtocolsConfigure.create({
81
+ const protocolsConfig = await ProtocolsConfigure.create({
91
82
  definition: protocolDefinition,
92
83
  signer: Jws.createSigner(alice)
93
84
  });
94
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
85
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
95
86
  expect(protocolsConfigureReply.status.code).toBe(202);
96
87
  // 2. Alice gives Bob and Carol the "user" role to be able to write `foo` records.
97
- const userBobRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
88
+ const userBobRecordsWrite = await TestDataGenerator.generateRecordsWrite({
98
89
  author: alice,
99
90
  recipient: bob.did,
100
91
  protocol: protocolDefinition.protocol,
101
92
  protocolPath: 'user'
102
93
  });
103
- const userBobRecordsWriteReply = yield dwn.processMessage(alice.did, userBobRecordsWrite.message, { dataStream: userBobRecordsWrite.dataStream });
94
+ const userBobRecordsWriteReply = await dwn.processMessage(alice.did, userBobRecordsWrite.message, { dataStream: userBobRecordsWrite.dataStream });
104
95
  expect(userBobRecordsWriteReply.status.code).toBe(202);
105
- const userCarolRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
96
+ const userCarolRecordsWrite = await TestDataGenerator.generateRecordsWrite({
106
97
  author: alice,
107
98
  recipient: carol.did,
108
99
  protocol: protocolDefinition.protocol,
109
100
  protocolPath: 'user'
110
101
  });
111
- const userCarolRecordsWriteReply = yield dwn.processMessage(alice.did, userCarolRecordsWrite.message, { dataStream: userCarolRecordsWrite.dataStream });
102
+ const userCarolRecordsWriteReply = await dwn.processMessage(alice.did, userCarolRecordsWrite.message, { dataStream: userCarolRecordsWrite.dataStream });
112
103
  expect(userCarolRecordsWriteReply.status.code).toBe(202);
113
104
  // 3. Bob creates a `foo` by invoking the user role.
114
105
  const bobFooBytes = TestDataGenerator.randomBytes(100);
115
- const bobRoleAuthorizedFoo = yield RecordsWrite.create({
106
+ const bobRoleAuthorizedFoo = await RecordsWrite.create({
116
107
  signer: Jws.createSigner(bob),
117
108
  protocolRole: 'user',
118
109
  protocol: protocolDefinition.protocol,
@@ -121,32 +112,32 @@ export function testProtocolUpdateAction() {
121
112
  dataFormat: 'any-format',
122
113
  data: bobFooBytes
123
114
  });
124
- const bobRoleAuthorizedCreateReply = yield dwn.processMessage(alice.did, bobRoleAuthorizedFoo.message, { dataStream: DataStream.fromBytes(bobFooBytes) });
115
+ const bobRoleAuthorizedCreateReply = await dwn.processMessage(alice.did, bobRoleAuthorizedFoo.message, { dataStream: DataStream.fromBytes(bobFooBytes) });
125
116
  expect(bobRoleAuthorizedCreateReply.status.code).toBe(202);
126
117
  // 4. Verify that Bob can update his `foo`
127
118
  const bobFooNewBytes = TestDataGenerator.randomBytes(100);
128
- const bobAuthorizedFooUpdate = yield RecordsWrite.createFrom({
119
+ const bobAuthorizedFooUpdate = await RecordsWrite.createFrom({
129
120
  recordsWriteMessage: bobRoleAuthorizedFoo.message,
130
121
  data: bobFooNewBytes,
131
122
  signer: Jws.createSigner(bob)
132
123
  });
133
- const bobAuthorizedFooUpdateReply = yield dwn.processMessage(alice.did, bobAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
124
+ const bobAuthorizedFooUpdateReply = await dwn.processMessage(alice.did, bobAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
134
125
  expect(bobAuthorizedFooUpdateReply.status.code).toBe(202);
135
126
  // 4a. Sanity verify that the update took effect by reading the record back
136
- const recordsRead = yield RecordsRead.create({
127
+ const recordsRead = await RecordsRead.create({
137
128
  filter: {
138
129
  recordId: bobRoleAuthorizedFoo.message.recordId
139
130
  },
140
131
  signer: Jws.createSigner(alice)
141
132
  });
142
- const recordsReadReply = yield dwn.processMessage(alice.did, recordsRead.message);
133
+ const recordsReadReply = await dwn.processMessage(alice.did, recordsRead.message);
143
134
  expect(recordsReadReply.status.code).toBe(200);
144
135
  expect(recordsReadReply.entry.data).toBeDefined();
145
- const dataFromReply = yield DataStream.toBytes(recordsReadReply.entry.data);
136
+ const dataFromReply = await DataStream.toBytes(recordsReadReply.entry.data);
146
137
  expect(dataFromReply).toEqual(bobFooNewBytes);
147
138
  // 5. Carol creates a `foo` by invoking the user role.
148
139
  const carolFooBytes = TestDataGenerator.randomBytes(100);
149
- const carolRoleAuthorizedFoo = yield RecordsWrite.create({
140
+ const carolRoleAuthorizedFoo = await RecordsWrite.create({
150
141
  signer: Jws.createSigner(carol),
151
142
  protocolRole: 'user',
152
143
  protocol: protocolDefinition.protocol,
@@ -155,28 +146,28 @@ export function testProtocolUpdateAction() {
155
146
  dataFormat: 'any-format',
156
147
  data: carolFooBytes
157
148
  });
158
- const carolRoleAuthorizedCreateReply = yield dwn.processMessage(alice.did, carolRoleAuthorizedFoo.message, { dataStream: DataStream.fromBytes(carolFooBytes) });
149
+ const carolRoleAuthorizedCreateReply = await dwn.processMessage(alice.did, carolRoleAuthorizedFoo.message, { dataStream: DataStream.fromBytes(carolFooBytes) });
159
150
  expect(carolRoleAuthorizedCreateReply.status.code).toBe(202);
160
151
  // 6. Verify that carol can update her `foo`
161
152
  const carolFooNewBytes = TestDataGenerator.randomBytes(100);
162
- const carolAuthorizedFooUpdate = yield RecordsWrite.createFrom({
153
+ const carolAuthorizedFooUpdate = await RecordsWrite.createFrom({
163
154
  recordsWriteMessage: carolRoleAuthorizedFoo.message,
164
155
  data: carolFooNewBytes,
165
156
  signer: Jws.createSigner(carol)
166
157
  });
167
- const carolAuthorizedFooUpdateReply = yield dwn.processMessage(alice.did, carolAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(carolFooNewBytes) });
158
+ const carolAuthorizedFooUpdateReply = await dwn.processMessage(alice.did, carolAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(carolFooNewBytes) });
168
159
  expect(carolAuthorizedFooUpdateReply.status.code).toBe(202);
169
160
  // 7. Verify that Bob cannot update Carol's `foo`
170
- const bobUnauthorizedFooUpdate = yield RecordsWrite.createFrom({
161
+ const bobUnauthorizedFooUpdate = await RecordsWrite.createFrom({
171
162
  recordsWriteMessage: carolRoleAuthorizedFoo.message,
172
163
  data: bobFooNewBytes,
173
164
  signer: Jws.createSigner(bob)
174
165
  });
175
- const bobUnauthorizedFooUpdateReply = yield dwn.processMessage(alice.did, bobUnauthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
166
+ const bobUnauthorizedFooUpdateReply = await dwn.processMessage(alice.did, bobUnauthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
176
167
  expect(bobUnauthorizedFooUpdateReply.status.code).toBe(401);
177
168
  expect(bobUnauthorizedFooUpdateReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
178
- }));
179
- it('should only allow author of an author/recipient-authorized create to update', () => __awaiter(this, void 0, void 0, function* () {
169
+ });
170
+ it('should only allow author of an author/recipient-authorized create to update', async () => {
180
171
  // Scenario:
181
172
  // 1. Alice installs a protocol with "author of an author/recipient-authorized create can update" rules.
182
173
  // 2. Alice creates a `foo` with Bob being the recipient, so that Bob can create `bar`.
@@ -191,9 +182,9 @@ export function testProtocolUpdateAction() {
191
182
  // 10. Verify that Bob can update his `baz`
192
183
  // 10a. Sanity verify that the update took effect by reading the record back.
193
184
  // 11. Verify that Bob cannot update Carol's `baz`
194
- const alice = yield TestDataGenerator.generateDidKeyPersona();
195
- const bob = yield TestDataGenerator.generateDidKeyPersona();
196
- const carol = yield TestDataGenerator.generateDidKeyPersona();
185
+ const alice = await TestDataGenerator.generateDidKeyPersona();
186
+ const bob = await TestDataGenerator.generateDidKeyPersona();
187
+ const carol = await TestDataGenerator.generateDidKeyPersona();
197
188
  // 1. Alice installs a protocol with "author of an author/recipient-authorized create can update" rules.
198
189
  const protocolDefinition = {
199
190
  protocol: 'foo-bar-baz',
@@ -226,33 +217,33 @@ export function testProtocolUpdateAction() {
226
217
  }
227
218
  }
228
219
  };
229
- const protocolsConfig = yield ProtocolsConfigure.create({
220
+ const protocolsConfig = await ProtocolsConfigure.create({
230
221
  definition: protocolDefinition,
231
222
  signer: Jws.createSigner(alice)
232
223
  });
233
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
224
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
234
225
  expect(protocolsConfigureReply.status.code).toBe(202);
235
226
  // 2. Alice creates a `foo` with Bob being the recipient, so that Bob can create `bar`.
236
- const fooForBob = yield TestDataGenerator.generateRecordsWrite({
227
+ const fooForBob = await TestDataGenerator.generateRecordsWrite({
237
228
  author: alice,
238
229
  recipient: bob.did,
239
230
  protocol: protocolDefinition.protocol,
240
231
  protocolPath: 'foo'
241
232
  });
242
- const fooForBobReply = yield dwn.processMessage(alice.did, fooForBob.message, { dataStream: fooForBob.dataStream });
233
+ const fooForBobReply = await dwn.processMessage(alice.did, fooForBob.message, { dataStream: fooForBob.dataStream });
243
234
  expect(fooForBobReply.status.code).toBe(202);
244
235
  // 3. Alice creates a `foo` with Carol being the recipient, so that Carol can create `bar`.
245
- const fooForCarol = yield TestDataGenerator.generateRecordsWrite({
236
+ const fooForCarol = await TestDataGenerator.generateRecordsWrite({
246
237
  author: alice,
247
238
  recipient: carol.did,
248
239
  protocol: protocolDefinition.protocol,
249
240
  protocolPath: 'foo'
250
241
  });
251
- const fooForCarolReply = yield dwn.processMessage(alice.did, fooForCarol.message, { dataStream: fooForCarol.dataStream });
242
+ const fooForCarolReply = await dwn.processMessage(alice.did, fooForCarol.message, { dataStream: fooForCarol.dataStream });
252
243
  expect(fooForCarolReply.status.code).toBe(202);
253
244
  // 4. Bob creates a recipient-authorized `bar`.
254
245
  const bobBarBytes = TestDataGenerator.randomBytes(100);
255
- const bobRecipientAuthorizedBar = yield RecordsWrite.create({
246
+ const bobRecipientAuthorizedBar = await RecordsWrite.create({
256
247
  signer: Jws.createSigner(bob),
257
248
  protocol: protocolDefinition.protocol,
258
249
  protocolPath: 'foo/bar',
@@ -261,11 +252,11 @@ export function testProtocolUpdateAction() {
261
252
  dataFormat: 'any-format',
262
253
  data: bobBarBytes
263
254
  });
264
- const bobRecipientAuthorizedBarReply = yield dwn.processMessage(alice.did, bobRecipientAuthorizedBar.message, { dataStream: DataStream.fromBytes(bobBarBytes) });
255
+ const bobRecipientAuthorizedBarReply = await dwn.processMessage(alice.did, bobRecipientAuthorizedBar.message, { dataStream: DataStream.fromBytes(bobBarBytes) });
265
256
  expect(bobRecipientAuthorizedBarReply.status.code).toBe(202);
266
257
  // 5. Carol creates a recipient-authorized `bar`.
267
258
  const carolBarBytes = TestDataGenerator.randomBytes(100);
268
- const carolRecipientAuthorizedBar = yield RecordsWrite.create({
259
+ const carolRecipientAuthorizedBar = await RecordsWrite.create({
269
260
  signer: Jws.createSigner(carol),
270
261
  protocol: protocolDefinition.protocol,
271
262
  protocolPath: 'foo/bar',
@@ -274,41 +265,41 @@ export function testProtocolUpdateAction() {
274
265
  dataFormat: 'any-format',
275
266
  data: carolBarBytes
276
267
  });
277
- const carolRecipientAuthorizedBarReply = yield dwn.processMessage(alice.did, carolRecipientAuthorizedBar.message, { dataStream: DataStream.fromBytes(carolBarBytes) });
268
+ const carolRecipientAuthorizedBarReply = await dwn.processMessage(alice.did, carolRecipientAuthorizedBar.message, { dataStream: DataStream.fromBytes(carolBarBytes) });
278
269
  expect(carolRecipientAuthorizedBarReply.status.code).toBe(202);
279
270
  // 6. Verify that Bob can update his `bar`.
280
271
  const bobBarNewBytes = TestDataGenerator.randomBytes(100);
281
- const bobAuthorizedBarUpdate = yield RecordsWrite.createFrom({
272
+ const bobAuthorizedBarUpdate = await RecordsWrite.createFrom({
282
273
  recordsWriteMessage: bobRecipientAuthorizedBar.message,
283
274
  data: bobBarNewBytes,
284
275
  signer: Jws.createSigner(bob)
285
276
  });
286
- const bobAuthorizedBarUpdateReply = yield dwn.processMessage(alice.did, bobAuthorizedBarUpdate.message, { dataStream: DataStream.fromBytes(bobBarNewBytes) });
277
+ const bobAuthorizedBarUpdateReply = await dwn.processMessage(alice.did, bobAuthorizedBarUpdate.message, { dataStream: DataStream.fromBytes(bobBarNewBytes) });
287
278
  expect(bobAuthorizedBarUpdateReply.status.code).toBe(202);
288
279
  // 6a. Sanity verify that the update took effect by reading the record back.
289
- const bobBarRead = yield RecordsRead.create({
280
+ const bobBarRead = await RecordsRead.create({
290
281
  filter: {
291
282
  recordId: bobRecipientAuthorizedBar.message.recordId
292
283
  },
293
284
  signer: Jws.createSigner(alice)
294
285
  });
295
- const bobBarReadReply = yield dwn.processMessage(alice.did, bobBarRead.message);
286
+ const bobBarReadReply = await dwn.processMessage(alice.did, bobBarRead.message);
296
287
  expect(bobBarReadReply.status.code).toBe(200);
297
288
  expect(bobBarReadReply.entry.data).toBeDefined();
298
- const dataFromBobBarRead = yield DataStream.toBytes(bobBarReadReply.entry.data);
289
+ const dataFromBobBarRead = await DataStream.toBytes(bobBarReadReply.entry.data);
299
290
  expect(dataFromBobBarRead).toEqual(bobBarNewBytes);
300
291
  // 7. Verify that Bob cannot update Carol's `bar`.
301
- const bobUnauthorizedBarUpdate = yield RecordsWrite.createFrom({
292
+ const bobUnauthorizedBarUpdate = await RecordsWrite.createFrom({
302
293
  recordsWriteMessage: carolRecipientAuthorizedBar.message,
303
294
  data: bobBarNewBytes,
304
295
  signer: Jws.createSigner(bob)
305
296
  });
306
- const bobUnauthorizedBarUpdateReply = yield dwn.processMessage(alice.did, bobUnauthorizedBarUpdate.message, { dataStream: DataStream.fromBytes(bobBarNewBytes) });
297
+ const bobUnauthorizedBarUpdateReply = await dwn.processMessage(alice.did, bobUnauthorizedBarUpdate.message, { dataStream: DataStream.fromBytes(bobBarNewBytes) });
307
298
  expect(bobUnauthorizedBarUpdateReply.status.code).toBe(401);
308
299
  expect(bobUnauthorizedBarUpdateReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
309
300
  // 8. Bob creates a author-authorized `baz` after his `bar`.
310
301
  const bobBazBytes = TestDataGenerator.randomBytes(100);
311
- const bobAuthorAuthorizedBaz = yield RecordsWrite.create({
302
+ const bobAuthorAuthorizedBaz = await RecordsWrite.create({
312
303
  signer: Jws.createSigner(bob),
313
304
  protocol: protocolDefinition.protocol,
314
305
  protocolPath: 'foo/bar/baz',
@@ -317,11 +308,11 @@ export function testProtocolUpdateAction() {
317
308
  dataFormat: 'any-format',
318
309
  data: bobBazBytes
319
310
  });
320
- const bobAuthorAuthorizedBazReply = yield dwn.processMessage(alice.did, bobAuthorAuthorizedBaz.message, { dataStream: DataStream.fromBytes(bobBazBytes) });
311
+ const bobAuthorAuthorizedBazReply = await dwn.processMessage(alice.did, bobAuthorAuthorizedBaz.message, { dataStream: DataStream.fromBytes(bobBazBytes) });
321
312
  expect(bobAuthorAuthorizedBazReply.status.code).toBe(202);
322
313
  // 9. Carol creates a author-authorized `baz` after her `bar`.
323
314
  const carolBazBytes = TestDataGenerator.randomBytes(100);
324
- const carolAuthorAuthorizedBaz = yield RecordsWrite.create({
315
+ const carolAuthorAuthorizedBaz = await RecordsWrite.create({
325
316
  signer: Jws.createSigner(carol),
326
317
  protocol: protocolDefinition.protocol,
327
318
  protocolPath: 'foo/bar/baz',
@@ -330,40 +321,40 @@ export function testProtocolUpdateAction() {
330
321
  dataFormat: 'any-format',
331
322
  data: carolBazBytes
332
323
  });
333
- const carolAuthorAuthorizedBazReply = yield dwn.processMessage(alice.did, carolAuthorAuthorizedBaz.message, { dataStream: DataStream.fromBytes(carolBazBytes) });
324
+ const carolAuthorAuthorizedBazReply = await dwn.processMessage(alice.did, carolAuthorAuthorizedBaz.message, { dataStream: DataStream.fromBytes(carolBazBytes) });
334
325
  expect(carolAuthorAuthorizedBazReply.status.code).toBe(202);
335
326
  // 10. Verify that Bob can update his `baz`
336
327
  const bobBazNewBytes = TestDataGenerator.randomBytes(100);
337
- const bobAuthorizedBazUpdate = yield RecordsWrite.createFrom({
328
+ const bobAuthorizedBazUpdate = await RecordsWrite.createFrom({
338
329
  recordsWriteMessage: bobAuthorAuthorizedBaz.message,
339
330
  data: bobBazNewBytes,
340
331
  signer: Jws.createSigner(bob)
341
332
  });
342
- const bobAuthorizedBazUpdateReply = yield dwn.processMessage(alice.did, bobAuthorizedBazUpdate.message, { dataStream: DataStream.fromBytes(bobBazNewBytes) });
333
+ const bobAuthorizedBazUpdateReply = await dwn.processMessage(alice.did, bobAuthorizedBazUpdate.message, { dataStream: DataStream.fromBytes(bobBazNewBytes) });
343
334
  expect(bobAuthorizedBazUpdateReply.status.code).toBe(202);
344
335
  // 10a. Sanity verify that the update took effect by reading the record back.
345
- const bobBazRead = yield RecordsRead.create({
336
+ const bobBazRead = await RecordsRead.create({
346
337
  filter: {
347
338
  recordId: bobAuthorAuthorizedBaz.message.recordId
348
339
  },
349
340
  signer: Jws.createSigner(alice)
350
341
  });
351
- const bobBazReadReply = yield dwn.processMessage(alice.did, bobBazRead.message);
342
+ const bobBazReadReply = await dwn.processMessage(alice.did, bobBazRead.message);
352
343
  expect(bobBazReadReply.status.code).toBe(200);
353
344
  expect(bobBazReadReply.entry.data).toBeDefined();
354
- const dataFromBobBazRead = yield DataStream.toBytes(bobBazReadReply.entry.data);
345
+ const dataFromBobBazRead = await DataStream.toBytes(bobBazReadReply.entry.data);
355
346
  expect(dataFromBobBazRead).toEqual(bobBazNewBytes);
356
347
  // 11. Verify that Bob cannot update Carol's `baz`
357
- const bobUnauthorizedBazUpdate = yield RecordsWrite.createFrom({
348
+ const bobUnauthorizedBazUpdate = await RecordsWrite.createFrom({
358
349
  recordsWriteMessage: carolRecipientAuthorizedBar.message,
359
350
  data: bobBazNewBytes,
360
351
  signer: Jws.createSigner(bob)
361
352
  });
362
- const bobUnauthorizedBazUpdateReply = yield dwn.processMessage(alice.did, bobUnauthorizedBazUpdate.message, { dataStream: DataStream.fromBytes(bobBazNewBytes) });
353
+ const bobUnauthorizedBazUpdateReply = await dwn.processMessage(alice.did, bobUnauthorizedBazUpdate.message, { dataStream: DataStream.fromBytes(bobBazNewBytes) });
363
354
  expect(bobUnauthorizedBazUpdateReply.status.code).toBe(401);
364
355
  expect(bobUnauthorizedBazUpdateReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
365
- }));
366
- it('should only allow author of an anyone-authorized create to update', () => __awaiter(this, void 0, void 0, function* () {
356
+ });
357
+ it('should only allow author of an anyone-authorized create to update', async () => {
367
358
  // Scenario:
368
359
  // 1. Alice installs a protocol with "author of an anyone-authorized create can update" rules.
369
360
  // 2. Bob creates an anyone-authorized `foo`.
@@ -371,9 +362,9 @@ export function testProtocolUpdateAction() {
371
362
  // 4. Verify that Bob can update his `foo`.
372
363
  // 4a. Sanity verify that the update took effect by reading the record back.
373
364
  // 5. Verify that Bob cannot update Carol's `foo`.
374
- const alice = yield TestDataGenerator.generateDidKeyPersona();
375
- const bob = yield TestDataGenerator.generateDidKeyPersona();
376
- const carol = yield TestDataGenerator.generateDidKeyPersona();
365
+ const alice = await TestDataGenerator.generateDidKeyPersona();
366
+ const bob = await TestDataGenerator.generateDidKeyPersona();
367
+ const carol = await TestDataGenerator.generateDidKeyPersona();
377
368
  // 1. Alice installs a protocol with "author of an anyone-authorized create can update" rule.
378
369
  const protocolDefinition = {
379
370
  protocol: 'foo',
@@ -392,15 +383,15 @@ export function testProtocolUpdateAction() {
392
383
  }
393
384
  }
394
385
  };
395
- const protocolsConfig = yield ProtocolsConfigure.create({
386
+ const protocolsConfig = await ProtocolsConfigure.create({
396
387
  definition: protocolDefinition,
397
388
  signer: Jws.createSigner(alice)
398
389
  });
399
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
390
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
400
391
  expect(protocolsConfigureReply.status.code).toBe(202);
401
392
  // 2. Bob creates an anyone-authorized `foo`.
402
393
  const bobFooBytes = TestDataGenerator.randomBytes(100);
403
- const bobAnyoneAuthorizedFoo = yield RecordsWrite.create({
394
+ const bobAnyoneAuthorizedFoo = await RecordsWrite.create({
404
395
  signer: Jws.createSigner(bob),
405
396
  protocol: protocolDefinition.protocol,
406
397
  protocolPath: 'foo',
@@ -408,11 +399,11 @@ export function testProtocolUpdateAction() {
408
399
  dataFormat: 'any-format',
409
400
  data: bobFooBytes
410
401
  });
411
- const bobAnyoneAuthorizedFooReply = yield dwn.processMessage(alice.did, bobAnyoneAuthorizedFoo.message, { dataStream: DataStream.fromBytes(bobFooBytes) });
402
+ const bobAnyoneAuthorizedFooReply = await dwn.processMessage(alice.did, bobAnyoneAuthorizedFoo.message, { dataStream: DataStream.fromBytes(bobFooBytes) });
412
403
  expect(bobAnyoneAuthorizedFooReply.status.code).toBe(202);
413
404
  // 3. Carol creates a anyone-authorized `foo`.
414
405
  const carolFooBytes = TestDataGenerator.randomBytes(100);
415
- const carolAnyoneAuthorizedFoo = yield RecordsWrite.create({
406
+ const carolAnyoneAuthorizedFoo = await RecordsWrite.create({
416
407
  signer: Jws.createSigner(carol),
417
408
  protocol: protocolDefinition.protocol,
418
409
  protocolPath: 'foo',
@@ -420,46 +411,46 @@ export function testProtocolUpdateAction() {
420
411
  dataFormat: 'any-format',
421
412
  data: carolFooBytes
422
413
  });
423
- const carolAnyoneAuthorizedFooReply = yield dwn.processMessage(alice.did, carolAnyoneAuthorizedFoo.message, { dataStream: DataStream.fromBytes(carolFooBytes) });
414
+ const carolAnyoneAuthorizedFooReply = await dwn.processMessage(alice.did, carolAnyoneAuthorizedFoo.message, { dataStream: DataStream.fromBytes(carolFooBytes) });
424
415
  expect(carolAnyoneAuthorizedFooReply.status.code).toBe(202);
425
416
  // 4. Verify that Bob can update his `foo`.
426
417
  const bobFooNewBytes = TestDataGenerator.randomBytes(100);
427
- const bobAuthorizedFooUpdate = yield RecordsWrite.createFrom({
418
+ const bobAuthorizedFooUpdate = await RecordsWrite.createFrom({
428
419
  recordsWriteMessage: bobAnyoneAuthorizedFoo.message,
429
420
  data: bobFooNewBytes,
430
421
  signer: Jws.createSigner(bob)
431
422
  });
432
- const bobAuthorizedFooUpdateReply = yield dwn.processMessage(alice.did, bobAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
423
+ const bobAuthorizedFooUpdateReply = await dwn.processMessage(alice.did, bobAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
433
424
  expect(bobAuthorizedFooUpdateReply.status.code).toBe(202);
434
425
  // 4a. Sanity verify that the update took effect by reading the record back.
435
- const bobBarRead = yield RecordsRead.create({
426
+ const bobBarRead = await RecordsRead.create({
436
427
  filter: {
437
428
  recordId: bobAnyoneAuthorizedFoo.message.recordId
438
429
  },
439
430
  signer: Jws.createSigner(alice)
440
431
  });
441
- const bobFooReadReply = yield dwn.processMessage(alice.did, bobBarRead.message);
432
+ const bobFooReadReply = await dwn.processMessage(alice.did, bobBarRead.message);
442
433
  expect(bobFooReadReply.status.code).toBe(200);
443
434
  expect(bobFooReadReply.entry.data).toBeDefined();
444
- const dataFromBobFooRead = yield DataStream.toBytes(bobFooReadReply.entry.data);
435
+ const dataFromBobFooRead = await DataStream.toBytes(bobFooReadReply.entry.data);
445
436
  expect(dataFromBobFooRead).toEqual(bobFooNewBytes);
446
437
  // 5. Verify that Bob cannot update Carol's `foo`.
447
- const bobUnauthorizedBarUpdate = yield RecordsWrite.createFrom({
438
+ const bobUnauthorizedBarUpdate = await RecordsWrite.createFrom({
448
439
  recordsWriteMessage: carolAnyoneAuthorizedFoo.message,
449
440
  data: bobFooNewBytes,
450
441
  signer: Jws.createSigner(bob)
451
442
  });
452
- const bobUnauthorizedFooUpdateReply = yield dwn.processMessage(alice.did, bobUnauthorizedBarUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
443
+ const bobUnauthorizedFooUpdateReply = await dwn.processMessage(alice.did, bobUnauthorizedBarUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
453
444
  expect(bobUnauthorizedFooUpdateReply.status.code).toBe(401);
454
445
  expect(bobUnauthorizedFooUpdateReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
455
- }));
456
- it('should fail an update to an non-existent record', () => __awaiter(this, void 0, void 0, function* () {
446
+ });
447
+ it('should fail an update to an non-existent record', async () => {
457
448
  // Scenario:
458
449
  // 1. Alice installs a protocol with "author of an anyone-authorized create can update" rules.
459
450
  // 2. Bob constructs an anyone-authorized `foo` but never sent it to the DWN.
460
451
  // 3. Verify that Bob cannot update a `foo` that does not exist in the DWN.
461
- const alice = yield TestDataGenerator.generateDidKeyPersona();
462
- const bob = yield TestDataGenerator.generateDidKeyPersona();
452
+ const alice = await TestDataGenerator.generateDidKeyPersona();
453
+ const bob = await TestDataGenerator.generateDidKeyPersona();
463
454
  // 1. Alice installs a protocol with "author of an anyone-authorized create can update" rule.
464
455
  const protocolDefinition = {
465
456
  protocol: 'foo',
@@ -478,15 +469,15 @@ export function testProtocolUpdateAction() {
478
469
  }
479
470
  }
480
471
  };
481
- const protocolsConfig = yield ProtocolsConfigure.create({
472
+ const protocolsConfig = await ProtocolsConfigure.create({
482
473
  definition: protocolDefinition,
483
474
  signer: Jws.createSigner(alice)
484
475
  });
485
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
476
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
486
477
  expect(protocolsConfigureReply.status.code).toBe(202);
487
478
  // 2. Bob constructs an anyone-authorized `foo` but never sent it to the DWN.
488
479
  const bobFooBytes = TestDataGenerator.randomBytes(100);
489
- const bobAnyoneAuthorizedFoo = yield RecordsWrite.create({
480
+ const bobAnyoneAuthorizedFoo = await RecordsWrite.create({
490
481
  signer: Jws.createSigner(bob),
491
482
  protocol: protocolDefinition.protocol,
492
483
  protocolPath: 'foo',
@@ -496,16 +487,16 @@ export function testProtocolUpdateAction() {
496
487
  });
497
488
  // 3. Verify that Bob cannot update a `foo` that does not exist in the DWN.
498
489
  const bobFooNewBytes = TestDataGenerator.randomBytes(100);
499
- const bobAuthorizedFooUpdate = yield RecordsWrite.createFrom({
490
+ const bobAuthorizedFooUpdate = await RecordsWrite.createFrom({
500
491
  recordsWriteMessage: bobAnyoneAuthorizedFoo.message,
501
492
  data: bobFooNewBytes,
502
493
  signer: Jws.createSigner(bob)
503
494
  });
504
- const bobAuthorizedFooUpdateReply = yield dwn.processMessage(alice.did, bobAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
495
+ const bobAuthorizedFooUpdateReply = await dwn.processMessage(alice.did, bobAuthorizedFooUpdate.message, { dataStream: DataStream.fromBytes(bobFooNewBytes) });
505
496
  expect(bobAuthorizedFooUpdateReply.status.code).toBe(401);
506
497
  expect(bobAuthorizedFooUpdateReply.status.detail).toContain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
507
- }));
508
- it('should not allow creation of a protocol definition with action rule containing `update` without `create`', () => __awaiter(this, void 0, void 0, function* () {
498
+ });
499
+ it('should not allow creation of a protocol definition with action rule containing `update` without `create`', async () => {
509
500
  const protocolDefinition = {
510
501
  protocol: 'foo',
511
502
  published: true,
@@ -523,14 +514,14 @@ export function testProtocolUpdateAction() {
523
514
  }
524
515
  }
525
516
  };
526
- const alice = yield TestDataGenerator.generateDidKeyPersona();
517
+ const alice = await TestDataGenerator.generateDidKeyPersona();
527
518
  const protocolsConfigureCreatePromise = ProtocolsConfigure.create({
528
519
  definition: protocolDefinition,
529
520
  signer: Jws.createSigner(alice)
530
521
  });
531
- yield expect(protocolsConfigureCreatePromise).rejects.toThrow(DwnErrorCode.ProtocolsConfigureInvalidActionUpdateWithoutCreate);
532
- }));
533
- it('should reject ProtocolsConfigure with action rule containing `update` action without `create` during processing', () => __awaiter(this, void 0, void 0, function* () {
522
+ await expect(protocolsConfigureCreatePromise).rejects.toThrow(DwnErrorCode.ProtocolsConfigureInvalidActionUpdateWithoutCreate);
523
+ });
524
+ it('should reject ProtocolsConfigure with action rule containing `update` action without `create` during processing', async () => {
534
525
  const protocolDefinition = {
535
526
  protocol: 'http://foo',
536
527
  published: true,
@@ -555,16 +546,16 @@ export function testProtocolUpdateAction() {
555
546
  messageTimestamp: Time.getCurrentTimestamp(),
556
547
  definition: protocolDefinition
557
548
  };
558
- const alice = yield TestDataGenerator.generateDidKeyPersona();
559
- const authorization = yield Message.createAuthorization({
549
+ const alice = await TestDataGenerator.generateDidKeyPersona();
550
+ const authorization = await Message.createAuthorization({
560
551
  descriptor,
561
552
  signer: Jws.createSigner(alice)
562
553
  });
563
554
  const protocolsConfigureMessage = { descriptor, authorization };
564
- const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
555
+ const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfigureMessage);
565
556
  expect(protocolsConfigureReply.status.code).toBe(400);
566
557
  expect(protocolsConfigureReply.status.detail).toContain(DwnErrorCode.ProtocolsConfigureInvalidActionUpdateWithoutCreate);
567
- }));
558
+ });
568
559
  });
569
560
  }
570
561
  //# sourceMappingURL=protocol-update-action.spec.js.map