@enbox/dwn-sdk-js 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +762 -911
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/abstract-message.js +4 -0
  6. package/dist/esm/src/core/abstract-message.js.map +1 -1
  7. package/dist/esm/src/core/auth.js +22 -33
  8. package/dist/esm/src/core/auth.js.map +1 -1
  9. package/dist/esm/src/core/constants.js +11 -0
  10. package/dist/esm/src/core/constants.js.map +1 -0
  11. package/dist/esm/src/core/core-protocol.js +44 -0
  12. package/dist/esm/src/core/core-protocol.js.map +1 -0
  13. package/dist/esm/src/core/dwn-constant.js +7 -7
  14. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  15. package/dist/esm/src/core/dwn-error.js +10 -12
  16. package/dist/esm/src/core/dwn-error.js.map +1 -1
  17. package/dist/esm/src/core/grant-authorization.js +50 -52
  18. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  19. package/dist/esm/src/core/message.js +85 -116
  20. package/dist/esm/src/core/message.js.map +1 -1
  21. package/dist/esm/src/core/messages-grant-authorization.js +63 -78
  22. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  23. package/dist/esm/src/core/protocol-authorization-action.js +266 -0
  24. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
  25. package/dist/esm/src/core/protocol-authorization-validation.js +321 -0
  26. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
  27. package/dist/esm/src/core/protocol-authorization.js +144 -741
  28. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  29. package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
  30. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  31. package/dist/esm/src/core/record-chain.js +64 -0
  32. package/dist/esm/src/core/record-chain.js.map +1 -0
  33. package/dist/esm/src/core/records-grant-authorization.js +53 -72
  34. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  35. package/dist/esm/src/core/resumable-task-manager.js +50 -65
  36. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  37. package/dist/esm/src/core/tenant-gate.js +2 -13
  38. package/dist/esm/src/core/tenant-gate.js.map +1 -1
  39. package/dist/esm/src/dwn.js +108 -101
  40. package/dist/esm/src/dwn.js.map +1 -1
  41. package/dist/esm/src/event-stream/event-emitter-event-log.js +204 -0
  42. package/dist/esm/src/event-stream/event-emitter-event-log.js.map +1 -0
  43. package/dist/esm/src/handlers/messages-read.js +67 -81
  44. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  45. package/dist/esm/src/handlers/messages-subscribe.js +51 -63
  46. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  47. package/dist/esm/src/handlers/messages-sync.js +75 -89
  48. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  49. package/dist/esm/src/handlers/protocols-configure.js +153 -163
  50. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  51. package/dist/esm/src/handlers/protocols-query.js +52 -55
  52. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  53. package/dist/esm/src/handlers/records-count.js +97 -85
  54. package/dist/esm/src/handlers/records-count.js.map +1 -1
  55. package/dist/esm/src/handlers/records-delete.js +75 -93
  56. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  57. package/dist/esm/src/handlers/records-query.js +116 -105
  58. package/dist/esm/src/handlers/records-query.js.map +1 -1
  59. package/dist/esm/src/handlers/records-read.js +130 -132
  60. package/dist/esm/src/handlers/records-read.js.map +1 -1
  61. package/dist/esm/src/handlers/records-subscribe.js +164 -104
  62. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  63. package/dist/esm/src/handlers/records-write.js +213 -280
  64. package/dist/esm/src/handlers/records-write.js.map +1 -1
  65. package/dist/esm/src/index.js +5 -2
  66. package/dist/esm/src/index.js.map +1 -1
  67. package/dist/esm/src/interfaces/messages-read.js +24 -32
  68. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  69. package/dist/esm/src/interfaces/messages-subscribe.js +28 -41
  70. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  71. package/dist/esm/src/interfaces/messages-sync.js +26 -40
  72. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  73. package/dist/esm/src/interfaces/protocols-configure.js +87 -65
  74. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  75. package/dist/esm/src/interfaces/protocols-query.js +55 -68
  76. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-count.js +50 -66
  78. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-delete.js +45 -55
  80. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-query.js +60 -76
  82. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  83. package/dist/esm/src/interfaces/records-read.js +51 -67
  84. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  85. package/dist/esm/src/interfaces/records-subscribe.js +53 -68
  86. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  87. package/dist/esm/src/interfaces/records-write-query.js +102 -0
  88. package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
  89. package/dist/esm/src/interfaces/records-write-signing.js +81 -0
  90. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
  91. package/dist/esm/src/interfaces/records-write.js +396 -610
  92. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  93. package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
  94. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  95. package/dist/esm/src/jose/jws/general/builder.js +23 -35
  96. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  97. package/dist/esm/src/jose/jws/general/verifier.js +56 -69
  98. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  99. package/dist/esm/src/protocols/permission-grant.js +43 -14
  100. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  101. package/dist/esm/src/protocols/permission-request.js +28 -14
  102. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  103. package/dist/esm/src/protocols/permissions.js +325 -227
  104. package/dist/esm/src/protocols/permissions.js.map +1 -1
  105. package/dist/esm/src/smt/smt-store-level.js +42 -64
  106. package/dist/esm/src/smt/smt-store-level.js.map +1 -1
  107. package/dist/esm/src/smt/smt-store-memory.js +19 -45
  108. package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
  109. package/dist/esm/src/smt/smt-utils.js +28 -45
  110. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  111. package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
  112. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
  113. package/dist/esm/src/state-index/state-index-level.js +113 -150
  114. package/dist/esm/src/state-index/state-index-level.js.map +1 -1
  115. package/dist/esm/src/store/blockstore-level.js +54 -156
  116. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  117. package/dist/esm/src/store/blockstore-mock.js +48 -153
  118. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  119. package/dist/esm/src/store/data-store-level.js +137 -100
  120. package/dist/esm/src/store/data-store-level.js.map +1 -1
  121. package/dist/esm/src/store/index-level-compound.js +246 -0
  122. package/dist/esm/src/store/index-level-compound.js.map +1 -0
  123. package/dist/esm/src/store/index-level.js +307 -715
  124. package/dist/esm/src/store/index-level.js.map +1 -1
  125. package/dist/esm/src/store/level-wrapper.js +143 -244
  126. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  127. package/dist/esm/src/store/message-store-level.js +71 -94
  128. package/dist/esm/src/store/message-store-level.js.map +1 -1
  129. package/dist/esm/src/store/resumable-task-store-level.js +62 -101
  130. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
  131. package/dist/esm/src/store/storage-controller.js +131 -146
  132. package/dist/esm/src/store/storage-controller.js.map +1 -1
  133. package/dist/esm/src/types/permission-types.js.map +1 -1
  134. package/dist/esm/src/types/protocols-types.js +10 -0
  135. package/dist/esm/src/types/protocols-types.js.map +1 -1
  136. package/dist/esm/src/types/records-types.js.map +1 -1
  137. package/dist/esm/src/utils/abort.js +8 -19
  138. package/dist/esm/src/utils/abort.js.map +1 -1
  139. package/dist/esm/src/utils/array.js +15 -49
  140. package/dist/esm/src/utils/array.js.map +1 -1
  141. package/dist/esm/src/utils/cid.js +29 -77
  142. package/dist/esm/src/utils/cid.js.map +1 -1
  143. package/dist/esm/src/utils/data-stream.js +37 -65
  144. package/dist/esm/src/utils/data-stream.js.map +1 -1
  145. package/dist/esm/src/utils/encryption.js +136 -162
  146. package/dist/esm/src/utils/encryption.js.map +1 -1
  147. package/dist/esm/src/utils/filter.js +1 -12
  148. package/dist/esm/src/utils/filter.js.map +1 -1
  149. package/dist/esm/src/utils/hd-key.js +45 -71
  150. package/dist/esm/src/utils/hd-key.js.map +1 -1
  151. package/dist/esm/src/utils/jws.js +9 -20
  152. package/dist/esm/src/utils/jws.js.map +1 -1
  153. package/dist/esm/src/utils/memory-cache.js +12 -23
  154. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  155. package/dist/esm/src/utils/messages.js +21 -33
  156. package/dist/esm/src/utils/messages.js.map +1 -1
  157. package/dist/esm/src/utils/private-key-signer.js +9 -17
  158. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  159. package/dist/esm/src/utils/protocols.js +62 -70
  160. package/dist/esm/src/utils/protocols.js.map +1 -1
  161. package/dist/esm/src/utils/records.js +103 -166
  162. package/dist/esm/src/utils/records.js.map +1 -1
  163. package/dist/esm/src/utils/secp256k1.js +60 -96
  164. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  165. package/dist/esm/src/utils/secp256r1.js +54 -71
  166. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  167. package/dist/esm/src/utils/time.js +5 -18
  168. package/dist/esm/src/utils/time.js.map +1 -1
  169. package/dist/esm/src/utils/url.js +3 -3
  170. package/dist/esm/src/utils/url.js.map +1 -1
  171. package/dist/esm/tests/core/auth.spec.js +3 -12
  172. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  173. package/dist/esm/tests/core/message.spec.js +50 -59
  174. package/dist/esm/tests/core/message.spec.js.map +1 -1
  175. package/dist/esm/tests/core/protocol-authorization.spec.js +10 -18
  176. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  177. package/dist/esm/tests/dwn.spec.js +65 -89
  178. package/dist/esm/tests/dwn.spec.js.map +1 -1
  179. package/dist/esm/tests/event-emitter-event-log.spec.js +305 -0
  180. package/dist/esm/tests/event-emitter-event-log.spec.js.map +1 -0
  181. package/dist/esm/tests/features/author-delegated-grant.spec.js +337 -347
  182. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  183. package/dist/esm/tests/features/owner-delegated-grant.spec.js +160 -172
  184. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  185. package/dist/esm/tests/features/owner-signature.spec.js +78 -82
  186. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  187. package/dist/esm/tests/features/permissions.spec.js +449 -184
  188. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  189. package/dist/esm/tests/features/protocol-composition.spec.js +981 -360
  190. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  191. package/dist/esm/tests/features/protocol-create-action.spec.js +45 -54
  192. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  193. package/dist/esm/tests/features/protocol-delete-action.spec.js +99 -108
  194. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  195. package/dist/esm/tests/features/protocol-update-action.spec.js +108 -117
  196. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  197. package/dist/esm/tests/features/records-immutable.spec.js +315 -0
  198. package/dist/esm/tests/features/records-immutable.spec.js.map +1 -0
  199. package/dist/esm/tests/features/records-prune.spec.js +178 -194
  200. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  201. package/dist/esm/tests/features/records-record-limit.spec.js +542 -0
  202. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -0
  203. package/dist/esm/tests/features/records-tags.spec.js +456 -463
  204. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  205. package/dist/esm/tests/features/resumable-tasks.spec.js +88 -98
  206. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  207. package/dist/esm/tests/handlers/messages-read.spec.js +215 -210
  208. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  209. package/dist/esm/tests/handlers/messages-subscribe.spec.js +309 -171
  210. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  211. package/dist/esm/tests/handlers/messages-sync.spec.js +272 -199
  212. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  213. package/dist/esm/tests/handlers/protocols-configure.spec.js +247 -241
  214. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  215. package/dist/esm/tests/handlers/protocols-query.spec.js +159 -172
  216. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  217. package/dist/esm/tests/handlers/records-count.spec.js +101 -105
  218. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  219. package/dist/esm/tests/handlers/records-delete.spec.js +266 -279
  220. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  221. package/dist/esm/tests/handlers/records-query.spec.js +984 -996
  222. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  223. package/dist/esm/tests/handlers/records-read.spec.js +542 -671
  224. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  225. package/dist/esm/tests/handlers/records-subscribe.spec.js +433 -302
  226. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  227. package/dist/esm/tests/handlers/records-write.spec.js +1216 -1140
  228. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  229. package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
  230. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  231. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
  232. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  233. package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
  234. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  235. package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
  236. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  237. package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
  238. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  239. package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
  240. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  241. package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
  242. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  243. package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
  244. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  245. package/dist/esm/tests/interfaces/records-write.spec.js +190 -219
  246. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  247. package/dist/esm/tests/jose/jws/general.spec.js +36 -45
  248. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  249. package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
  250. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
  251. package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
  252. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  253. package/dist/esm/tests/protocols/permissions.spec.js +49 -55
  254. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  255. package/dist/esm/tests/scenarios/aggregator.spec.js +127 -138
  256. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  257. package/dist/esm/tests/scenarios/deleted-record.spec.js +372 -36
  258. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  259. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +55 -64
  260. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  261. package/dist/esm/tests/scenarios/nested-roles.spec.js +66 -76
  262. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  263. package/dist/esm/tests/scenarios/subscriptions.spec.js +451 -354
  264. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  265. package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
  266. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
  267. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
  268. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
  269. package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
  270. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
  271. package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
  272. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  273. package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
  274. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  275. package/dist/esm/tests/store/data-store-level.spec.js +160 -108
  276. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  277. package/dist/esm/tests/store/index-level.spec.js +404 -414
  278. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  279. package/dist/esm/tests/store/message-store-level.spec.js +13 -22
  280. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  281. package/dist/esm/tests/store/message-store.spec.js +229 -238
  282. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  283. package/dist/esm/tests/test-event-stream.js +12 -13
  284. package/dist/esm/tests/test-event-stream.js.map +1 -1
  285. package/dist/esm/tests/test-stores.js +16 -13
  286. package/dist/esm/tests/test-stores.js.map +1 -1
  287. package/dist/esm/tests/test-suite.js +8 -15
  288. package/dist/esm/tests/test-suite.js.map +1 -1
  289. package/dist/esm/tests/utils/cid.spec.js +24 -33
  290. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  291. package/dist/esm/tests/utils/data-stream.spec.js +48 -57
  292. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  293. package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
  294. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  295. package/dist/esm/tests/utils/encryption.spec.js +229 -82
  296. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  297. package/dist/esm/tests/utils/filters.spec.js +46 -55
  298. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  299. package/dist/esm/tests/utils/hd-key.spec.js +10 -19
  300. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  301. package/dist/esm/tests/utils/jws.spec.js +3 -12
  302. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  303. package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
  304. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  305. package/dist/esm/tests/utils/messages.spec.js +18 -20
  306. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  307. package/dist/esm/tests/utils/poller.js +22 -33
  308. package/dist/esm/tests/utils/poller.js.map +1 -1
  309. package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
  310. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  311. package/dist/esm/tests/utils/records.spec.js +14 -27
  312. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  313. package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
  314. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  315. package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
  316. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  317. package/dist/esm/tests/utils/test-data-generator.js +446 -467
  318. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  319. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
  320. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  321. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
  322. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  323. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
  324. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  325. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
  326. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  327. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
  328. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  329. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
  330. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  331. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
  332. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
  333. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +44 -24
  334. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  335. package/dist/types/generated/precompiled-validators.d.ts +49 -40
  336. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  337. package/dist/types/src/core/constants.d.ts +11 -0
  338. package/dist/types/src/core/constants.d.ts.map +1 -0
  339. package/dist/types/src/core/core-protocol.d.ts +89 -0
  340. package/dist/types/src/core/core-protocol.d.ts.map +1 -0
  341. package/dist/types/src/core/dwn-error.d.ts +9 -12
  342. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  343. package/dist/types/src/core/grant-authorization.d.ts +6 -2
  344. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  345. package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
  346. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
  347. package/dist/types/src/core/protocol-authorization-validation.d.ts +81 -0
  348. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
  349. package/dist/types/src/core/protocol-authorization.d.ts +24 -106
  350. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  351. package/dist/types/src/core/record-chain.d.ts +24 -0
  352. package/dist/types/src/core/record-chain.d.ts.map +1 -0
  353. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  354. package/dist/types/src/dwn.d.ts +19 -7
  355. package/dist/types/src/dwn.d.ts.map +1 -1
  356. package/dist/types/src/event-stream/event-emitter-event-log.d.ts +50 -0
  357. package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +1 -0
  358. package/dist/types/src/handlers/messages-read.d.ts +3 -8
  359. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  360. package/dist/types/src/handlers/messages-subscribe.d.ts +6 -10
  361. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  362. package/dist/types/src/handlers/messages-sync.d.ts +3 -8
  363. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  364. package/dist/types/src/handlers/protocols-configure.d.ts +3 -10
  365. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  366. package/dist/types/src/handlers/protocols-query.d.ts +3 -8
  367. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
  368. package/dist/types/src/handlers/records-count.d.ts +3 -6
  369. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  370. package/dist/types/src/handlers/records-delete.d.ts +3 -8
  371. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  372. package/dist/types/src/handlers/records-query.d.ts +3 -8
  373. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  374. package/dist/types/src/handlers/records-read.d.ts +3 -8
  375. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  376. package/dist/types/src/handlers/records-subscribe.d.ts +8 -10
  377. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  378. package/dist/types/src/handlers/records-write.d.ts +4 -24
  379. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  380. package/dist/types/src/index.d.ts +8 -4
  381. package/dist/types/src/index.d.ts.map +1 -1
  382. package/dist/types/src/interfaces/messages-subscribe.d.ts +5 -0
  383. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  384. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  385. package/dist/types/src/interfaces/records-subscribe.d.ts +5 -0
  386. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  387. package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
  388. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
  389. package/dist/types/src/interfaces/records-write-signing.d.ts +34 -0
  390. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
  391. package/dist/types/src/interfaces/records-write.d.ts +13 -53
  392. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  393. package/dist/types/src/protocols/permission-grant.d.ts +1 -1
  394. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  395. package/dist/types/src/protocols/permission-request.d.ts +1 -1
  396. package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
  397. package/dist/types/src/protocols/permissions.d.ts +40 -3
  398. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  399. package/dist/types/src/state-index/state-index-level.d.ts.map +1 -1
  400. package/dist/types/src/store/data-store-level.d.ts +20 -4
  401. package/dist/types/src/store/data-store-level.d.ts.map +1 -1
  402. package/dist/types/src/store/index-level-compound.d.ts +70 -0
  403. package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
  404. package/dist/types/src/store/index-level.d.ts +4 -58
  405. package/dist/types/src/store/index-level.d.ts.map +1 -1
  406. package/dist/types/src/store/storage-controller.d.ts +4 -4
  407. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  408. package/dist/types/src/types/message-types.d.ts +3 -3
  409. package/dist/types/src/types/message-types.d.ts.map +1 -1
  410. package/dist/types/src/types/messages-types.d.ts +12 -3
  411. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  412. package/dist/types/src/types/method-handler.d.ts +24 -3
  413. package/dist/types/src/types/method-handler.d.ts.map +1 -1
  414. package/dist/types/src/types/permission-types.d.ts +7 -0
  415. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  416. package/dist/types/src/types/protocols-types.d.ts +41 -1
  417. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  418. package/dist/types/src/types/records-types.d.ts +16 -6
  419. package/dist/types/src/types/records-types.d.ts.map +1 -1
  420. package/dist/types/src/types/subscriptions.d.ts +151 -13
  421. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  422. package/dist/types/src/utils/hd-key.d.ts +1 -9
  423. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  424. package/dist/types/src/utils/messages.d.ts +7 -5
  425. package/dist/types/src/utils/messages.d.ts.map +1 -1
  426. package/dist/types/src/utils/protocols.d.ts +5 -0
  427. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  428. package/dist/types/src/utils/records.d.ts +1 -11
  429. package/dist/types/src/utils/records.d.ts.map +1 -1
  430. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  431. package/dist/types/tests/event-emitter-event-log.spec.d.ts +2 -0
  432. package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +1 -0
  433. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  434. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  435. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  436. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  437. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  438. package/dist/types/tests/features/records-immutable.spec.d.ts +2 -0
  439. package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -0
  440. package/dist/types/tests/features/records-record-limit.spec.d.ts +2 -0
  441. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -0
  442. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  443. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  444. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  445. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  446. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  447. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  448. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  449. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  450. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  451. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  452. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  453. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  454. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
  455. package/dist/types/tests/test-event-stream.d.ts +11 -12
  456. package/dist/types/tests/test-event-stream.d.ts.map +1 -1
  457. package/dist/types/tests/test-suite.d.ts +2 -2
  458. package/dist/types/tests/test-suite.d.ts.map +1 -1
  459. package/dist/types/tests/utils/test-data-generator.d.ts +18 -0
  460. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  461. package/package.json +5 -4
  462. package/src/core/constants.ts +11 -0
  463. package/src/core/core-protocol.ts +129 -0
  464. package/src/core/dwn-error.ts +15 -12
  465. package/src/core/grant-authorization.ts +20 -3
  466. package/src/core/protocol-authorization-action.ts +377 -0
  467. package/src/core/protocol-authorization-validation.ts +487 -0
  468. package/src/core/protocol-authorization.ts +111 -856
  469. package/src/core/record-chain.ts +99 -0
  470. package/src/core/records-grant-authorization.ts +6 -8
  471. package/src/dwn.ts +58 -73
  472. package/src/event-stream/event-emitter-event-log.ts +283 -0
  473. package/src/handlers/messages-read.ts +8 -9
  474. package/src/handlers/messages-subscribe.ts +24 -28
  475. package/src/handlers/messages-sync.ts +10 -16
  476. package/src/handlers/protocols-configure.ts +47 -32
  477. package/src/handlers/protocols-query.ts +6 -9
  478. package/src/handlers/records-count.ts +11 -10
  479. package/src/handlers/records-delete.ts +12 -21
  480. package/src/handlers/records-query.ts +12 -12
  481. package/src/handlers/records-read.ts +34 -22
  482. package/src/handlers/records-subscribe.ts +47 -26
  483. package/src/handlers/records-write.ts +47 -104
  484. package/src/index.ts +9 -5
  485. package/src/interfaces/messages-subscribe.ts +7 -1
  486. package/src/interfaces/protocols-configure.ts +73 -8
  487. package/src/interfaces/records-count.ts +1 -1
  488. package/src/interfaces/records-delete.ts +1 -1
  489. package/src/interfaces/records-query.ts +1 -1
  490. package/src/interfaces/records-read.ts +1 -1
  491. package/src/interfaces/records-subscribe.ts +8 -1
  492. package/src/interfaces/records-write-query.ts +139 -0
  493. package/src/interfaces/records-write-signing.ts +123 -0
  494. package/src/interfaces/records-write.ts +66 -261
  495. package/src/protocols/permission-grant.ts +1 -1
  496. package/src/protocols/permission-request.ts +1 -1
  497. package/src/protocols/permissions.ts +148 -6
  498. package/src/state-index/state-index-level.ts +5 -7
  499. package/src/store/data-store-level.ts +124 -34
  500. package/src/store/index-level-compound.ts +324 -0
  501. package/src/store/index-level.ts +68 -341
  502. package/src/store/storage-controller.ts +11 -11
  503. package/src/types/message-types.ts +3 -3
  504. package/src/types/messages-types.ts +12 -3
  505. package/src/types/method-handler.ts +26 -4
  506. package/src/types/mitt.d.ts +28 -0
  507. package/src/types/permission-types.ts +7 -0
  508. package/src/types/protocols-types.ts +46 -0
  509. package/src/types/records-types.ts +16 -6
  510. package/src/types/subscriptions.ts +178 -14
  511. package/src/utils/hd-key.ts +0 -9
  512. package/src/utils/messages.ts +17 -37
  513. package/src/utils/protocols.ts +8 -0
  514. package/src/utils/records.ts +8 -59
  515. package/dist/esm/src/event-stream/event-emitter-stream.js +0 -60
  516. package/dist/esm/src/event-stream/event-emitter-stream.js.map +0 -1
  517. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +0 -77
  518. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +0 -1
  519. package/dist/esm/tests/event-stream/event-stream.spec.js +0 -123
  520. package/dist/esm/tests/event-stream/event-stream.spec.js.map +0 -1
  521. package/dist/types/src/event-stream/event-emitter-stream.d.ts +0 -23
  522. package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +0 -1
  523. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts +0 -2
  524. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +0 -1
  525. package/dist/types/tests/event-stream/event-stream.spec.d.ts +0 -2
  526. package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +0 -1
  527. package/src/event-stream/event-emitter-stream.ts +0 -69
