@enbox/dwn-sdk-js 0.0.6 → 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 (361) 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 +100 -125
  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 +549 -564
  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 +229 -82
  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/tests/features/permissions.spec.d.ts.map +1 -1
  347. package/package.json +2 -2
  348. package/src/core/protocol-authorization-action.ts +377 -0
  349. package/src/core/protocol-authorization-validation.ts +391 -0
  350. package/src/core/protocol-authorization.ts +60 -849
  351. package/src/core/record-chain.ts +99 -0
  352. package/src/handlers/records-read.ts +1 -1
  353. package/src/handlers/records-write.ts +37 -21
  354. package/src/interfaces/protocols-configure.ts +33 -5
  355. package/src/interfaces/records-write-query.ts +139 -0
  356. package/src/interfaces/records-write-signing.ts +143 -0
  357. package/src/interfaces/records-write.ts +49 -221
  358. package/src/store/index-level-compound.ts +324 -0
  359. package/src/store/index-level.ts +24 -306
  360. package/src/utils/protocols.ts +8 -0
  361. package/src/utils/records.ts +1 -1
@@ -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 { Dwn } from '../../src/dwn.js';
11
2
  import { DwnErrorCode } from '../../src/core/dwn-error.js';
12
3
  import freeForAll from '../vectors/protocol-definitions/free-for-all.json' with { type: 'json' };
@@ -33,42 +24,42 @@ export function testMessagesSubscribeHandler() {
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
- dwn = yield Dwn.create({
34
+ dwn = await Dwn.create({
44
35
  didResolver,
45
36
  messageStore,
46
37
  dataStore,
47
38
  resumableTaskStore,
48
39
  stateIndex,
49
40
  });
50
- }));
51
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
41
+ });
42
+ beforeEach(async () => {
52
43
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
53
44
  // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
54
- yield messageStore.clear();
55
- yield dataStore.clear();
56
- yield resumableTaskStore.clear();
57
- yield stateIndex.clear();
58
- }));
59
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
60
- yield dwn.close();
61
- }));
62
- it('should respond with a 501 if subscriptions are not supported', () => __awaiter(this, void 0, void 0, function* () {
63
- yield dwn.close(); // close the original dwn instance
64
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, resumableTaskStore }); // leave out eventStream
65
- const alice = yield TestDataGenerator.generateDidKeyPersona();
45
+ await messageStore.clear();
46
+ await dataStore.clear();
47
+ await resumableTaskStore.clear();
48
+ await stateIndex.clear();
49
+ });
50
+ afterAll(async () => {
51
+ await dwn.close();
52
+ });
53
+ it('should respond with a 501 if subscriptions are not supported', async () => {
54
+ await dwn.close(); // close the original dwn instance
55
+ dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, resumableTaskStore }); // leave out eventStream
56
+ const alice = await TestDataGenerator.generateDidKeyPersona();
66
57
  // attempt to subscribe
67
- const { message } = yield MessagesSubscribe.create({ signer: Jws.createSigner(alice) });
68
- const subscriptionMessageReply = yield dwn.processMessage(alice.did, message, { subscriptionHandler: (_) => { } });
58
+ const { message } = await MessagesSubscribe.create({ signer: Jws.createSigner(alice) });
59
+ const subscriptionMessageReply = await dwn.processMessage(alice.did, message, { subscriptionHandler: (_) => { } });
69
60
  expect(subscriptionMessageReply.status.code).toBe(501);
70
61
  expect(subscriptionMessageReply.status.detail).toContain(DwnErrorCode.MessagesSubscribeEventStreamUnimplemented);
71
- }));
62
+ });
72
63
  });