@@ -1,30 +1,21 @@
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
- };
1
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
2
+ import freeForAll from '../vectors/protocol-definitions/free-for-all.json' with { type: 'json' };
3
+ import sinon from 'sinon';
10
4
  import { Dwn } from '../../src/dwn.js';
11
5
  import { DwnErrorCode } from '../../src/core/dwn-error.js';
12
- import freeForAll from '../vectors/protocol-definitions/free-for-all.json' with { type: 'json' };
13
6
  import { Jws } from '../../src/utils/jws.js';
14
7
  import { Message } from '../../src/core/message.js';
15
8
  import { MessagesSubscribe } from '../../src/interfaces/messages-subscribe.js';
16
9
  import { MessagesSubscribeHandler } from '../../src/handlers/messages-subscribe.js';
17
10
  import { Poller } from '../utils/poller.js';
18
- import sinon from 'sinon';
19
11
  import { TestDataGenerator } from '../utils/test-data-generator.js';
20
- import { TestEventStream } from '../test-event-stream.js';
12
+ import { TestEventLog } from '../test-event-stream.js';
21
13
  import { TestStores } from '../test-stores.js';
22
- import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
23
14
  import { DidKey, UniversalResolver } from '@enbox/dids';
24
15
  import { DwnInterfaceName, DwnMethodName } from '../../src/index.js';
25
16
  export function testMessagesSubscribeHandler() {
26
17
  describe('MessagesSubscribe.handle()', () => {
27
- describe('EventStream disabled', () => {
18
+ describe('EventLog disabled', () => {
28
19
  let didResolver;
29
20
  let messageStore;
30
21
  let dataStore;
@@ -33,147 +24,229 @@ 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 eventLog
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
- expect(subscriptionMessageReply.status.detail).toContain(DwnErrorCode.MessagesSubscribeEventStreamUnimplemented);
71
- }));
61
+ expect(subscriptionMessageReply.status.detail).toContain(DwnErrorCode.MessagesSubscribeEventLogUnimplemented);
62
+ });
72
63
  });
73
- describe('EventStream enabled', () => {
64
+ describe('EventLog enabled', () => {
74
65
  let didResolver;
75
66
  let messageStore;
76
67
  let dataStore;
77
68
  let resumableTaskStore;
78
69
  let stateIndex;
79
- let eventStream;
70
+ let eventLog;
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;
87
78
  dataStore = stores.dataStore;
88
79
  resumableTaskStore = stores.resumableTaskStore;
89
80
  stateIndex = stores.stateIndex;
90
- eventStream = TestEventStream.get();
91
- dwn = yield Dwn.create({
81
+ eventLog = TestEventLog.get();
82
+ eventLog = TestEventLog.get();
83
+ dwn = await Dwn.create({
92
84
  didResolver,
93
85
  messageStore,
94
86
  dataStore,
95
87
  resumableTaskStore,
96
88
  stateIndex,
97
- eventStream,
89
+ eventLog,
98
90
  });
99
- }));
100
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
91
+ });
92
+ beforeEach(async () => {
101
93
  sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
102
94
  // 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 });
95
+ await messageStore.clear();
96
+ await dataStore.clear();
97
+ await resumableTaskStore.clear();
98
+ await stateIndex.clear();
99
+ });
100
+ afterAll(async () => {
101
+ await dwn.close();
102
+ });
103
+ it('returns a 400 if message is invalid', async () => {
104
+ const alice = await TestDataGenerator.generateDidKeyPersona();
105
+ const { message } = await TestDataGenerator.generateMessagesSubscribe({ author: alice });
114
106
  // add an invalid property to the descriptor
115
107
  message['descriptor']['invalid'] = 'invalid';
116
- const messagesSubscribeHandler = new MessagesSubscribeHandler(didResolver, messageStore, eventStream);
117
- const reply = yield messagesSubscribeHandler.handle({ tenant: alice.did, message, subscriptionHandler: (_) => { } });
108
+ const messagesSubscribeHandler = new MessagesSubscribeHandler({
109
+ didResolver, messageStore, eventLog,
110
+ });
111
+ const reply = await messagesSubscribeHandler.handle({ tenant: alice.did, message, subscriptionHandler: (_) => { } });
118
112
  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();
113
+ });
114
+ it('should allow tenant to subscribe their own event stream', async () => {
115
+ const alice = await TestDataGenerator.generateDidKeyPersona();
116
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
122
117
  // set up a promise to read later that captures the emitted messageCid
123
118
  let handler;
124
119
  const messageSubscriptionPromise = new Promise((resolve) => {
125
- handler = (event) => __awaiter(this, void 0, void 0, function* () {
126
- const { message } = event;
127
- const messageCid = yield Message.getCid(message);
120
+ handler = async (msg) => {
121
+ if (msg.type !== 'event') {
122
+ return;
123
+ }
124
+ const { message } = msg.event;
125
+ const messageCid = await Message.getCid(message);
128
126
  resolve(messageCid);
129
- });
127
+ };
130
128
  });
131
129
  // testing MessagesSubscribe
132
- const messagesSubscribe = yield MessagesSubscribe.create({
130
+ const messagesSubscribe = await MessagesSubscribe.create({
133
131
  signer: Jws.createSigner(alice),
134
132
  });
135
- const subscriptionReply = yield dwn.processMessage(alice.did, messagesSubscribe.message, { subscriptionHandler: handler });
133
+ const subscriptionReply = await dwn.processMessage(alice.did, messagesSubscribe.message, { subscriptionHandler: handler });
136
134
  expect(subscriptionReply.status.code).toBe(200);
137
135
  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 });
136
+ const messageWrite = await TestDataGenerator.generateRecordsWrite({ author: alice });
137
+ const writeReply = await dwn.processMessage(alice.did, messageWrite.message, { dataStream: messageWrite.dataStream });
140
138
  expect(writeReply.status.code).toBe(202);
141
- const messageCid = yield Message.getCid(messageWrite.message);
139
+ const messageCid = await Message.getCid(messageWrite.message);
142
140
  // control: ensure that the event exists
143
- const events = yield stateIndex.getLeaves(alice.did, []);
144
- expect(events.length).toBe(1);
145
- expect(events[0]).toBe(messageCid);
141
+ const events = await stateIndex.getLeaves(alice.did, []);
142
+ expect(events.length).toBe(2);
143
+ expect(events).toContain(messageCid);
146
144
  // await the event
147
- const resolvedCid = yield messageSubscriptionPromise;
145
+ const resolvedCid = await messageSubscriptionPromise;
148
146
  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();
147
+ });
148
+ it('should not allow non-tenant to subscribe to an event stream they are not authorized for', async () => {
149
+ const alice = await TestDataGenerator.generateDidKeyPersona();
150
+ const bob = await TestDataGenerator.generateDidKeyPersona();
153
151
  // test anonymous request
154
- const anonymousSubscription = yield TestDataGenerator.generateMessagesSubscribe();
152
+ const anonymousSubscription = await TestDataGenerator.generateMessagesSubscribe();
155
153
  delete anonymousSubscription.message.authorization;
156
- const anonymousReply = yield dwn.processMessage(alice.did, anonymousSubscription.message);
154
+ const anonymousReply = await dwn.processMessage(alice.did, anonymousSubscription.message);
157
155
  expect(anonymousReply.status.code).toBe(400);
158
156
  expect(anonymousReply.status.detail).toContain(`MessagesSubscribe: must have required property 'authorization'`);
159
157
  expect(anonymousReply.subscription).toBeUndefined();
160
158
  // testing MessagesSubscribe
161
- const messagesSubscribe = yield MessagesSubscribe.create({
159
+ const messagesSubscribe = await MessagesSubscribe.create({
162
160
  signer: Jws.createSigner(bob),
163
161
  });
164
- const subscriptionReply = yield dwn.processMessage(alice.did, messagesSubscribe.message);
162
+ const subscriptionReply = await dwn.processMessage(alice.did, messagesSubscribe.message);
165
163
  expect(subscriptionReply.status.code).toBe(401);
166
164
  expect(subscriptionReply.subscription).toBeUndefined();
167
- }));
165
+ });
166
+ describe('cursor-based subscriptions', () => {
167
+ it('should deliver catch-up events through the handler when cursor is provided', async () => {
168
+ const alice = await TestDataGenerator.generateDidKeyPersona();
169
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
170
+ // Read the EventLog to get a cursor before writing.
171
+ const { cursor: cursorBefore } = await eventLog.read(alice.did);
172
+ // Write a record before subscribing.
173
+ const write1 = await TestDataGenerator.generateRecordsWrite({ author: alice });
174
+ const write1Reply = await dwn.processMessage(alice.did, write1.message, { dataStream: write1.dataStream });
175
+ expect(write1Reply.status.code).toBe(202);
176
+ const write1Cid = await Message.getCid(write1.message);
177
+ // Subscribe with cursor from before the write to catch up.
178
+ const messageCids = [];
179
+ const handler = async (msg) => {
180
+ if (msg.type !== 'event') {
181
+ return;
182
+ }
183
+ const { message } = msg.event;
184
+ const cid = await Message.getCid(message);
185
+ messageCids.push(cid);
186
+ };
187
+ const { message: subMessage } = await TestDataGenerator.generateMessagesSubscribe({
188
+ author: alice,
189
+ cursor: cursorBefore,
190
+ });
191
+ const subReply = await dwn.processMessage(alice.did, subMessage, { subscriptionHandler: handler });
192
+ expect(subReply.status.code).toBe(200);
193
+ expect(subReply.subscription).toBeDefined();
194
+ // Wait for the catch-up events.
195
+ await Poller.pollUntilSuccessOrTimeout(async () => {
196
+ expect(messageCids.length).toBeGreaterThanOrEqual(1);
197
+ expect(messageCids).toContain(write1Cid);
198
+ });
199
+ });
200
+ it('should receive live events after cursor catch-up completes', async () => {
201
+ const alice = await TestDataGenerator.generateDidKeyPersona();
202
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
203
+ // Write before subscribing.
204
+ const write1 = await TestDataGenerator.generateRecordsWrite({ author: alice });
205
+ await dwn.processMessage(alice.did, write1.message, { dataStream: write1.dataStream });
206
+ // Read to get cursor after write1.
207
+ const { cursor: cursorAfterWrite1 } = await eventLog.read(alice.did);
208
+ // Write another record that we'll catch up on.
209
+ const write2 = await TestDataGenerator.generateRecordsWrite({ author: alice });
210
+ await dwn.processMessage(alice.did, write2.message, { dataStream: write2.dataStream });
211
+ const write2Cid = await Message.getCid(write2.message);
212
+ const messageCids = [];
213
+ const handler = async (msg) => {
214
+ if (msg.type !== 'event') {
215
+ return;
216
+ }
217
+ const { message } = msg.event;
218
+ const cid = await Message.getCid(message);
219
+ messageCids.push(cid);
220
+ };
221
+ const { message: subMessage } = await TestDataGenerator.generateMessagesSubscribe({
222
+ author: alice,
223
+ cursor: cursorAfterWrite1,
224
+ });
225
+ const subReply = await dwn.processMessage(alice.did, subMessage, { subscriptionHandler: handler });
226
+ expect(subReply.status.code).toBe(200);
227
+ // Wait for catch-up (write2).
228
+ await Poller.pollUntilSuccessOrTimeout(async () => {
229
+ expect(messageCids).toContain(write2Cid);
230
+ });
231
+ // Write a live record.
232
+ const write3 = await TestDataGenerator.generateRecordsWrite({ author: alice });
233
+ await dwn.processMessage(alice.did, write3.message, { dataStream: write3.dataStream });
234
+ const write3Cid = await Message.getCid(write3.message);
235
+ // Wait for the live event.
236
+ await Poller.pollUntilSuccessOrTimeout(async () => {
237
+ expect(messageCids).toContain(write3Cid);
238
+ });
239
+ });
240
+ });
168
241
  describe('grant based subscribes', () => {
169
- it('allows subscribe of messages with matching interface and method grant scope', () => __awaiter(this, void 0, void 0, function* () {
242
+ it('allows subscribe of messages with matching interface and method grant scope', async () => {
170
243
  // scenario: Alice gives Bob permission to subscribe for all of her messages
171
244
  // Alice writes various messages
172
245
  // 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();
246
+ const alice = await TestDataGenerator.generateDidKeyPersona();
247
+ const bob = await TestDataGenerator.generateDidKeyPersona();
175
248
  // create grant that is scoped to `MessagesSubscribe` for bob
176
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
249
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
177
250
  author: alice,
178
251
  grantedTo: bob,
179
252
  scope: {
@@ -181,67 +254,126 @@ export function testMessagesSubscribeHandler() {
181
254
  method: DwnMethodName.Subscribe
182
255
  }
183
256
  });
184
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
257
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
185
258
  expect(grantReply.status.code).toBe(202);
259
+ // install the default test protocol used by generateRecordsWrite
260
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
186
261
  // create a handler to capture the emitted messageCids
187
262
  const messageCids = [];
188
- const handler = (event) => __awaiter(this, void 0, void 0, function* () {
189
- const { message } = event;
190
- const messageCid = yield Message.getCid(message);
263
+ const handler = async (msg) => {
264
+ if (msg.type !== 'event') {
265
+ return;
266
+ }
267
+ const { message } = msg.event;
268
+ const messageCid = await Message.getCid(message);
191
269
  messageCids.push(messageCid);
192
- });
270
+ };
193
271
  // subscribe to messages
194
- const { message: subscribeMessage } = yield TestDataGenerator.generateMessagesSubscribe({
272
+ const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
195
273
  author: bob,
196
274
  permissionGrantId: grantMessage.recordId,
197
275
  });
198
- const subscribeReply = yield dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
276
+ const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
199
277
  expect(subscribeReply.status.code).toBe(200);
200
278
  // configure the freeForAll protocol
201
- const { message: freeForAllConfigure } = yield TestDataGenerator.generateProtocolsConfigure({
279
+ const { message: freeForAllConfigure } = await TestDataGenerator.generateProtocolsConfigure({
202
280
  author: alice,
203
281
  protocolDefinition: freeForAll,
204
282
  });
205
- const { status: freeForAllReplyStatus } = yield dwn.processMessage(alice.did, freeForAllConfigure);
283
+ const { status: freeForAllReplyStatus } = await dwn.processMessage(alice.did, freeForAllConfigure);
206
284
  expect(freeForAllReplyStatus.code).toBe(202);
207
285
  // configure a random protocol configuration
208
- const { message: protocolMessage } = yield TestDataGenerator.generateProtocolsConfigure({
286
+ const { message: protocolMessage } = await TestDataGenerator.generateProtocolsConfigure({
209
287
  author: alice,
210
288
  });
211
- const { status: configureStatus } = yield dwn.processMessage(alice.did, protocolMessage);
289
+ const { status: configureStatus } = await dwn.processMessage(alice.did, protocolMessage);
212
290
  expect(configureStatus.code).toBe(202);
213
291
  // write a message to the Records free for all interface
214
- const { message: recordMessage, dataStream: recordDataStream } = yield TestDataGenerator.generateRecordsWrite({
292
+ const { message: recordMessage, dataStream: recordDataStream } = await TestDataGenerator.generateRecordsWrite({
215
293
  protocol: freeForAll.protocol,
216
294
  protocolPath: 'post',
217
295
  schema: freeForAll.types.post.schema,
218
296
  author: alice
219
297
  });
220
- const recordReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream: recordDataStream });
298
+ const recordReply = await dwn.processMessage(alice.did, recordMessage, { dataStream: recordDataStream });
221
299
  expect(recordReply.status.code).toBe(202);
222
300
  // write a random message
223
- const { message: randomMessage, dataStream: randomDataStream } = yield TestDataGenerator.generateRecordsWrite({
301
+ const { message: randomMessage, dataStream: randomDataStream } = await TestDataGenerator.generateRecordsWrite({
224
302
  author: alice
225
303
  });
226
- const randomReply = yield dwn.processMessage(alice.did, randomMessage, { dataStream: randomDataStream });
304
+ const randomReply = await dwn.processMessage(alice.did, randomMessage, { dataStream: randomDataStream });
227
305
  expect(randomReply.status.code).toBe(202);
228
306
  // ensure that all messages have been received
229
- yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
307
+ await Poller.pollUntilSuccessOrTimeout(async () => {
230
308
  expect(messageCids.length).toBe(4);
231
309
  const expectedCids = [
232
- yield Message.getCid(freeForAllConfigure),
233
- yield Message.getCid(protocolMessage),
234
- yield Message.getCid(recordMessage),
235
- yield Message.getCid(randomMessage),
310
+ await Message.getCid(freeForAllConfigure),
311
+ await Message.getCid(protocolMessage),
312
+ await Message.getCid(recordMessage),
313
+ await Message.getCid(randomMessage),
236
314
  ];
237
315
  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();
316
+ });
317
+ });
318
+ it('allows subscribe of messages with a unified MessagesRead grant scope', async () => {
319
+ // scenario: A Messages.Read grant should also authorize MessagesSubscribe operations
320
+ const alice = await TestDataGenerator.generateDidKeyPersona();
321
+ const bob = await TestDataGenerator.generateDidKeyPersona();
322
+ // create grant that is scoped to `MessagesRead` (unified) for bob
323
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
324
+ author: alice,
325
+ grantedTo: bob,
326
+ scope: {
327
+ interface: DwnInterfaceName.Messages,
328
+ method: DwnMethodName.Read,
329
+ }
330
+ });
331
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
332
+ expect(grantReply.status.code).toBe(202);
333
+ // install the default test protocol used by generateRecordsWrite
334
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
335
+ // create a handler to capture the emitted messageCids
336
+ const messageCids = [];
337
+ const handler = async (msg) => {
338
+ if (msg.type !== 'event') {
339
+ return;
340
+ }
341
+ const { message } = msg.event;
342
+ const messageCid = await Message.getCid(message);
343
+ messageCids.push(messageCid);
344
+ };
345
+ // bob subscribes to messages using the Messages.Read grant
346
+ const { message: subscribeMessage } = await TestDataGenerator.generateMessagesSubscribe({
347
+ author: bob,
348
+ permissionGrantId: grantMessage.recordId,
349
+ });
350
+ const subscribeReply = await dwn.processMessage(alice.did, subscribeMessage, { subscriptionHandler: handler });
351
+ expect(subscribeReply.status.code).toBe(200);
352
+ // install the freeForAll protocol and write a record to trigger events
353
+ const { message: freeForAllConfigure } = await TestDataGenerator.generateProtocolsConfigure({
354
+ author: alice,
355
+ protocolDefinition: freeForAll,
356
+ });
357
+ const { status: freeForAllReplyStatus } = await dwn.processMessage(alice.did, freeForAllConfigure);
358
+ expect(freeForAllReplyStatus.code).toBe(202);
359
+ const { message: recordMessage, dataStream: recordDataStream } = await TestDataGenerator.generateRecordsWrite({
360
+ protocol: freeForAll.protocol,
361
+ protocolPath: 'post',
362
+ schema: freeForAll.types.post.schema,
363
+ author: alice
364
+ });
365
+ const recordReply = await dwn.processMessage(alice.did, recordMessage, { dataStream: recordDataStream });
366
+ expect(recordReply.status.code).toBe(202);
367
+ // ensure that at least one event was received
368
+ await Poller.pollUntilSuccessOrTimeout(async () => {
369
+ expect(messageCids.length).toBeGreaterThanOrEqual(1);
370
+ });
371
+ });
372
+ it('rejects subscribe of messages with mismatching interface grant scope', async () => {
373
+ const alice = await TestDataGenerator.generateDidKeyPersona();
374
+ const bob = await TestDataGenerator.generateDidKeyPersona();
243
375
  // create grant that is scoped to `RecordsWrite` for bob scoped to the `freeForAll` protocol
244
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
376
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
245
377
  author: alice,
246
378
  grantedTo: bob,
247
379
  scope: {
@@ -250,22 +382,22 @@ export function testMessagesSubscribeHandler() {
250
382
  protocol: freeForAll.protocol
251
383
  }
252
384
  });
253
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
385
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
254
386
  expect(grantReply.status.code).toBe(202);
255
387
  // bob attempts to use the `RecordsWrite` grant on an `MessagesSubscribe` message
256
- const { message: bobSubscribe } = yield TestDataGenerator.generateMessagesSubscribe({
388
+ const { message: bobSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
257
389
  author: bob,
258
390
  permissionGrantId: grantMessage.recordId
259
391
  });
260
- const bobReply = yield dwn.processMessage(alice.did, bobSubscribe);
392
+ const bobReply = await dwn.processMessage(alice.did, bobSubscribe);
261
393
  expect(bobReply.status.code).toBe(401);
262
394
  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();
395
+ });
396
+ it('rejects subscribe of messages with mismatching method grant scopes', async () => {
397
+ const alice = await TestDataGenerator.generateDidKeyPersona();
398
+ const bob = await TestDataGenerator.generateDidKeyPersona();
267
399
  // create grant that is scoped to `MessagesSync` for bob
268
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
400
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
269
401
  author: alice,
270
402
  grantedTo: bob,
271
403
  scope: {
@@ -273,39 +405,39 @@ export function testMessagesSubscribeHandler() {
273
405
  method: DwnMethodName.Sync,
274
406
  }
275
407
  });
276
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
408
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
277
409
  expect(grantReply.status.code).toBe(202);
278
410
  // bob attempts to use the `MessagesSync` grant on an `MessagesSubscribe` message
279
- const { message: bobSubscribe } = yield TestDataGenerator.generateMessagesSubscribe({
411
+ const { message: bobSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
280
412
  author: bob,
281
413
  permissionGrantId: grantMessage.recordId
282
414
  });
283
- const bobReply = yield dwn.processMessage(alice.did, bobSubscribe);
415
+ const bobReply = await dwn.processMessage(alice.did, bobSubscribe);
284
416
  expect(bobReply.status.code).toBe(401);
285
417
  expect(bobReply.status.detail).toContain(DwnErrorCode.GrantAuthorizationMethodMismatch);
286
- }));
418
+ });
287
419
  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();
420
+ it('allows subscribe of protocol filtered messages with matching protocol grant scopes', async () => {
421
+ const alice = await TestDataGenerator.generateDidKeyPersona();
422
+ const bob = await TestDataGenerator.generateDidKeyPersona();
291
423
  // install protocol 1
292
- const protocol1 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol1' });
293
- const { message: protocol1Configure } = yield TestDataGenerator.generateProtocolsConfigure({
424
+ const protocol1 = { ...freeForAll, published: true, protocol: 'http://protcol1' };
425
+ const { message: protocol1Configure } = await TestDataGenerator.generateProtocolsConfigure({
294
426
  author: alice,
295
427
  protocolDefinition: protocol1,
296
428
  });
297
- const { status: protocol1ConfigureStatus } = yield dwn.processMessage(alice.did, protocol1Configure);
429
+ const { status: protocol1ConfigureStatus } = await dwn.processMessage(alice.did, protocol1Configure);
298
430
  expect(protocol1ConfigureStatus.code).toBe(202);
299
431
  // install protocol 2
300
- const protocol2 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol2' });
301
- const { message: protocol2Configure } = yield TestDataGenerator.generateProtocolsConfigure({
432
+ const protocol2 = { ...freeForAll, published: true, protocol: 'http://protcol2' };
433
+ const { message: protocol2Configure } = await TestDataGenerator.generateProtocolsConfigure({
302
434
  author: alice,
303
435
  protocolDefinition: protocol2,
304
436
  });
305
- const { status: protocol2ConfigureStatus } = yield dwn.processMessage(alice.did, protocol2Configure);
437
+ const { status: protocol2ConfigureStatus } = await dwn.processMessage(alice.did, protocol2Configure);
306
438
  expect(protocol2ConfigureStatus.code).toBe(202);
307
439
  // grant bob permission to subscribe for protocol 1
308
- const { message: grant1Message, dataStream: grant1DataStream } = yield TestDataGenerator.generateGrantCreate({
440
+ const { message: grant1Message, dataStream: grant1DataStream } = await TestDataGenerator.generateGrantCreate({
309
441
  author: alice,
310
442
  grantedTo: bob,
311
443
  scope: {
@@ -314,86 +446,92 @@ export function testMessagesSubscribeHandler() {
314
446
  protocol: protocol1.protocol
315
447
  }
316
448
  });
317
- const grant1Reply = yield dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
449
+ const grant1Reply = await dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
318
450
  expect(grant1Reply.status.code).toBe(202);
319
451
  // bob uses the grant to subscribe to protocol 1 messages
320
452
  const proto1MessageCids = [];
321
- const proto1Handler = (event) => __awaiter(this, void 0, void 0, function* () {
322
- const { message } = event;
323
- const messageCid = yield Message.getCid(message);
453
+ const proto1Handler = async (msg) => {
454
+ if (msg.type !== 'event') {
455
+ return;
456
+ }
457
+ const { message } = msg.event;
458
+ const messageCid = await Message.getCid(message);
324
459
  proto1MessageCids.push(messageCid);
325
- });
326
- const { message: bobSubscribe1 } = yield TestDataGenerator.generateMessagesSubscribe({
460
+ };
461
+ const { message: bobSubscribe1 } = await TestDataGenerator.generateMessagesSubscribe({
327
462
  author: bob,
328
463
  filters: [{ protocol: protocol1.protocol }],
329
464
  permissionGrantId: grant1Message.recordId
330
465
  });
331
- const bobReply1 = yield dwn.processMessage(alice.did, bobSubscribe1, { subscriptionHandler: proto1Handler });
466
+ const bobReply1 = await dwn.processMessage(alice.did, bobSubscribe1, { subscriptionHandler: proto1Handler });
332
467
  expect(bobReply1.status.code).toBe(200);
333
468
  const allMessages = [];
334
- const allHandler = (event) => __awaiter(this, void 0, void 0, function* () {
335
- const { message } = event;
336
- const messageCid = yield Message.getCid(message);
469
+ const allHandler = async (msg) => {
470
+ if (msg.type !== 'event') {
471
+ return;
472
+ }
473
+ const { message } = msg.event;
474
+ const messageCid = await Message.getCid(message);
337
475
  allMessages.push(messageCid);
338
- });
339
- const { message: allSubscribe } = yield TestDataGenerator.generateMessagesSubscribe({
476
+ };
477
+ const { message: allSubscribe } = await TestDataGenerator.generateMessagesSubscribe({
340
478
  author: alice,
341
479
  });
342
- const allReply = yield dwn.processMessage(alice.did, allSubscribe, { subscriptionHandler: allHandler });
480
+ const allReply = await dwn.processMessage(alice.did, allSubscribe, { subscriptionHandler: allHandler });
343
481
  expect(allReply.status.code).toBe(200);
344
482
  // alice writes a message to protocol 1
345
- const { message: proto1Message, dataStream: proto1DataStream } = yield TestDataGenerator.generateRecordsWrite({
483
+ const { message: proto1Message, dataStream: proto1DataStream } = await TestDataGenerator.generateRecordsWrite({
346
484
  protocol: protocol1.protocol,
347
485
  protocolPath: 'post',
348
486
  schema: protocol1.types.post.schema,
349
487
  author: alice
350
488
  });
351
- const proto1Reply = yield dwn.processMessage(alice.did, proto1Message, { dataStream: proto1DataStream });
489
+ const proto1Reply = await dwn.processMessage(alice.did, proto1Message, { dataStream: proto1DataStream });
352
490
  expect(proto1Reply.status.code).toBe(202);
353
491
  // alice writes a message to protocol 2
354
- const { message: proto2Message, dataStream: proto2DataStream } = yield TestDataGenerator.generateRecordsWrite({
492
+ const { message: proto2Message, dataStream: proto2DataStream } = await TestDataGenerator.generateRecordsWrite({
355
493
  protocol: protocol2.protocol,
356
494
  protocolPath: 'post',
357
495
  schema: protocol2.types.post.schema,
358
496
  author: alice
359
497
  });
360
- const proto2Reply = yield dwn.processMessage(alice.did, proto2Message, { dataStream: proto2DataStream });
498
+ const proto2Reply = await dwn.processMessage(alice.did, proto2Message, { dataStream: proto2DataStream });
361
499
  expect(proto2Reply.status.code).toBe(202);
362
500
  // ensure that all messages have been received as a control
363
- yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
501
+ await Poller.pollUntilSuccessOrTimeout(async () => {
364
502
  expect(allMessages.length).toBe(2);
365
503
  const expectedAllCids = [
366
- yield Message.getCid(proto1Message),
367
- yield Message.getCid(proto2Message)
504
+ await Message.getCid(proto1Message),
505
+ await Message.getCid(proto2Message)
368
506
  ];
369
507
  expect(allMessages.sort()).toEqual(expectedAllCids.sort());
370
508
  // proto 1 messages should only have one message
371
509
  expect(proto1MessageCids.length).toBe(1);
372
- const expectedProto1Cids = [yield Message.getCid(proto1Message)];
510
+ const expectedProto1Cids = [await Message.getCid(proto1Message)];
373
511
  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();
512
+ });
513
+ });
514
+ it('rejects subscribe of protocol filtered messages with mismatching protocol grant scopes', async () => {
515
+ const alice = await TestDataGenerator.generateDidKeyPersona();
516
+ const bob = await TestDataGenerator.generateDidKeyPersona();
379
517
  // install protocol 1
380
- const protocol1 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol1' });
381
- const { message: protocol1Configure } = yield TestDataGenerator.generateProtocolsConfigure({
518
+ const protocol1 = { ...freeForAll, published: true, protocol: 'http://protcol1' };
519
+ const { message: protocol1Configure } = await TestDataGenerator.generateProtocolsConfigure({
382
520
  author: alice,
383
521
  protocolDefinition: protocol1,
384
522
  });
385
- const { status: protocol1ConfigureStatus } = yield dwn.processMessage(alice.did, protocol1Configure);
523
+ const { status: protocol1ConfigureStatus } = await dwn.processMessage(alice.did, protocol1Configure);
386
524
  expect(protocol1ConfigureStatus.code).toBe(202);
387
525
  // install protocol 2
388
- const protocol2 = Object.assign(Object.assign({}, freeForAll), { published: true, protocol: 'http://protcol2' });
389
- const { message: protocol2Configure } = yield TestDataGenerator.generateProtocolsConfigure({
526
+ const protocol2 = { ...freeForAll, published: true, protocol: 'http://protcol2' };
527
+ const { message: protocol2Configure } = await TestDataGenerator.generateProtocolsConfigure({
390
528
  author: alice,
391
529
  protocolDefinition: protocol2,
392
530
  });
393
- const { status: protocol2ConfigureStatus } = yield dwn.processMessage(alice.did, protocol2Configure);
531
+ const { status: protocol2ConfigureStatus } = await dwn.processMessage(alice.did, protocol2Configure);
394
532
  expect(protocol2ConfigureStatus.code).toBe(202);
395
533
  // grant bob permission to subscribe for protocol 1
396
- const { message: grant1Message, dataStream: grant1DataStream } = yield TestDataGenerator.generateGrantCreate({
534
+ const { message: grant1Message, dataStream: grant1DataStream } = await TestDataGenerator.generateGrantCreate({
397
535
  author: alice,
398
536
  grantedTo: bob,
399
537
  scope: {
@@ -402,30 +540,30 @@ export function testMessagesSubscribeHandler() {
402
540
  protocol: protocol1.protocol
403
541
  }
404
542
  });
405
- const grant1Reply = yield dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
543
+ const grant1Reply = await dwn.processMessage(alice.did, grant1Message, { dataStream: grant1DataStream });
406
544
  expect(grant1Reply.status.code).toBe(202);
407
545
  // bob uses the grant for protocol 1 to subscribe for protocol 2 messages
408
- const { message: bobSubscribe1 } = yield TestDataGenerator.generateMessagesSubscribe({
546
+ const { message: bobSubscribe1 } = await TestDataGenerator.generateMessagesSubscribe({
409
547
  author: bob,
410
548
  filters: [{ protocol: protocol2.protocol }],
411
549
  permissionGrantId: grant1Message.recordId
412
550
  });
413
- const bobReply1 = yield dwn.processMessage(alice.did, bobSubscribe1);
551
+ const bobReply1 = await dwn.processMessage(alice.did, bobSubscribe1);
414
552
  expect(bobReply1.status.code).toBe(401);
415
553
  expect(bobReply1.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol);
416
554
  expect(bobReply1.subscription).toBeUndefined();
417
555
  // bob attempts to use the grant for protocol 1 to subscribe to messages in protocol 1 OR protocol 2 given two filters
418
556
  // this should fail because the grant is scoped to protocol 1 only
419
- const { message: bobSubscribe2 } = yield TestDataGenerator.generateMessagesSubscribe({
557
+ const { message: bobSubscribe2 } = await TestDataGenerator.generateMessagesSubscribe({
420
558
  author: bob,
421
559
  filters: [{ protocol: protocol1.protocol }, { protocol: protocol2.protocol }],
422
560
  permissionGrantId: grant1Message.recordId
423
561
  });
424
- const bobReply2 = yield dwn.processMessage(alice.did, bobSubscribe2);
562
+ const bobReply2 = await dwn.processMessage(alice.did, bobSubscribe2);
425
563
  expect(bobReply2.status.code).toBe(401);
426
564
  expect(bobReply2.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol);
427
565
  expect(bobReply2.subscription).toBeUndefined();
428
- }));
566
+ });
429
567
  });
430
568
  });
431
569
  });