73
64
  describe('EventStream enabled', () => {
74
65
  let didResolver;
@@ -80,7 +71,7 @@ export function testMessagesSubscribeHandler() {
80
71
  let dwn;
81
72
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
82
73
  // so that different test suites can reuse the same backend store for testing
83
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
74
+ beforeAll(async () => {
84
75
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
85
76
  const stores = TestStores.get();
86
77
  messageStore = stores.messageStore;
@@ -88,7 +79,7 @@ export function testMessagesSubscribeHandler() {
88
79
  resumableTaskStore = stores.resumableTaskStore;
89
80
  stateIndex = stores.stateIndex;
90
81
  eventStream = TestEventStream.get();
91
- dwn = yield Dwn.create({
82
+ dwn = await Dwn.create({
92
83
  didResolver,
93
84
  messageStore,
94
85
  dataStore,
@@ -96,84 +87,84 @@ export function testMessagesSubscribeHandler() {
96
87
  stateIndex,
97
88
  eventStream,
98
89
  });
99
- }));
100
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
90
+ });
91
+ beforeEach(async () => {
101
92
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
102
93
  // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
103
- yield messageStore.clear();
104
- yield dataStore.clear();
105
- yield resumableTaskStore.clear();
106
- yield stateIndex.clear();
107
- }));
108
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
109
- yield dwn.close();
110
- }));
111
- it('returns a 400 if message is invalid', () => __awaiter(this, void 0, void 0, function* () {
112
- const alice = yield TestDataGenerator.generateDidKeyPersona();
113
- const { message } = yield TestDataGenerator.generateMessagesSubscribe({ author: alice });
94
+ await messageStore.clear();
95
+ await dataStore.clear();
96
+ await resumableTaskStore.clear();
97
+ await stateIndex.clear();
98
+ });
99
+ afterAll(async () => {
100
+ await dwn.close();
101
+ });
102
+ it('returns a 400 if message is invalid', async () => {
103
+ const alice = await TestDataGenerator.generateDidKeyPersona();
104
+ const { message } = await TestDataGenerator.generateMessagesSubscribe({ author: alice });
114
105
  // add an invalid property to the descriptor
115
106
  message['descriptor']['invalid'] = 'invalid';
116
107
  const messagesSubscribeHandler = new MessagesSubscribeHandler(didResolver, messageStore, eventStream);
117
- const reply = yield messagesSubscribeHandler.handle({ tenant: alice.did, message, subscriptionHandler: (_) => { } });
108
+ const reply = await messagesSubscribeHandler.handle({ tenant: alice.did, message, subscriptionHandler: (_) => { } });
118
109
  expect(reply.status.code).toBe(400);
119
- }));
120
- it('should allow tenant to subscribe their own event stream', () => __awaiter(this, void 0, void 0, function* () {
121
- const alice = yield TestDataGenerator.generateDidKeyPersona();
110
+ });
111
+ it('should allow tenant to subscribe their own event stream', async () => {
112
+ const alice = await TestDataGenerator.generateDidKeyPersona();
122
113
  // set up a promise to read later that captures the emitted messageCid
123
114
  let handler;
124
115
  const messageSubscriptionPromise = new Promise((resolve) => {
125
- handler = (event) => __awaiter(this, void 0, void 0, function* () {
116
+ handler = async (event) => {
126
117
  const { message } = event;
127
- const messageCid = yield Message.getCid(message);
118
+ const messageCid = await Message.getCid(message);
128
119
  resolve(messageCid);
129
- });
120
+ };
130
121
  });
131
122
  // testing MessagesSubscribe
132
- const messagesSubscribe = yield MessagesSubscribe.create({
123
+ const messagesSubscribe = await MessagesSubscribe.create({
133
124
  signer: Jws.createSigner(alice),
134
125
  });
135
- const subscriptionReply = yield dwn.processMessage(alice.did, messagesSubscribe.message, { subscriptionHandler: handler });
126
+ const subscriptionReply = await dwn.processMessage(alice.did, messagesSubscribe.message, { subscriptionHandler: handler });
136
127
  expect(subscriptionReply.status.code).toBe(200);
137
128
  expect(subscriptionReply.subscription).toBeDefined();
138
- const messageWrite = yield TestDataGenerator.generateRecordsWrite({ author: alice });
139
- const writeReply = yield dwn.processMessage(alice.did, messageWrite.message, { dataStream: messageWrite.dataStream });
129
+ const messageWrite = await TestDataGenerator.generateRecordsWrite({ author: alice });
130
+ const writeReply = await dwn.processMessage(alice.did, messageWrite.message, { dataStream: messageWrite.dataStream });
140
131
  expect(writeReply.status.code).toBe(202);
141
- const messageCid = yield Message.getCid(messageWrite.message);
132
+ const messageCid = await Message.getCid(messageWrite.message);
142
133
  // control: ensure that the event exists
143
- const events = yield stateIndex.getLeaves(alice.did, []);
134
+ const events = await stateIndex.getLeaves(alice.did, []);
144
135
  expect(events.length).toBe(1);
145
136
  expect(events[0]).toBe(messageCid);
146
137
  // await the event
147
- const resolvedCid = yield messageSubscriptionPromise;
138
+ const resolvedCid = await messageSubscriptionPromise;
148
139
  expect(resolvedCid).toBe(messageCid);
149
- }));
150
- it('should not allow non-tenant to subscribe to an event stream they are not authorized for', () => __awaiter(this, void 0, void 0, function* () {
151
- const alice = yield TestDataGenerator.generateDidKeyPersona();
152
- const bob = yield TestDataGenerator.generateDidKeyPersona();
140
+ });
141
+ it('should not allow non-tenant to subscribe to an event stream they are not authorized for', async () => {
142
+ const alice = await TestDataGenerator.generateDidKeyPersona();
143
+ const bob = await TestDataGenerator.generateDidKeyPersona();
153
144
  // test anonymous request
154
- const anonymousSubscription = yield TestDataGenerator.generateMessagesSubscribe();
145
+ const anonymousSubscription = await TestDataGenerator.generateMessagesSubscribe();
155
146
  delete anonymousSubscription.message.authorization;
156
- const anonymousReply = yield dwn.processMessage(alice.did, anonymousSubscription.message);
147
+ const anonymousReply = await dwn.processMessage(alice.did, anonymousSubscription.message);
157
148
  expect(anonymousReply.status.code).toBe(400);
158
149
  expect(anonymousReply.status.detail).toContain(`MessagesSubscribe: must have required property 'authorization'`);
159
150
  expect(anonymousReply.subscription).toBeUndefined();
160
151
  // testing MessagesSubscribe
161
- const messagesSubscribe = yield MessagesSubscribe.create({
152
+ const messagesSubscribe = await MessagesSubscribe.create({
162
153
  signer: Jws.createSigner(bob),
163
154
  });
164
- const subscriptionReply = yield dwn.processMessage(alice.did, messagesSubscribe.message);
155
+ const subscriptionReply = await dwn.processMessage(alice.did, messagesSubscribe.message);
165
156
  expect(subscriptionReply.status.code).toBe(401);
166
157
  expect(subscriptionReply.subscription).toBeUndefined();
167
- }));
158
+ });
168
159
  describe('grant based subscribes', () => {
169
- it('allows subscribe of messages with matching interface and method grant scope', () => __awaiter(this, void 0, void 0, function* () {
160
+ it('allows subscribe of messages with matching interface and method grant scope', async () => {
170
161
  // scenario: Alice gives Bob permission to subscribe for all of her messages
171
162
  // Alice writes various messages
172
163
  // When Bob subscribes for messages, he should receive updates to all of Alice's messages
173
- const alice = yield TestDataGenerator.generateDidKeyPersona();
174
- const bob = yield TestDataGenerator.generateDidKeyPersona();
164
+ const alice = await TestDataGenerator.generateDidKeyPersona();
165
+ const bob = await TestDataGenerator.generateDidKeyPersona();
175
166
  // create grant that is scoped to `MessagesSubscribe` for bob
176
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
167
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
177
168
  author: alice,
178
169
  grantedTo: bob,
179
170
  scope: {
@@ -181,67 +172,67 @@ export function testMessagesSubscribeHandler() {
181
172
  method: DwnMethodName.Subscribe
182
173
  }
183
174
  });
184
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
175
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
185
176
  expect(grantReply.status.code).toBe(202);
186
177
  // create a handler to capture the emitted messageCids
187
178
  const messageCids = [];
188
- const handler = (event) => __awaiter(this, void 0, void 0, function* () {
179
+ const handler = async (event) => {
189
180
  const { message } = event;
190
- const messageCid = yield Message.getCid(message);
181
+ const messageCid = await Message.getCid(message);
191
182
  messageCids.push(messageCid);
192
- });
183
+ };
193
184
  // subscribe to messages
194
- const { message: subscribeMessage } = yield TestDataGenerator.generateMessagesSubscribe({
185
+ const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
195
186
  author: bob,
196
187
  permissionGrantId: grantMessage.recordId,
197
188
  });
198
- const subscribeReply = yield dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
189
+ const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
199
190
  expect(subscribeReply.status.code).toBe(200);
200
191
  // configure the freeForAll protocol
201
- const { message: freeForAllConfigure } = yield TestDataGenerator.generateProtocolsConfigure({
192
+ const { message: freeForAllConfigure } = await TestDataGenerator.generateProtocolsConfigure({
202
193
  author: alice,
203
194
  protocolDefinition: freeForAll,
204
195
  });
205
- const { status: freeForAllReplyStatus } = yield dwn.processMessage(alice.did, freeForAllConfigure);
196
+ const { status: freeForAllReplyStatus } = await dwn.processMessage(alice.did, freeForAllConfigure);
206
197
  expect(freeForAllReplyStatus.code).toBe(202);
207
198
  // configure a random protocol configuration
208
- const { message: protocolMessage } = yield TestDataGenerator.generateProtocolsConfigure({
199
+ const { message: protocolMessage } = await TestDataGenerator.generateProtocolsConfigure({
209
200
  author: alice,
210
201
  });
211
- const { status: configureStatus } = yield dwn.processMessage(alice.did, protocolMessage);
202
+ const { status: configureStatus } = await dwn.processMessage(alice.did, protocolMessage);
212
203
  expect(configureStatus.code).toBe(202);
213
204
  // write a message to the Records free for all interface
214
- const { message: recordMessage, dataStream: recordDataStream } = yield TestDataGenerator.generateRecordsWrite({
205
+ const { message: recordMessage, dataStream: recordDataStream } = await TestDataGenerator.generateRecordsWrite({
215
206
  protocol: freeForAll.protocol,
216
207
  protocolPath: 'post',
217
208
  schema: freeForAll.types.post.schema,
218
209
  author: alice
219
210
  });
220
- const recordReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream: recordDataStream });
211
+ const recordReply = await dwn.processMessage(alice.did, recordMessage, { dataStream: recordDataStream });
221
212
  expect(recordReply.status.code).toBe(202);
222
213
  // write a random message
223
- const { message: randomMessage, dataStream: randomDataStream } = yield TestDataGenerator.generateRecordsWrite({
214
+ const { message: randomMessage, dataStream: randomDataStream } = await TestDataGenerator.generateRecordsWrite({
224
215
  author: alice
225
216
  });
226
- const randomReply = yield dwn.processMessage(alice.did, randomMessage, { dataStream: randomDataStream });
217
+ const randomReply = await dwn.processMessage(alice.did, randomMessage, { dataStream: randomDataStream });
227
218
  expect(randomReply.status.code).toBe(202);
228
219
  // ensure that all messages have been received
229
- yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
220
+ await Poller.pollUntilSuccessOrTimeout(async () => {
230
221
  expect(messageCids.length).toBe(4);
231
222
  const expectedCids = [
232
- yield Message.getCid(freeForAllConfigure),
233
- yield Message.getCid(protocolMessage),
234
- yield Message.getCid(recordMessage),
235
- yield Message.getCid(randomMessage),
223
+ await Message.getCid(freeForAllConfigure),
224
+ await Message.getCid(protocolMessage),
225
+ await Message.getCid(recordMessage),
226
+ await Message.getCid(randomMessage),
236
227
  ];
237
228
  expect(messageCids.sort()).toEqual(expectedCids.sort());
238
- }));
239
- }));
240
- it('rejects subscribe of messages with mismatching interface grant scope', () => __awaiter(this, void 0, void 0, function* () {
241
- const alice = yield TestDataGenerator.generateDidKeyPersona();
242
- const bob = yield TestDataGenerator.generateDidKeyPersona();
229
+ });
230
+ });
231
+ it('rejects subscribe of messages with mismatching interface grant scope', async () => {
232
+ const alice = await TestDataGenerator.generateDidKeyPersona();
233
+ const bob = await TestDataGenerator.generateDidKeyPersona();
243
234
  // create grant that is scoped to `RecordsWrite` for bob scoped to the `freeForAll` protocol
244
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
235
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
245
236
  author: alice,
246
237
  grantedTo: bob,
247
238
  scope: {
@@ -250,22 +241,22 @@ export function testMessagesSubscribeHandler() {
250
241
  protocol: freeForAll.protocol
251
242
  }
252
243
  });
253
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
244
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
254
245
  expect(grantReply.status.code).toBe(202);
255
246
  // bob attempts to use the `RecordsWrite` grant on an `MessagesSubscribe` message
256
- const { message: bobSubscribe } = yield TestDataGenerator.generateMessagesSubscribe({
247
+ const { message: bobSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
257
248
  author: bob,
258
249
  permissionGrantId: grantMessage.recordId
259
250
  });
260
- const bobReply = yield dwn.processMessage(alice.did, bobSubscribe);
251
+ const bobReply = await dwn.processMessage(alice.did, bobSubscribe);
261
252
  expect(bobReply.status.code).toBe(401);
262
253
  expect(bobReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationInterfaceMismatch);
263
- }));
264
- it('rejects subscribe of messages with mismatching method grant scopes', () => __awaiter(this, void 0, void 0, function* () {
265
- const alice = yield TestDataGenerator.generateDidKeyPersona();
266
- const bob = yield TestDataGenerator.generateDidKeyPersona();
254
+ });
255
+ it('rejects subscribe of messages with mismatching method grant scopes', async () => {
256
+ const alice = await TestDataGenerator.generateDidKeyPersona();
257
+ const bob = await TestDataGenerator.generateDidKeyPersona();
267
258
  // create grant that is scoped to `MessagesSync` for bob
268
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
259
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
269
260
  author: alice,
270
261
  grantedTo: bob,
271
262
  scope: {
@@ -273,39 +264,39 @@ export function testMessagesSubscribeHandler() {
273
264
  method: DwnMethodName.Sync,
274
265
  }
275
266
  });
276
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
267
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
277
268
  expect(grantReply.status.code).toBe(202);
278
269
  // bob attempts to use the `MessagesSync` grant on an `MessagesSubscribe` message
279
- const { message: bobSubscribe } = yield TestDataGenerator.generateMessagesSubscribe({
270
+ const { message: bobSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
280
271
  author: bob,
281
272
  permissionGrantId: grantMessage.recordId
282
273
  });
283
- const bobReply = yield dwn.processMessage(alice.did, bobSubscribe);
274
+ const bobReply = await dwn.processMessage(alice.did, bobSubscribe);
284
275
  expect(bobReply.status.code).toBe(401);
285
276
  expect(bobReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationMethodMismatch);
286
- }));
277
+ });
287
278
  describe('protocol filtered messages', () => {
288
- it('allows subscribe of protocol filtered messages with matching protocol grant scopes', () => __awaiter(this, void 0, void 0, function* () {
289
- const alice = yield TestDataGenerator.generateDidKeyPersona();
290
- const bob = yield TestDataGenerator.generateDidKeyPersona();
279
+ it('allows subscribe of protocol filtered messages with matching protocol grant scopes', async () => {
280
+ const alice = await TestDataGenerator.generateDidKeyPersona();
281
+ const bob = await TestDataGenerator.generateDidKeyPersona();
291
282
  // install protocol 1
292
- const protocol1 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol1' });
293
- const { message: protocol1Configure } = yield TestDataGenerator.generateProtocolsConfigure({
283
+ const protocol1 = { ...freeForAll, published: true, protocol: 'http://protcol1' };
284
+ const { message: protocol1Configure } = await TestDataGenerator.generateProtocolsConfigure({
294
285
  author: alice,
295
286
  protocolDefinition: protocol1,
296
287
  });
297
- const { status: protocol1ConfigureStatus } = yield dwn.processMessage(alice.did, protocol1Configure);
288
+ const { status: protocol1ConfigureStatus } = await dwn.processMessage(alice.did, protocol1Configure);
298
289
  expect(protocol1ConfigureStatus.code).toBe(202);
299
290
  // install protocol 2
300
- const protocol2 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol2' });
301
- const { message: protocol2Configure } = yield TestDataGenerator.generateProtocolsConfigure({
291
+ const protocol2 = { ...freeForAll, published: true, protocol: 'http://protcol2' };
292
+ const { message: protocol2Configure } = await TestDataGenerator.generateProtocolsConfigure({
302
293
  author: alice,
303
294
  protocolDefinition: protocol2,
304
295
  });
305
- const { status: protocol2ConfigureStatus } = yield dwn.processMessage(alice.did, protocol2Configure);
296
+ const { status: protocol2ConfigureStatus } = await dwn.processMessage(alice.did, protocol2Configure);
306
297
  expect(protocol2ConfigureStatus.code).toBe(202);
307
298
  // grant bob permission to subscribe for protocol 1
308
- const { message: grant1Message, dataStream: grant1DataStream } = yield TestDataGenerator.generateGrantCreate({
299
+ const { message: grant1Message, dataStream: grant1DataStream } = await TestDataGenerator.generateGrantCreate({
309
300
  author: alice,
310
301
  grantedTo: bob,
311
302
  scope: {
@@ -314,86 +305,86 @@ export function testMessagesSubscribeHandler() {
314
305
  protocol: protocol1.protocol
315
306
  }
316
307
  });
317
- const grant1Reply = yield dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
308
+ const grant1Reply = await dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
318
309
  expect(grant1Reply.status.code).toBe(202);
319
310
  // bob uses the grant to subscribe to protocol 1 messages
320
311
  const proto1MessageCids = [];
321
- const proto1Handler = (event) => __awaiter(this, void 0, void 0, function* () {
312
+ const proto1Handler = async (event) => {
322
313
  const { message } = event;
323
- const messageCid = yield Message.getCid(message);
314
+ const messageCid = await Message.getCid(message);
324
315
  proto1MessageCids.push(messageCid);
325
- });
326
- const { message: bobSubscribe1 } = yield TestDataGenerator.generateMessagesSubscribe({
316
+ };
317
+ const { message: bobSubscribe1 } = await TestDataGenerator.generateMessagesSubscribe({
327
318
  author: bob,
328
319
  filters: [{ protocol: protocol1.protocol }],
329
320
  permissionGrantId: grant1Message.recordId
330
321
  });
331
- const bobReply1 = yield dwn.processMessage(alice.did, bobSubscribe1, { subscriptionHandler: proto1Handler });
322
+ const bobReply1 = await dwn.processMessage(alice.did, bobSubscribe1, { subscriptionHandler: proto1Handler });
332
323
  expect(bobReply1.status.code).toBe(200);
333
324
  const allMessages = [];
334
- const allHandler = (event) => __awaiter(this, void 0, void 0, function* () {
325
+ const allHandler = async (event) => {
335
326
  const { message } = event;
336
- const messageCid = yield Message.getCid(message);
327
+ const messageCid = await Message.getCid(message);
337
328
  allMessages.push(messageCid);
338
- });
339
- const { message: allSubscribe } = yield TestDataGenerator.generateMessagesSubscribe({
329
+ };
330
+ const { message: allSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
340
331
  author: alice,
341
332
  });
342
- const allReply = yield dwn.processMessage(alice.did, allSubscribe, { subscriptionHandler: allHandler });
333
+ const allReply = await dwn.processMessage(alice.did, allSubscribe, { subscriptionHandler: allHandler });
343
334
  expect(allReply.status.code).toBe(200);
344
335
  // alice writes a message to protocol 1
345
- const { message: proto1Message, dataStream: proto1DataStream } = yield TestDataGenerator.generateRecordsWrite({
336
+ const { message: proto1Message, dataStream: proto1DataStream } = await TestDataGenerator.generateRecordsWrite({
346
337
  protocol: protocol1.protocol,
347
338
  protocolPath: 'post',
348
339
  schema: protocol1.types.post.schema,
349
340
  author: alice
350
341
  });
351
- const proto1Reply = yield dwn.processMessage(alice.did, proto1Message, { dataStream: proto1DataStream });
342
+ const proto1Reply = await dwn.processMessage(alice.did, proto1Message, { dataStream: proto1DataStream });
352
343
  expect(proto1Reply.status.code).toBe(202);
353
344
  // alice writes a message to protocol 2
354
- const { message: proto2Message, dataStream: proto2DataStream } = yield TestDataGenerator.generateRecordsWrite({
345
+ const { message: proto2Message, dataStream: proto2DataStream } = await TestDataGenerator.generateRecordsWrite({
355
346
  protocol: protocol2.protocol,
356
347
  protocolPath: 'post',
357
348
  schema: protocol2.types.post.schema,
358
349
  author: alice
359
350
  });
360
- const proto2Reply = yield dwn.processMessage(alice.did, proto2Message, { dataStream: proto2DataStream });
351
+ const proto2Reply = await dwn.processMessage(alice.did, proto2Message, { dataStream: proto2DataStream });
361
352
  expect(proto2Reply.status.code).toBe(202);
362
353
  // ensure that all messages have been received as a control
363
- yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
354
+ await Poller.pollUntilSuccessOrTimeout(async () => {
364
355
  expect(allMessages.length).toBe(2);
365
356
  const expectedAllCids = [
366
- yield Message.getCid(proto1Message),
367
- yield Message.getCid(proto2Message)
357
+ await Message.getCid(proto1Message),
358
+ await Message.getCid(proto2Message)
368
359
  ];
369
360
  expect(allMessages.sort()).toEqual(expectedAllCids.sort());
370
361
  // proto 1 messages should only have one message
371
362
  expect(proto1MessageCids.length).toBe(1);
372
- const expectedProto1Cids = [yield Message.getCid(proto1Message)];
363
+ const expectedProto1Cids = [await Message.getCid(proto1Message)];
373
364
  expect(proto1MessageCids.sort()).toEqual(expectedProto1Cids.sort());
374
- }));
375
- }));
376
- it('rejects subscribe of protocol filtered messages with mismatching protocol grant scopes', () => __awaiter(this, void 0, void 0, function* () {
377
- const alice = yield TestDataGenerator.generateDidKeyPersona();
378
- const bob = yield TestDataGenerator.generateDidKeyPersona();
365
+ });
366
+ });
367
+ it('rejects subscribe of protocol filtered messages with mismatching protocol grant scopes', async () => {
368
+ const alice = await TestDataGenerator.generateDidKeyPersona();
369
+ const bob = await TestDataGenerator.generateDidKeyPersona();
379
370
  // install protocol 1
380
- const protocol1 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol1' });
381
- const { message: protocol1Configure } = yield TestDataGenerator.generateProtocolsConfigure({
371
+ const protocol1 = { ...freeForAll, published: true, protocol: 'http://protcol1' };
372
+ const { message: protocol1Configure } = await TestDataGenerator.generateProtocolsConfigure({
382
373
  author: alice,
383
374
  protocolDefinition: protocol1,
384
375
  });
385
- const { status: protocol1ConfigureStatus } = yield dwn.processMessage(alice.did, protocol1Configure);
376
+ const { status: protocol1ConfigureStatus } = await dwn.processMessage(alice.did, protocol1Configure);
386
377
  expect(protocol1ConfigureStatus.code).toBe(202);
387
378
  // install protocol 2
388
- const protocol2 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol2' });
389
- const { message: protocol2Configure } = yield TestDataGenerator.generateProtocolsConfigure({
379
+ const protocol2 = { ...freeForAll, published: true, protocol: 'http://protcol2' };
380
+ const { message: protocol2Configure } = await TestDataGenerator.generateProtocolsConfigure({
390
381
  author: alice,
391
382
  protocolDefinition: protocol2,
392
383
  });
393
- const { status: protocol2ConfigureStatus } = yield dwn.processMessage(alice.did, protocol2Configure);
384
+ const { status: protocol2ConfigureStatus } = await dwn.processMessage(alice.did, protocol2Configure);
394
385
  expect(protocol2ConfigureStatus.code).toBe(202);
395
386
  // grant bob permission to subscribe for protocol 1
396
- const { message: grant1Message, dataStream: grant1DataStream } = yield TestDataGenerator.generateGrantCreate({
387
+ const { message: grant1Message, dataStream: grant1DataStream } = await TestDataGenerator.generateGrantCreate({
397
388
  author: alice,
398
389
  grantedTo: bob,
399
390
  scope: {
@@ -402,30 +393,30 @@ export function testMessagesSubscribeHandler() {
402
393
  protocol: protocol1.protocol
403
394
  }
404
395
  });
405
- const grant1Reply = yield dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
396
+ const grant1Reply = await dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
406
397
  expect(grant1Reply.status.code).toBe(202);
407
398
  // bob uses the grant for protocol 1 to subscribe for protocol 2 messages
408
- const { message: bobSubscribe1 } = yield TestDataGenerator.generateMessagesSubscribe({
399
+ const { message: bobSubscribe1 } = await TestDataGenerator.generateMessagesSubscribe({
409
400
  author: bob,
410
401
  filters: [{ protocol: protocol2.protocol }],
411
402
  permissionGrantId: grant1Message.recordId
412
403
  });
413
- const bobReply1 = yield dwn.processMessage(alice.did, bobSubscribe1);
404
+ const bobReply1 = await dwn.processMessage(alice.did, bobSubscribe1);
414
405
  expect(bobReply1.status.code).toBe(401);
415
406
  expect(bobReply1.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol);
416
407
  expect(bobReply1.subscription).toBeUndefined();
417
408
  // bob attempts to use the grant for protocol 1 to subscribe to messages in protocol 1 OR protocol 2 given two filters
418
409
  // this should fail because the grant is scoped to protocol 1 only
419
- const { message: bobSubscribe2 } = yield TestDataGenerator.generateMessagesSubscribe({
410
+ const { message: bobSubscribe2 } = await TestDataGenerator.generateMessagesSubscribe({
420
411
  author: bob,
421
412
  filters: [{ protocol: protocol1.protocol }, { protocol: protocol2.protocol }],
422
413
  permissionGrantId: grant1Message.recordId
423
414
  });
424
- const bobReply2 = yield dwn.processMessage(alice.did, bobSubscribe2);
415
+ const bobReply2 = await dwn.processMessage(alice.did, bobSubscribe2);
425
416
  expect(bobReply2.status.code).toBe(401);
426
417
  expect(bobReply2.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol);
427
418
  expect(bobReply2.subscription).toBeUndefined();
428
- }));
419
+ });
429
420
  });
430
421
  });
431
422
  });