@enbox/dwn-sdk-js 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +762 -911
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/abstract-message.js +4 -0
  6. package/dist/esm/src/core/abstract-message.js.map +1 -1
  7. package/dist/esm/src/core/auth.js +22 -33
  8. package/dist/esm/src/core/auth.js.map +1 -1
  9. package/dist/esm/src/core/constants.js +11 -0
  10. package/dist/esm/src/core/constants.js.map +1 -0
  11. package/dist/esm/src/core/core-protocol.js +44 -0
  12. package/dist/esm/src/core/core-protocol.js.map +1 -0
  13. package/dist/esm/src/core/dwn-constant.js +7 -7
  14. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  15. package/dist/esm/src/core/dwn-error.js +10 -12
  16. package/dist/esm/src/core/dwn-error.js.map +1 -1
  17. package/dist/esm/src/core/grant-authorization.js +50 -52
  18. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  19. package/dist/esm/src/core/message.js +85 -116
  20. package/dist/esm/src/core/message.js.map +1 -1
  21. package/dist/esm/src/core/messages-grant-authorization.js +63 -78
  22. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  23. package/dist/esm/src/core/protocol-authorization-action.js +266 -0
  24. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
  25. package/dist/esm/src/core/protocol-authorization-validation.js +321 -0
  26. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
  27. package/dist/esm/src/core/protocol-authorization.js +144 -741
  28. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  29. package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
  30. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  31. package/dist/esm/src/core/record-chain.js +64 -0
  32. package/dist/esm/src/core/record-chain.js.map +1 -0
  33. package/dist/esm/src/core/records-grant-authorization.js +53 -72
  34. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  35. package/dist/esm/src/core/resumable-task-manager.js +50 -65
  36. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  37. package/dist/esm/src/core/tenant-gate.js +2 -13
  38. package/dist/esm/src/core/tenant-gate.js.map +1 -1
  39. package/dist/esm/src/dwn.js +108 -101
  40. package/dist/esm/src/dwn.js.map +1 -1
  41. package/dist/esm/src/event-stream/event-emitter-event-log.js +204 -0
  42. package/dist/esm/src/event-stream/event-emitter-event-log.js.map +1 -0
  43. package/dist/esm/src/handlers/messages-read.js +67 -81
  44. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  45. package/dist/esm/src/handlers/messages-subscribe.js +51 -63
  46. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  47. package/dist/esm/src/handlers/messages-sync.js +75 -89
  48. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  49. package/dist/esm/src/handlers/protocols-configure.js +153 -163
  50. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  51. package/dist/esm/src/handlers/protocols-query.js +52 -55
  52. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  53. package/dist/esm/src/handlers/records-count.js +97 -85
  54. package/dist/esm/src/handlers/records-count.js.map +1 -1
  55. package/dist/esm/src/handlers/records-delete.js +75 -93
  56. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  57. package/dist/esm/src/handlers/records-query.js +116 -105
  58. package/dist/esm/src/handlers/records-query.js.map +1 -1
  59. package/dist/esm/src/handlers/records-read.js +130 -132
  60. package/dist/esm/src/handlers/records-read.js.map +1 -1
  61. package/dist/esm/src/handlers/records-subscribe.js +164 -104
  62. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  63. package/dist/esm/src/handlers/records-write.js +213 -280
  64. package/dist/esm/src/handlers/records-write.js.map +1 -1
  65. package/dist/esm/src/index.js +5 -2
  66. package/dist/esm/src/index.js.map +1 -1
  67. package/dist/esm/src/interfaces/messages-read.js +24 -32
  68. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  69. package/dist/esm/src/interfaces/messages-subscribe.js +28 -41
  70. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  71. package/dist/esm/src/interfaces/messages-sync.js +26 -40
  72. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  73. package/dist/esm/src/interfaces/protocols-configure.js +87 -65
  74. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  75. package/dist/esm/src/interfaces/protocols-query.js +55 -68
  76. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-count.js +50 -66
  78. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-delete.js +45 -55
  80. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-query.js +60 -76
  82. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  83. package/dist/esm/src/interfaces/records-read.js +51 -67
  84. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  85. package/dist/esm/src/interfaces/records-subscribe.js +53 -68
  86. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  87. package/dist/esm/src/interfaces/records-write-query.js +102 -0
  88. package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
  89. package/dist/esm/src/interfaces/records-write-signing.js +81 -0
  90. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
  91. package/dist/esm/src/interfaces/records-write.js +396 -610
  92. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  93. package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
  94. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  95. package/dist/esm/src/jose/jws/general/builder.js +23 -35
  96. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  97. package/dist/esm/src/jose/jws/general/verifier.js +56 -69
  98. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  99. package/dist/esm/src/protocols/permission-grant.js +43 -14
  100. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  101. package/dist/esm/src/protocols/permission-request.js +28 -14
  102. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  103. package/dist/esm/src/protocols/permissions.js +325 -227
  104. package/dist/esm/src/protocols/permissions.js.map +1 -1
  105. package/dist/esm/src/smt/smt-store-level.js +42 -64
  106. package/dist/esm/src/smt/smt-store-level.js.map +1 -1
  107. package/dist/esm/src/smt/smt-store-memory.js +19 -45
  108. package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
  109. package/dist/esm/src/smt/smt-utils.js +28 -45
  110. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  111. package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
  112. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
  113. package/dist/esm/src/state-index/state-index-level.js +113 -150
  114. package/dist/esm/src/state-index/state-index-level.js.map +1 -1
  115. package/dist/esm/src/store/blockstore-level.js +54 -156
  116. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  117. package/dist/esm/src/store/blockstore-mock.js +48 -153
  118. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  119. package/dist/esm/src/store/data-store-level.js +137 -100
  120. package/dist/esm/src/store/data-store-level.js.map +1 -1
  121. package/dist/esm/src/store/index-level-compound.js +246 -0
  122. package/dist/esm/src/store/index-level-compound.js.map +1 -0
  123. package/dist/esm/src/store/index-level.js +307 -715
  124. package/dist/esm/src/store/index-level.js.map +1 -1
  125. package/dist/esm/src/store/level-wrapper.js +143 -244
  126. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  127. package/dist/esm/src/store/message-store-level.js +71 -94
  128. package/dist/esm/src/store/message-store-level.js.map +1 -1
  129. package/dist/esm/src/store/resumable-task-store-level.js +62 -101
  130. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
  131. package/dist/esm/src/store/storage-controller.js +131 -146
  132. package/dist/esm/src/store/storage-controller.js.map +1 -1
  133. package/dist/esm/src/types/permission-types.js.map +1 -1
  134. package/dist/esm/src/types/protocols-types.js +10 -0
  135. package/dist/esm/src/types/protocols-types.js.map +1 -1
  136. package/dist/esm/src/types/records-types.js.map +1 -1
  137. package/dist/esm/src/utils/abort.js +8 -19
  138. package/dist/esm/src/utils/abort.js.map +1 -1
  139. package/dist/esm/src/utils/array.js +15 -49
  140. package/dist/esm/src/utils/array.js.map +1 -1
  141. package/dist/esm/src/utils/cid.js +29 -77
  142. package/dist/esm/src/utils/cid.js.map +1 -1
  143. package/dist/esm/src/utils/data-stream.js +37 -65
  144. package/dist/esm/src/utils/data-stream.js.map +1 -1
  145. package/dist/esm/src/utils/encryption.js +136 -162
  146. package/dist/esm/src/utils/encryption.js.map +1 -1
  147. package/dist/esm/src/utils/filter.js +1 -12
  148. package/dist/esm/src/utils/filter.js.map +1 -1
  149. package/dist/esm/src/utils/hd-key.js +45 -71
  150. package/dist/esm/src/utils/hd-key.js.map +1 -1
  151. package/dist/esm/src/utils/jws.js +9 -20
  152. package/dist/esm/src/utils/jws.js.map +1 -1
  153. package/dist/esm/src/utils/memory-cache.js +12 -23
  154. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  155. package/dist/esm/src/utils/messages.js +21 -33
  156. package/dist/esm/src/utils/messages.js.map +1 -1
  157. package/dist/esm/src/utils/private-key-signer.js +9 -17
  158. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  159. package/dist/esm/src/utils/protocols.js +62 -70
  160. package/dist/esm/src/utils/protocols.js.map +1 -1
  161. package/dist/esm/src/utils/records.js +103 -166
  162. package/dist/esm/src/utils/records.js.map +1 -1
  163. package/dist/esm/src/utils/secp256k1.js +60 -96
  164. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  165. package/dist/esm/src/utils/secp256r1.js +54 -71
  166. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  167. package/dist/esm/src/utils/time.js +5 -18
  168. package/dist/esm/src/utils/time.js.map +1 -1
  169. package/dist/esm/src/utils/url.js +3 -3
  170. package/dist/esm/src/utils/url.js.map +1 -1
  171. package/dist/esm/tests/core/auth.spec.js +3 -12
  172. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  173. package/dist/esm/tests/core/message.spec.js +50 -59
  174. package/dist/esm/tests/core/message.spec.js.map +1 -1
  175. package/dist/esm/tests/core/protocol-authorization.spec.js +10 -18
  176. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  177. package/dist/esm/tests/dwn.spec.js +65 -89
  178. package/dist/esm/tests/dwn.spec.js.map +1 -1
  179. package/dist/esm/tests/event-emitter-event-log.spec.js +305 -0
  180. package/dist/esm/tests/event-emitter-event-log.spec.js.map +1 -0
  181. package/dist/esm/tests/features/author-delegated-grant.spec.js +337 -347
  182. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  183. package/dist/esm/tests/features/owner-delegated-grant.spec.js +160 -172
  184. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  185. package/dist/esm/tests/features/owner-signature.spec.js +78 -82
  186. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  187. package/dist/esm/tests/features/permissions.spec.js +449 -184
  188. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  189. package/dist/esm/tests/features/protocol-composition.spec.js +981 -360
  190. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  191. package/dist/esm/tests/features/protocol-create-action.spec.js +45 -54
  192. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  193. package/dist/esm/tests/features/protocol-delete-action.spec.js +99 -108
  194. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  195. package/dist/esm/tests/features/protocol-update-action.spec.js +108 -117
  196. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  197. package/dist/esm/tests/features/records-immutable.spec.js +315 -0
  198. package/dist/esm/tests/features/records-immutable.spec.js.map +1 -0
  199. package/dist/esm/tests/features/records-prune.spec.js +178 -194
  200. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  201. package/dist/esm/tests/features/records-record-limit.spec.js +542 -0
  202. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -0
  203. package/dist/esm/tests/features/records-tags.spec.js +456 -463
  204. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  205. package/dist/esm/tests/features/resumable-tasks.spec.js +88 -98
  206. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  207. package/dist/esm/tests/handlers/messages-read.spec.js +215 -210
  208. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  209. package/dist/esm/tests/handlers/messages-subscribe.spec.js +309 -171
  210. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  211. package/dist/esm/tests/handlers/messages-sync.spec.js +272 -199
  212. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  213. package/dist/esm/tests/handlers/protocols-configure.spec.js +247 -241
  214. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  215. package/dist/esm/tests/handlers/protocols-query.spec.js +159 -172
  216. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  217. package/dist/esm/tests/handlers/records-count.spec.js +101 -105
  218. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  219. package/dist/esm/tests/handlers/records-delete.spec.js +266 -279
  220. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  221. package/dist/esm/tests/handlers/records-query.spec.js +984 -996
  222. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  223. package/dist/esm/tests/handlers/records-read.spec.js +542 -671
  224. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  225. package/dist/esm/tests/handlers/records-subscribe.spec.js +433 -302
  226. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  227. package/dist/esm/tests/handlers/records-write.spec.js +1216 -1140
  228. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  229. package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
  230. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  231. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
  232. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  233. package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
  234. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  235. package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
  236. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  237. package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
  238. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  239. package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
  240. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  241. package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
  242. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  243. package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
  244. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  245. package/dist/esm/tests/interfaces/records-write.spec.js +190 -219
  246. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  247. package/dist/esm/tests/jose/jws/general.spec.js +36 -45
  248. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  249. package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
  250. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
  251. package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
  252. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  253. package/dist/esm/tests/protocols/permissions.spec.js +49 -55
  254. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  255. package/dist/esm/tests/scenarios/aggregator.spec.js +127 -138
  256. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  257. package/dist/esm/tests/scenarios/deleted-record.spec.js +372 -36
  258. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  259. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +55 -64
  260. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  261. package/dist/esm/tests/scenarios/nested-roles.spec.js +66 -76
  262. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  263. package/dist/esm/tests/scenarios/subscriptions.spec.js +451 -354
  264. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  265. package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
  266. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
  267. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
  268. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
  269. package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
  270. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
  271. package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
  272. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  273. package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
  274. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  275. package/dist/esm/tests/store/data-store-level.spec.js +160 -108
  276. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  277. package/dist/esm/tests/store/index-level.spec.js +404 -414
  278. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  279. package/dist/esm/tests/store/message-store-level.spec.js +13 -22
  280. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  281. package/dist/esm/tests/store/message-store.spec.js +229 -238
  282. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  283. package/dist/esm/tests/test-event-stream.js +12 -13
  284. package/dist/esm/tests/test-event-stream.js.map +1 -1
  285. package/dist/esm/tests/test-stores.js +16 -13
  286. package/dist/esm/tests/test-stores.js.map +1 -1
  287. package/dist/esm/tests/test-suite.js +8 -15
  288. package/dist/esm/tests/test-suite.js.map +1 -1
  289. package/dist/esm/tests/utils/cid.spec.js +24 -33
  290. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  291. package/dist/esm/tests/utils/data-stream.spec.js +48 -57
  292. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  293. package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
  294. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  295. package/dist/esm/tests/utils/encryption.spec.js +229 -82
  296. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  297. package/dist/esm/tests/utils/filters.spec.js +46 -55
  298. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  299. package/dist/esm/tests/utils/hd-key.spec.js +10 -19
  300. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  301. package/dist/esm/tests/utils/jws.spec.js +3 -12
  302. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  303. package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
  304. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  305. package/dist/esm/tests/utils/messages.spec.js +18 -20
  306. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  307. package/dist/esm/tests/utils/poller.js +22 -33
  308. package/dist/esm/tests/utils/poller.js.map +1 -1
  309. package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
  310. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  311. package/dist/esm/tests/utils/records.spec.js +14 -27
  312. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  313. package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
  314. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  315. package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
  316. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  317. package/dist/esm/tests/utils/test-data-generator.js +446 -467
  318. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  319. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
  320. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  321. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
  322. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  323. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
  324. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  325. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
  326. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  327. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
  328. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  329. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
  330. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  331. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
  332. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
  333. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +44 -24
  334. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  335. package/dist/types/generated/precompiled-validators.d.ts +49 -40
  336. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  337. package/dist/types/src/core/constants.d.ts +11 -0
  338. package/dist/types/src/core/constants.d.ts.map +1 -0
  339. package/dist/types/src/core/core-protocol.d.ts +89 -0
  340. package/dist/types/src/core/core-protocol.d.ts.map +1 -0
  341. package/dist/types/src/core/dwn-error.d.ts +9 -12
  342. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  343. package/dist/types/src/core/grant-authorization.d.ts +6 -2
  344. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  345. package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
  346. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
  347. package/dist/types/src/core/protocol-authorization-validation.d.ts +81 -0
  348. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
  349. package/dist/types/src/core/protocol-authorization.d.ts +24 -106
  350. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  351. package/dist/types/src/core/record-chain.d.ts +24 -0
  352. package/dist/types/src/core/record-chain.d.ts.map +1 -0
  353. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  354. package/dist/types/src/dwn.d.ts +19 -7
  355. package/dist/types/src/dwn.d.ts.map +1 -1
  356. package/dist/types/src/event-stream/event-emitter-event-log.d.ts +50 -0
  357. package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +1 -0
  358. package/dist/types/src/handlers/messages-read.d.ts +3 -8
  359. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  360. package/dist/types/src/handlers/messages-subscribe.d.ts +6 -10
  361. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  362. package/dist/types/src/handlers/messages-sync.d.ts +3 -8
  363. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  364. package/dist/types/src/handlers/protocols-configure.d.ts +3 -10
  365. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  366. package/dist/types/src/handlers/protocols-query.d.ts +3 -8
  367. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
  368. package/dist/types/src/handlers/records-count.d.ts +3 -6
  369. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  370. package/dist/types/src/handlers/records-delete.d.ts +3 -8
  371. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  372. package/dist/types/src/handlers/records-query.d.ts +3 -8
  373. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  374. package/dist/types/src/handlers/records-read.d.ts +3 -8
  375. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  376. package/dist/types/src/handlers/records-subscribe.d.ts +8 -10
  377. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  378. package/dist/types/src/handlers/records-write.d.ts +4 -24
  379. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  380. package/dist/types/src/index.d.ts +8 -4
  381. package/dist/types/src/index.d.ts.map +1 -1
  382. package/dist/types/src/interfaces/messages-subscribe.d.ts +5 -0
  383. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  384. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  385. package/dist/types/src/interfaces/records-subscribe.d.ts +5 -0
  386. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  387. package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
  388. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
  389. package/dist/types/src/interfaces/records-write-signing.d.ts +34 -0
  390. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
  391. package/dist/types/src/interfaces/records-write.d.ts +13 -53
  392. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  393. package/dist/types/src/protocols/permission-grant.d.ts +1 -1
  394. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  395. package/dist/types/src/protocols/permission-request.d.ts +1 -1
  396. package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
  397. package/dist/types/src/protocols/permissions.d.ts +40 -3
  398. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  399. package/dist/types/src/state-index/state-index-level.d.ts.map +1 -1
  400. package/dist/types/src/store/data-store-level.d.ts +20 -4
  401. package/dist/types/src/store/data-store-level.d.ts.map +1 -1
  402. package/dist/types/src/store/index-level-compound.d.ts +70 -0
  403. package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
  404. package/dist/types/src/store/index-level.d.ts +4 -58
  405. package/dist/types/src/store/index-level.d.ts.map +1 -1
  406. package/dist/types/src/store/storage-controller.d.ts +4 -4
  407. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  408. package/dist/types/src/types/message-types.d.ts +3 -3
  409. package/dist/types/src/types/message-types.d.ts.map +1 -1
  410. package/dist/types/src/types/messages-types.d.ts +12 -3
  411. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  412. package/dist/types/src/types/method-handler.d.ts +24 -3
  413. package/dist/types/src/types/method-handler.d.ts.map +1 -1
  414. package/dist/types/src/types/permission-types.d.ts +7 -0
  415. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  416. package/dist/types/src/types/protocols-types.d.ts +41 -1
  417. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  418. package/dist/types/src/types/records-types.d.ts +16 -6
  419. package/dist/types/src/types/records-types.d.ts.map +1 -1
  420. package/dist/types/src/types/subscriptions.d.ts +151 -13
  421. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  422. package/dist/types/src/utils/hd-key.d.ts +1 -9
  423. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  424. package/dist/types/src/utils/messages.d.ts +7 -5
  425. package/dist/types/src/utils/messages.d.ts.map +1 -1
  426. package/dist/types/src/utils/protocols.d.ts +5 -0
  427. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  428. package/dist/types/src/utils/records.d.ts +1 -11
  429. package/dist/types/src/utils/records.d.ts.map +1 -1
  430. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  431. package/dist/types/tests/event-emitter-event-log.spec.d.ts +2 -0
  432. package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +1 -0
  433. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  434. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  435. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  436. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  437. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  438. package/dist/types/tests/features/records-immutable.spec.d.ts +2 -0
  439. package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -0
  440. package/dist/types/tests/features/records-record-limit.spec.d.ts +2 -0
  441. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -0
  442. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  443. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  444. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  445. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  446. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  447. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  448. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  449. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  450. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  451. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  452. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  453. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  454. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
  455. package/dist/types/tests/test-event-stream.d.ts +11 -12
  456. package/dist/types/tests/test-event-stream.d.ts.map +1 -1
  457. package/dist/types/tests/test-suite.d.ts +2 -2
  458. package/dist/types/tests/test-suite.d.ts.map +1 -1
  459. package/dist/types/tests/utils/test-data-generator.d.ts +18 -0
  460. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  461. package/package.json +5 -4
  462. package/src/core/constants.ts +11 -0
  463. package/src/core/core-protocol.ts +129 -0
  464. package/src/core/dwn-error.ts +15 -12
  465. package/src/core/grant-authorization.ts +20 -3
  466. package/src/core/protocol-authorization-action.ts +377 -0
  467. package/src/core/protocol-authorization-validation.ts +487 -0
  468. package/src/core/protocol-authorization.ts +111 -856
  469. package/src/core/record-chain.ts +99 -0
  470. package/src/core/records-grant-authorization.ts +6 -8
  471. package/src/dwn.ts +58 -73
  472. package/src/event-stream/event-emitter-event-log.ts +283 -0
  473. package/src/handlers/messages-read.ts +8 -9
  474. package/src/handlers/messages-subscribe.ts +24 -28
  475. package/src/handlers/messages-sync.ts +10 -16
  476. package/src/handlers/protocols-configure.ts +47 -32
  477. package/src/handlers/protocols-query.ts +6 -9
  478. package/src/handlers/records-count.ts +11 -10
  479. package/src/handlers/records-delete.ts +12 -21
  480. package/src/handlers/records-query.ts +12 -12
  481. package/src/handlers/records-read.ts +34 -22
  482. package/src/handlers/records-subscribe.ts +47 -26
  483. package/src/handlers/records-write.ts +47 -104
  484. package/src/index.ts +9 -5
  485. package/src/interfaces/messages-subscribe.ts +7 -1
  486. package/src/interfaces/protocols-configure.ts +73 -8
  487. package/src/interfaces/records-count.ts +1 -1
  488. package/src/interfaces/records-delete.ts +1 -1
  489. package/src/interfaces/records-query.ts +1 -1
  490. package/src/interfaces/records-read.ts +1 -1
  491. package/src/interfaces/records-subscribe.ts +8 -1
  492. package/src/interfaces/records-write-query.ts +139 -0
  493. package/src/interfaces/records-write-signing.ts +123 -0
  494. package/src/interfaces/records-write.ts +66 -261
  495. package/src/protocols/permission-grant.ts +1 -1
  496. package/src/protocols/permission-request.ts +1 -1
  497. package/src/protocols/permissions.ts +148 -6
  498. package/src/state-index/state-index-level.ts +5 -7
  499. package/src/store/data-store-level.ts +124 -34
  500. package/src/store/index-level-compound.ts +324 -0
  501. package/src/store/index-level.ts +68 -341
  502. package/src/store/storage-controller.ts +11 -11
  503. package/src/types/message-types.ts +3 -3
  504. package/src/types/messages-types.ts +12 -3
  505. package/src/types/method-handler.ts +26 -4
  506. package/src/types/mitt.d.ts +28 -0
  507. package/src/types/permission-types.ts +7 -0
  508. package/src/types/protocols-types.ts +46 -0
  509. package/src/types/records-types.ts +16 -6
  510. package/src/types/subscriptions.ts +178 -14
  511. package/src/utils/hd-key.ts +0 -9
  512. package/src/utils/messages.ts +17 -37
  513. package/src/utils/protocols.ts +8 -0
  514. package/src/utils/records.ts +8 -59
  515. package/dist/esm/src/event-stream/event-emitter-stream.js +0 -60
  516. package/dist/esm/src/event-stream/event-emitter-stream.js.map +0 -1
  517. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +0 -77
  518. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +0 -1
  519. package/dist/esm/tests/event-stream/event-stream.spec.js +0 -123
  520. package/dist/esm/tests/event-stream/event-stream.spec.js.map +0 -1
  521. package/dist/types/src/event-stream/event-emitter-stream.d.ts +0 -23
  522. package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +0 -1
  523. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts +0 -2
  524. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +0 -1
  525. package/dist/types/tests/event-stream/event-stream.spec.d.ts +0 -2
  526. package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +0 -1
  527. package/src/event-stream/event-emitter-stream.ts +0 -69
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import freeForAll from '../vectors/protocol-definitions/free-for-all.json' with { type: 'json' };
11
2
  import { Jws } from '../../src/utils/jws.js';
12
3
  import { Message } from '../../src/core/message.js';
@@ -14,7 +5,7 @@ import { MessagesSync } from '../../src/interfaces/messages-sync.js';
14
5
  import { MessagesSyncHandler } from '../../src/handlers/messages-sync.js';
15
6
  import sinon from 'sinon';
16
7
  import { TestDataGenerator } from '../utils/test-data-generator.js';
17
- import { TestEventStream } from '../test-event-stream.js';
8
+ import { TestEventLog } from '../test-event-stream.js';
18
9
  import { TestStores } from '../test-stores.js';
19
10
  import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
20
11
  import { DidKey, UniversalResolver } from '@enbox/dids';
@@ -26,246 +17,254 @@ export function testMessagesSyncHandler() {
26
17
  let dataStore;
27
18
  let resumableTaskStore;
28
19
  let stateIndex;
29
- let eventStream;
20
+ let eventLog;
30
21
  let dwn;
31
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
22
+ beforeAll(async () => {
32
23
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
33
24
  const stores = TestStores.get();
34
25
  messageStore = stores.messageStore;
35
26
  dataStore = stores.dataStore;
36
27
  resumableTaskStore = stores.resumableTaskStore;
37
28
  stateIndex = stores.stateIndex;
38
- eventStream = TestEventStream.get();
39
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
40
- }));
41
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
42
- yield messageStore.clear();
43
- yield dataStore.clear();
44
- yield resumableTaskStore.clear();
45
- yield stateIndex.clear();
46
- }));
47
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
48
- yield dwn.close();
49
- }));
29
+ eventLog = TestEventLog.get();
30
+ dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventLog, resumableTaskStore });
31
+ });
32
+ beforeEach(async () => {
33
+ await messageStore.clear();
34
+ await dataStore.clear();
35
+ await resumableTaskStore.clear();
36
+ await stateIndex.clear();
37
+ });
38
+ afterAll(async () => {
39
+ await dwn.close();
40
+ });
50
41
  describe('root action', () => {
51
- it('returns the empty root hash for a tenant with no messages', () => __awaiter(this, void 0, void 0, function* () {
52
- const alice = yield TestDataGenerator.generateDidKeyPersona();
53
- const { message } = yield MessagesSync.create({
42
+ it('returns the empty root hash for a tenant with no messages', async () => {
43
+ const alice = await TestDataGenerator.generateDidKeyPersona();
44
+ const { message } = await MessagesSync.create({
54
45
  signer: Jws.createSigner(alice),
55
46
  action: 'root',
56
47
  });
57
- const reply = yield dwn.processMessage(alice.did, message);
48
+ const reply = await dwn.processMessage(alice.did, message);
58
49
  expect(reply.status.code).toBe(200);
59
50
  expect(typeof reply.root).toBe('string');
60
51
  expect(reply.root.length).toBe(64); // hex-encoded 32-byte hash
61
- }));
62
- it('returns a different root hash after writing a message', () => __awaiter(this, void 0, void 0, function* () {
63
- const alice = yield TestDataGenerator.generateDidKeyPersona();
52
+ });
53
+ it('returns a different root hash after writing a message', async () => {
54
+ const alice = await TestDataGenerator.generateDidKeyPersona();
55
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
64
56
  // get the empty root
65
- const { message: rootMsg1 } = yield MessagesSync.create({
57
+ const { message: rootMsg1 } = await MessagesSync.create({
66
58
  signer: Jws.createSigner(alice),
67
59
  action: 'root',
68
60
  });
69
- const reply1 = yield dwn.processMessage(alice.did, rootMsg1);
61
+ const reply1 = await dwn.processMessage(alice.did, rootMsg1);
70
62
  expect(reply1.status.code).toBe(200);
71
63
  const emptyRoot = reply1.root;
72
64
  // write a record
73
- const { message: recordMessage, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
74
- const writeReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream });
65
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
66
+ const writeReply = await dwn.processMessage(alice.did, recordMessage, { dataStream });
75
67
  expect(writeReply.status.code).toBe(202);
76
68
  // get the root again
77
- const { message: rootMsg2 } = yield MessagesSync.create({
69
+ const { message: rootMsg2 } = await MessagesSync.create({
78
70
  signer: Jws.createSigner(alice),
79
71
  action: 'root',
80
72
  });
81
- const reply2 = yield dwn.processMessage(alice.did, rootMsg2);
73
+ const reply2 = await dwn.processMessage(alice.did, rootMsg2);
82
74
  expect(reply2.status.code).toBe(200);
83
75
  expect(reply2.root).not.toBe(emptyRoot);
84
- }));
85
- it('returns protocol-scoped root hash when protocol is specified', () => __awaiter(this, void 0, void 0, function* () {
86
- const alice = yield TestDataGenerator.generateDidKeyPersona();
87
- const protocolDefinition = Object.assign(Object.assign({}, freeForAll), { published: true });
76
+ });
77
+ it('returns protocol-scoped root hash when protocol is specified', async () => {
78
+ const alice = await TestDataGenerator.generateDidKeyPersona();
79
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
80
+ const protocolDefinition = { ...freeForAll, published: true };
88
81
  // configure the protocol
89
- const { message: protocolMessage } = yield TestDataGenerator.generateProtocolsConfigure({
82
+ const { message: protocolMessage } = await TestDataGenerator.generateProtocolsConfigure({
90
83
  author: alice,
91
84
  protocolDefinition,
92
85
  });
93
- const configureReply = yield dwn.processMessage(alice.did, protocolMessage);
86
+ const configureReply = await dwn.processMessage(alice.did, protocolMessage);
94
87
  expect(configureReply.status.code).toBe(202);
95
88
  // write a record for this protocol
96
- const { message: recordMessage, dataStream } = yield TestDataGenerator.generateRecordsWrite({
89
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({
97
90
  author: alice,
98
91
  protocol: protocolDefinition.protocol,
99
92
  protocolPath: 'post',
100
93
  schema: protocolDefinition.types.post.schema,
101
94
  });
102
- const writeReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream });
95
+ const writeReply = await dwn.processMessage(alice.did, recordMessage, { dataStream });
103
96
  expect(writeReply.status.code).toBe(202);
104
- // write a flat-space (non-protocol) record to diverge the global root
105
- const { message: flatRecord, dataStream: flatDataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
106
- const flatWriteReply = yield dwn.processMessage(alice.did, flatRecord, { dataStream: flatDataStream });
107
- expect(flatWriteReply.status.code).toBe(202);
97
+ // write a record under a different protocol to diverge the global root
98
+ const { message: otherRecord, dataStream: otherDataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
99
+ const otherWriteReply = await dwn.processMessage(alice.did, otherRecord, { dataStream: otherDataStream });
100
+ expect(otherWriteReply.status.code).toBe(202);
108
101
  // get the global root
109
- const { message: globalRootMsg } = yield MessagesSync.create({
102
+ const { message: globalRootMsg } = await MessagesSync.create({
110
103
  signer: Jws.createSigner(alice),
111
104
  action: 'root',
112
105
  });
113
- const globalReply = yield dwn.processMessage(alice.did, globalRootMsg);
106
+ const globalReply = await dwn.processMessage(alice.did, globalRootMsg);
114
107
  expect(globalReply.status.code).toBe(200);
115
108
  // get the protocol-scoped root
116
- const { message: protoRootMsg } = yield MessagesSync.create({
109
+ const { message: protoRootMsg } = await MessagesSync.create({
117
110
  signer: Jws.createSigner(alice),
118
111
  action: 'root',
119
112
  protocol: protocolDefinition.protocol,
120
113
  });
121
- const protoReply = yield dwn.processMessage(alice.did, protoRootMsg);
114
+ const protoReply = await dwn.processMessage(alice.did, protoRootMsg);
122
115
  expect(protoReply.status.code).toBe(200);
123
116
  // global root and protocol root should be different
124
- // (global includes the flat-space record which is not in any protocol)
117
+ // (global includes the record from the other protocol)
125
118
  expect(protoReply.root).not.toBe(globalReply.root);
126
119
  // both should be non-empty roots
127
120
  expect(protoReply.root.length).toBe(64);
128
- }));
121
+ });
129
122
  });
130
123
  describe('subtree action', () => {
131
- it('returns a subtree hash for a given bit prefix', () => __awaiter(this, void 0, void 0, function* () {
132
- const alice = yield TestDataGenerator.generateDidKeyPersona();
124
+ it('returns a subtree hash for a given bit prefix', async () => {
125
+ const alice = await TestDataGenerator.generateDidKeyPersona();
126
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
133
127
  // write a record so the tree is non-empty
134
- const { message: recordMessage, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
135
- const writeReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream });
128
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
129
+ const writeReply = await dwn.processMessage(alice.did, recordMessage, { dataStream });
136
130
  expect(writeReply.status.code).toBe(202);
137
- const { message } = yield MessagesSync.create({
131
+ const { message } = await MessagesSync.create({
138
132
  signer: Jws.createSigner(alice),
139
133
  action: 'subtree',
140
134
  prefix: '0',
141
135
  });
142
- const reply = yield dwn.processMessage(alice.did, message);
136
+ const reply = await dwn.processMessage(alice.did, message);
143
137
  expect(reply.status.code).toBe(200);
144
138
  expect(typeof reply.hash).toBe('string');
145
139
  expect(reply.hash.length).toBe(64);
146
- }));
147
- it('returns different hashes for different prefixes', () => __awaiter(this, void 0, void 0, function* () {
148
- const alice = yield TestDataGenerator.generateDidKeyPersona();
140
+ });
141
+ it('returns different hashes for different prefixes', async () => {
142
+ const alice = await TestDataGenerator.generateDidKeyPersona();
143
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
149
144
  // write several records to populate various subtrees
150
145
  for (let i = 0; i < 10; i++) {
151
- const { message: recordMessage, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
152
- const writeReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream });
146
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
147
+ const writeReply = await dwn.processMessage(alice.did, recordMessage, { dataStream });
153
148
  expect(writeReply.status.code).toBe(202);
154
149
  }
155
- const { message: msg0 } = yield MessagesSync.create({
150
+ const { message: msg0 } = await MessagesSync.create({
156
151
  signer: Jws.createSigner(alice),
157
152
  action: 'subtree',
158
153
  prefix: '0',
159
154
  });
160
- const reply0 = yield dwn.processMessage(alice.did, msg0);
161
- const { message: msg1 } = yield MessagesSync.create({
155
+ const reply0 = await dwn.processMessage(alice.did, msg0);
156
+ const { message: msg1 } = await MessagesSync.create({
162
157
  signer: Jws.createSigner(alice),
163
158
  action: 'subtree',
164
159
  prefix: '1',
165
160
  });
166
- const reply1 = yield dwn.processMessage(alice.did, msg1);
161
+ const reply1 = await dwn.processMessage(alice.did, msg1);
167
162
  expect(reply0.status.code).toBe(200);
168
163
  expect(reply1.status.code).toBe(200);
169
164
  // With 10 messages, it's very likely the two halves of the tree differ
170
165
  // (not guaranteed but probabilistically near-certain)
171
- }));
166
+ });
172
167
  });
173
168
  describe('leaves action', () => {
174
- it('returns all message CIDs for an empty prefix', () => __awaiter(this, void 0, void 0, function* () {
175
- const alice = yield TestDataGenerator.generateDidKeyPersona();
169
+ it('returns all message CIDs for an empty prefix', async () => {
170
+ const alice = await TestDataGenerator.generateDidKeyPersona();
171
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
176
172
  // write some messages
177
173
  const expectedCids = [];
178
174
  for (let i = 0; i < 3; i++) {
179
- const { message: recordMessage, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
180
- const writeReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream });
175
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
176
+ const writeReply = await dwn.processMessage(alice.did, recordMessage, { dataStream });
181
177
  expect(writeReply.status.code).toBe(202);
182
- expectedCids.push(yield Message.getCid(recordMessage));
178
+ expectedCids.push(await Message.getCid(recordMessage));
183
179
  }
184
- const { message } = yield MessagesSync.create({
180
+ const { message } = await MessagesSync.create({
185
181
  signer: Jws.createSigner(alice),
186
182
  action: 'leaves',
187
183
  prefix: '',
188
184
  });
189
- const reply = yield dwn.processMessage(alice.did, message);
185
+ const reply = await dwn.processMessage(alice.did, message);
190
186
  expect(reply.status.code).toBe(200);
191
187
  expect(Array.isArray(reply.entries)).toBe(true);
192
- expect(reply.entries.length).toBe(3);
188
+ // 3 RecordsWrite messages + 1 ProtocolsConfigure for the default test protocol
189
+ expect(reply.entries.length).toBe(4);
193
190
  for (const cid of expectedCids) {
194
191
  expect(reply.entries).toContain(cid);
195
192
  }
196
- }));
197
- it('returns protocol-scoped leaves when protocol is specified', () => __awaiter(this, void 0, void 0, function* () {
198
- const alice = yield TestDataGenerator.generateDidKeyPersona();
199
- const protocolDefinition = Object.assign(Object.assign({}, freeForAll), { published: true });
193
+ });
194
+ it('returns protocol-scoped leaves when protocol is specified', async () => {
195
+ const alice = await TestDataGenerator.generateDidKeyPersona();
196
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
197
+ const protocolDefinition = { ...freeForAll, published: true };
200
198
  // configure the protocol
201
- const { message: protocolMessage } = yield TestDataGenerator.generateProtocolsConfigure({
199
+ const { message: protocolMessage } = await TestDataGenerator.generateProtocolsConfigure({
202
200
  author: alice,
203
201
  protocolDefinition,
204
202
  });
205
- const configureReply = yield dwn.processMessage(alice.did, protocolMessage);
203
+ const configureReply = await dwn.processMessage(alice.did, protocolMessage);
206
204
  expect(configureReply.status.code).toBe(202);
207
205
  // write a protocol-scoped record
208
- const { message: protoRecord, dataStream: protoDataStream } = yield TestDataGenerator.generateRecordsWrite({
206
+ const { message: protoRecord, dataStream: protoDataStream } = await TestDataGenerator.generateRecordsWrite({
209
207
  author: alice,
210
208
  protocol: protocolDefinition.protocol,
211
209
  protocolPath: 'post',
212
210
  schema: protocolDefinition.types.post.schema,
213
211
  });
214
- const protoWriteReply = yield dwn.processMessage(alice.did, protoRecord, { dataStream: protoDataStream });
212
+ const protoWriteReply = await dwn.processMessage(alice.did, protoRecord, { dataStream: protoDataStream });
215
213
  expect(protoWriteReply.status.code).toBe(202);
216
- // write a non-protocol record
217
- const { message: flatRecord, dataStream: flatDataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
218
- const flatWriteReply = yield dwn.processMessage(alice.did, flatRecord, { dataStream: flatDataStream });
219
- expect(flatWriteReply.status.code).toBe(202);
214
+ // write a record under a different protocol
215
+ const { message: otherRecord, dataStream: otherDataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
216
+ const otherWriteReply = await dwn.processMessage(alice.did, otherRecord, { dataStream: otherDataStream });
217
+ expect(otherWriteReply.status.code).toBe(202);
220
218
  // query protocol-scoped leaves
221
- const { message } = yield MessagesSync.create({
219
+ const { message } = await MessagesSync.create({
222
220
  signer: Jws.createSigner(alice),
223
221
  action: 'leaves',
224
222
  prefix: '',
225
223
  protocol: protocolDefinition.protocol,
226
224
  });
227
- const reply = yield dwn.processMessage(alice.did, message);
225
+ const reply = await dwn.processMessage(alice.did, message);
228
226
  expect(reply.status.code).toBe(200);
229
- // should contain the ProtocolsConfigure and the protocol-scoped record, but not the flat record
227
+ // should contain the ProtocolsConfigure and the protocol-scoped record, but not the other-protocol record
230
228
  expect(reply.entries.length).toBe(2);
231
- const protocolCid = yield Message.getCid(protocolMessage);
232
- const recordCid = yield Message.getCid(protoRecord);
229
+ const protocolCid = await Message.getCid(protocolMessage);
230
+ const recordCid = await Message.getCid(protoRecord);
233
231
  expect(reply.entries).toContain(protocolCid);
234
232
  expect(reply.entries).toContain(recordCid);
235
- }));
233
+ });
236
234
  });
237
235
  describe('authorization', () => {
238
- it('returns 401 if tenant is not the author', () => __awaiter(this, void 0, void 0, function* () {
239
- const alice = yield TestDataGenerator.generateDidKeyPersona();
240
- const bob = yield TestDataGenerator.generateDidKeyPersona();
241
- const { message } = yield MessagesSync.create({
236
+ it('returns 401 if tenant is not the author', async () => {
237
+ const alice = await TestDataGenerator.generateDidKeyPersona();
238
+ const bob = await TestDataGenerator.generateDidKeyPersona();
239
+ const { message } = await MessagesSync.create({
242
240
  signer: Jws.createSigner(alice),
243
241
  action: 'root',
244
242
  });
245
- const reply = yield dwn.processMessage(bob.did, message);
243
+ const reply = await dwn.processMessage(bob.did, message);
246
244
  expect(reply.status.code).toBe(401);
247
- }));
248
- it('returns 400 if message is invalid', () => __awaiter(this, void 0, void 0, function* () {
249
- const alice = yield TestDataGenerator.generateDidKeyPersona();
250
- const { message } = yield MessagesSync.create({
245
+ });
246
+ it('returns 400 if message is invalid', async () => {
247
+ const alice = await TestDataGenerator.generateDidKeyPersona();
248
+ const { message } = await MessagesSync.create({
251
249
  signer: Jws.createSigner(alice),
252
250
  action: 'root',
253
251
  });
254
252
  message['descriptor']['troll'] = 'hehe';
255
- const handler = new MessagesSyncHandler(didResolver, messageStore, stateIndex);
256
- const reply = yield handler.handle({ tenant: alice.did, message });
253
+ const handler = new MessagesSyncHandler({ didResolver, messageStore, stateIndex });
254
+ const reply = await handler.handle({ tenant: alice.did, message });
257
255
  expect(reply.status.code).toBe(400);
258
- }));
256
+ });
259
257
  describe('grant-based sync', () => {
260
- it('allows sync with a matching MessagesSync grant scope', () => __awaiter(this, void 0, void 0, function* () {
261
- const alice = yield TestDataGenerator.generateDidKeyPersona();
262
- const bob = yield TestDataGenerator.generateDidKeyPersona();
258
+ it('allows sync with a matching MessagesSync grant scope', async () => {
259
+ const alice = await TestDataGenerator.generateDidKeyPersona();
260
+ const bob = await TestDataGenerator.generateDidKeyPersona();
261
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
263
262
  // write a record so the tree is non-empty
264
- const { message: recordMessage, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
265
- const writeReply = yield dwn.processMessage(alice.did, recordMessage, { dataStream });
263
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
264
+ const writeReply = await dwn.processMessage(alice.did, recordMessage, { dataStream });
266
265
  expect(writeReply.status.code).toBe(202);
267
266
  // grant bob permission to sync Alice's messages
268
- const { message: grantMessage, dataStream: grantDataStream } = yield TestDataGenerator.generateGrantCreate({
267
+ const { message: grantMessage, dataStream: grantDataStream } = await TestDataGenerator.generateGrantCreate({
269
268
  author: alice,
270
269
  grantedTo: bob,
271
270
  scope: {
@@ -273,38 +272,112 @@ export function testMessagesSyncHandler() {
273
272
  method: DwnMethodName.Sync,
274
273
  },
275
274
  });
276
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream: grantDataStream });
275
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream: grantDataStream });
277
276
  expect(grantReply.status.code).toBe(202);
278
277
  // bob syncs using the grant — root action
279
- const { message: syncMsg } = yield MessagesSync.create({
278
+ const { message: syncMsg } = await MessagesSync.create({
280
279
  signer: Jws.createSigner(bob),
281
280
  action: 'root',
282
281
  permissionGrantId: grantMessage.recordId,
283
282
  });
284
- const reply = yield dwn.processMessage(alice.did, syncMsg);
283
+ const reply = await dwn.processMessage(alice.did, syncMsg);
285
284
  expect(reply.status.code).toBe(200);
286
285
  expect(typeof reply.root).toBe('string');
287
286
  expect(reply.root.length).toBe(64);
288
- }));
289
- it('allows sync with a protocol-scoped grant', () => __awaiter(this, void 0, void 0, function* () {
290
- const alice = yield TestDataGenerator.generateDidKeyPersona();
291
- const bob = yield TestDataGenerator.generateDidKeyPersona();
292
- const protocolDefinition = Object.assign(Object.assign({}, freeForAll), { published: true });
287
+ });
288
+ it('allows sync with a unified MessagesRead grant scope', async () => {
289
+ // scenario: A Messages.Read grant should also authorize MessagesSync operations
290
+ const alice = await TestDataGenerator.generateDidKeyPersona();
291
+ const bob = await TestDataGenerator.generateDidKeyPersona();
292
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
293
+ // write a record so the tree is non-empty
294
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
295
+ const writeReply = await dwn.processMessage(alice.did, recordMessage, { dataStream });
296
+ expect(writeReply.status.code).toBe(202);
297
+ // grant bob permission with Messages.Read scope (unified)
298
+ const { message: grantMessage, dataStream: grantDataStream } = await TestDataGenerator.generateGrantCreate({
299
+ author: alice,
300
+ grantedTo: bob,
301
+ scope: {
302
+ interface: DwnInterfaceName.Messages,
303
+ method: DwnMethodName.Read,
304
+ },
305
+ });
306
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream: grantDataStream });
307
+ expect(grantReply.status.code).toBe(202);
308
+ // bob syncs using the Messages.Read grant — root action
309
+ const { message: syncMsg } = await MessagesSync.create({
310
+ signer: Jws.createSigner(bob),
311
+ action: 'root',
312
+ permissionGrantId: grantMessage.recordId,
313
+ });
314
+ const reply2 = await dwn.processMessage(alice.did, syncMsg);
315
+ expect(reply2.status.code).toBe(200);
316
+ expect(typeof reply2.root).toBe('string');
317
+ expect(reply2.root.length).toBe(64);
318
+ });
319
+ it('allows sync with a protocol-scoped MessagesRead grant', async () => {
320
+ // scenario: A Messages.Read grant scoped to a protocol should authorize protocol-scoped MessagesSync
321
+ const alice = await TestDataGenerator.generateDidKeyPersona();
322
+ const bob = await TestDataGenerator.generateDidKeyPersona();
323
+ const protocolDefinition = { ...freeForAll, published: true };
293
324
  // configure and write a protocol record
294
- const { message: protocolMessage } = yield TestDataGenerator.generateProtocolsConfigure({
325
+ const { message: protocolMessage } = await TestDataGenerator.generateProtocolsConfigure({
295
326
  author: alice,
296
327
  protocolDefinition,
297
328
  });
298
- yield dwn.processMessage(alice.did, protocolMessage);
299
- const { message: recordMessage, dataStream } = yield TestDataGenerator.generateRecordsWrite({
329
+ await dwn.processMessage(alice.did, protocolMessage);
330
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({
300
331
  author: alice,
301
332
  protocol: protocolDefinition.protocol,
302
333
  protocolPath: 'post',
303
334
  schema: protocolDefinition.types.post.schema,
304
335
  });
305
- yield dwn.processMessage(alice.did, recordMessage, { dataStream });
336
+ await dwn.processMessage(alice.did, recordMessage, { dataStream });
337
+ // grant bob permission with Messages.Read scope scoped to this protocol
338
+ const { message: grantMessage, dataStream: grantDataStream } = await TestDataGenerator.generateGrantCreate({
339
+ author: alice,
340
+ grantedTo: bob,
341
+ scope: {
342
+ interface: DwnInterfaceName.Messages,
343
+ method: DwnMethodName.Read,
344
+ protocol: protocolDefinition.protocol,
345
+ },
346
+ });
347
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream: grantDataStream });
348
+ expect(grantReply.status.code).toBe(202);
349
+ // bob syncs leaves with the protocol-scoped Messages.Read grant
350
+ const { message: syncMsg } = await MessagesSync.create({
351
+ signer: Jws.createSigner(bob),
352
+ action: 'leaves',
353
+ prefix: '',
354
+ protocol: protocolDefinition.protocol,
355
+ permissionGrantId: grantMessage.recordId,
356
+ });
357
+ const reply2 = await dwn.processMessage(alice.did, syncMsg);
358
+ expect(reply2.status.code).toBe(200);
359
+ expect(Array.isArray(reply2.entries)).toBe(true);
360
+ expect(reply2.entries.length).toBe(2);
361
+ });
362
+ it('allows sync with a protocol-scoped grant', async () => {
363
+ const alice = await TestDataGenerator.generateDidKeyPersona();
364
+ const bob = await TestDataGenerator.generateDidKeyPersona();
365
+ const protocolDefinition = { ...freeForAll, published: true };
366
+ // configure and write a protocol record
367
+ const { message: protocolMessage } = await TestDataGenerator.generateProtocolsConfigure({
368
+ author: alice,
369
+ protocolDefinition,
370
+ });
371
+ await dwn.processMessage(alice.did, protocolMessage);
372
+ const { message: recordMessage, dataStream } = await TestDataGenerator.generateRecordsWrite({
373
+ author: alice,
374
+ protocol: protocolDefinition.protocol,
375
+ protocolPath: 'post',
376
+ schema: protocolDefinition.types.post.schema,
377
+ });
378
+ await dwn.processMessage(alice.did, recordMessage, { dataStream });
306
379
  // grant bob permission to sync Alice's messages scoped to this protocol
307
- const { message: grantMessage, dataStream: grantDataStream } = yield TestDataGenerator.generateGrantCreate({
380
+ const { message: grantMessage, dataStream: grantDataStream } = await TestDataGenerator.generateGrantCreate({
308
381
  author: alice,
309
382
  grantedTo: bob,
310
383
  scope: {
@@ -313,31 +386,31 @@ export function testMessagesSyncHandler() {
313
386
  protocol: protocolDefinition.protocol,
314
387
  },
315
388
  });
316
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream: grantDataStream });
389
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream: grantDataStream });
317
390
  expect(grantReply.status.code).toBe(202);
318
391
  // bob syncs leaves with the protocol-scoped grant
319
- const { message: syncMsg } = yield MessagesSync.create({
392
+ const { message: syncMsg } = await MessagesSync.create({
320
393
  signer: Jws.createSigner(bob),
321
394
  action: 'leaves',
322
395
  prefix: '',
323
396
  protocol: protocolDefinition.protocol,
324
397
  permissionGrantId: grantMessage.recordId,
325
398
  });
326
- const reply = yield dwn.processMessage(alice.did, syncMsg);
399
+ const reply = await dwn.processMessage(alice.did, syncMsg);
327
400
  expect(reply.status.code).toBe(200);
328
401
  expect(Array.isArray(reply.entries)).toBe(true);
329
402
  // includes both the ProtocolsConfigure and the RecordsWrite
330
403
  expect(reply.entries.length).toBe(2);
331
- const protocolCid = yield Message.getCid(protocolMessage);
332
- const recordCid = yield Message.getCid(recordMessage);
404
+ const protocolCid = await Message.getCid(protocolMessage);
405
+ const recordCid = await Message.getCid(recordMessage);
333
406
  expect(reply.entries).toContain(protocolCid);
334
407
  expect(reply.entries).toContain(recordCid);
335
- }));
336
- it('rejects sync with mismatching interface grant scope', () => __awaiter(this, void 0, void 0, function* () {
337
- const alice = yield TestDataGenerator.generateDidKeyPersona();
338
- const bob = yield TestDataGenerator.generateDidKeyPersona();
408
+ });
409
+ it('rejects sync with mismatching interface grant scope', async () => {
410
+ const alice = await TestDataGenerator.generateDidKeyPersona();
411
+ const bob = await TestDataGenerator.generateDidKeyPersona();
339
412
  // create a RecordsWrite grant (wrong interface for MessagesSync)
340
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
413
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
341
414
  author: alice,
342
415
  grantedTo: bob,
343
416
  scope: {
@@ -346,22 +419,22 @@ export function testMessagesSyncHandler() {
346
419
  protocol: freeForAll.protocol,
347
420
  },
348
421
  });
349
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
422
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
350
423
  expect(grantReply.status.code).toBe(202);
351
- const { message: syncMsg } = yield MessagesSync.create({
424
+ const { message: syncMsg } = await MessagesSync.create({
352
425
  signer: Jws.createSigner(bob),
353
426
  action: 'root',
354
427
  permissionGrantId: grantMessage.recordId,
355
428
  });
356
- const reply = yield dwn.processMessage(alice.did, syncMsg);
429
+ const reply = await dwn.processMessage(alice.did, syncMsg);
357
430
  expect(reply.status.code).toBe(401);
358
431
  expect(reply.status.detail).toContain(DwnErrorCode.GrantAuthorizationInterfaceMismatch);
359
- }));
360
- it('rejects sync with mismatching method grant scope', () => __awaiter(this, void 0, void 0, function* () {
361
- const alice = yield TestDataGenerator.generateDidKeyPersona();
362
- const bob = yield TestDataGenerator.generateDidKeyPersona();
432
+ });
433
+ it('rejects sync with mismatching method grant scope', async () => {
434
+ const alice = await TestDataGenerator.generateDidKeyPersona();
435
+ const bob = await TestDataGenerator.generateDidKeyPersona();
363
436
  // create a MessagesSubscribe grant (wrong method for MessagesSync)
364
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
437
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
365
438
  author: alice,
366
439
  grantedTo: bob,
367
440
  scope: {
@@ -369,22 +442,22 @@ export function testMessagesSyncHandler() {
369
442
  method: DwnMethodName.Subscribe,
370
443
  },
371
444
  });
372
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
445
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
373
446
  expect(grantReply.status.code).toBe(202);
374
- const { message: syncMsg } = yield MessagesSync.create({
447
+ const { message: syncMsg } = await MessagesSync.create({
375
448
  signer: Jws.createSigner(bob),
376
449
  action: 'root',
377
450
  permissionGrantId: grantMessage.recordId,
378
451
  });
379
- const reply = yield dwn.processMessage(alice.did, syncMsg);
452
+ const reply = await dwn.processMessage(alice.did, syncMsg);
380
453
  expect(reply.status.code).toBe(401);
381
454
  expect(reply.status.detail).toContain(DwnErrorCode.GrantAuthorizationMethodMismatch);
382
- }));
383
- it('rejects sync with mismatching protocol grant scope', () => __awaiter(this, void 0, void 0, function* () {
384
- const alice = yield TestDataGenerator.generateDidKeyPersona();
385
- const bob = yield TestDataGenerator.generateDidKeyPersona();
455
+ });
456
+ it('rejects sync with mismatching protocol grant scope', async () => {
457
+ const alice = await TestDataGenerator.generateDidKeyPersona();
458
+ const bob = await TestDataGenerator.generateDidKeyPersona();
386
459
  // grant bob permission to sync protocol1
387
- const { message: grantMessage, dataStream } = yield TestDataGenerator.generateGrantCreate({
460
+ const { message: grantMessage, dataStream } = await TestDataGenerator.generateGrantCreate({
388
461
  author: alice,
389
462
  grantedTo: bob,
390
463
  scope: {
@@ -393,39 +466,39 @@ export function testMessagesSyncHandler() {
393
466
  protocol: 'http://protocol1',
394
467
  },
395
468
  });
396
- const grantReply = yield dwn.processMessage(alice.did, grantMessage, { dataStream });
469
+ const grantReply = await dwn.processMessage(alice.did, grantMessage, { dataStream });
397
470
  expect(grantReply.status.code).toBe(202);
398
471
  // bob attempts to sync protocol2 using the protocol1 grant
399
- const { message: syncMsg } = yield MessagesSync.create({
472
+ const { message: syncMsg } = await MessagesSync.create({
400
473
  signer: Jws.createSigner(bob),
401
474
  action: 'root',
402
475
  protocol: 'http://protocol2',
403
476
  permissionGrantId: grantMessage.recordId,
404
477
  });
405
- const reply = yield dwn.processMessage(alice.did, syncMsg);
478
+ const reply = await dwn.processMessage(alice.did, syncMsg);
406
479
  expect(reply.status.code).toBe(401);
407
480
  expect(reply.status.detail).toContain(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol);
408
- }));
481
+ });
409
482
  });
410
483
  });
411
484
  describe('input validation', () => {
412
- it('returns 400 for an unknown action', () => __awaiter(this, void 0, void 0, function* () {
413
- const alice = yield TestDataGenerator.generateDidKeyPersona();
414
- const { message } = yield MessagesSync.create({
485
+ it('returns 400 for an unknown action', async () => {
486
+ const alice = await TestDataGenerator.generateDidKeyPersona();
487
+ const { message } = await MessagesSync.create({
415
488
  signer: Jws.createSigner(alice),
416
489
  action: 'root',
417
490
  });
418
491
  // manually override to an invalid action
419
492
  message.descriptor.action = 'invalid';
420
- const handler = new MessagesSyncHandler(didResolver, messageStore, stateIndex);
421
- const reply = yield handler.handle({ tenant: alice.did, message });
493
+ const handler = new MessagesSyncHandler({ didResolver, messageStore, stateIndex });
494
+ const reply = await handler.handle({ tenant: alice.did, message });
422
495
  expect(reply.status.code).toBe(400);
423
496
  // the JSON schema validator catches the invalid action before the handler switch/case
424
497
  expect(reply.status.detail).toContain('SchemaValidatorFailure');
425
- }));
426
- it('returns 400 for unknown action that bypasses schema validation (default case)', () => __awaiter(this, void 0, void 0, function* () {
427
- const alice = yield TestDataGenerator.generateDidKeyPersona();
428
- const { message } = yield MessagesSync.create({
498
+ });
499
+ it('returns 400 for unknown action that bypasses schema validation (default case)', async () => {
500
+ const alice = await TestDataGenerator.generateDidKeyPersona();
501
+ const { message } = await MessagesSync.create({
429
502
  signer: Jws.createSigner(alice),
430
503
  action: 'root',
431
504
  });
@@ -438,18 +511,18 @@ export function testMessagesSyncHandler() {
438
511
  try {
439
512
  // Override action to something that passes the stub but hits the default case
440
513
  message.descriptor.action = 'bogusAction';
441
- const handler = new MessagesSyncHandler(didResolver, messageStore, stateIndex);
442
- const reply = yield handler.handle({ tenant: alice.did, message });
514
+ const handler = new MessagesSyncHandler({ didResolver, messageStore, stateIndex });
515
+ const reply = await handler.handle({ tenant: alice.did, message });
443
516
  expect(reply.status.code).toBe(400);
444
517
  expect(reply.status.detail).toContain('Unknown action');
445
518
  }
446
519
  finally {
447
520
  parseStub.restore();
448
521
  }
449
- }));
450
- it('returns 500 for invalid prefix with non-binary characters (via stubbed parse)', () => __awaiter(this, void 0, void 0, function* () {
451
- const alice = yield TestDataGenerator.generateDidKeyPersona();
452
- const { message } = yield MessagesSync.create({
522
+ });
523
+ it('returns 500 for invalid prefix with non-binary characters (via stubbed parse)', async () => {
524
+ const alice = await TestDataGenerator.generateDidKeyPersona();
525
+ const { message } = await MessagesSync.create({
453
526
  signer: Jws.createSigner(alice),
454
527
  action: 'subtree',
455
528
  prefix: '0',
@@ -463,18 +536,18 @@ export function testMessagesSyncHandler() {
463
536
  try {
464
537
  // Override prefix to contain invalid characters
465
538
  message.descriptor.prefix = 'abc';
466
- const handler = new MessagesSyncHandler(didResolver, messageStore, stateIndex);
467
- const reply = yield handler.handle({ tenant: alice.did, message });
539
+ const handler = new MessagesSyncHandler({ didResolver, messageStore, stateIndex });
540
+ const reply = await handler.handle({ tenant: alice.did, message });
468
541
  expect(reply.status.code).toBe(500);
469
542
  expect(reply.status.detail).toContain('MessagesSyncInvalidPrefix');
470
543
  }
471
544
  finally {
472
545
  parseStub.restore();
473
546
  }
474
- }));
475
- it('returns 500 for prefix exceeding 256 characters (via stubbed parse)', () => __awaiter(this, void 0, void 0, function* () {
476
- const alice = yield TestDataGenerator.generateDidKeyPersona();
477
- const { message } = yield MessagesSync.create({
547
+ });
548
+ it('returns 500 for prefix exceeding 256 characters (via stubbed parse)', async () => {
549
+ const alice = await TestDataGenerator.generateDidKeyPersona();
550
+ const { message } = await MessagesSync.create({
478
551
  signer: Jws.createSigner(alice),
479
552
  action: 'subtree',
480
553
  prefix: '0',
@@ -488,40 +561,40 @@ export function testMessagesSyncHandler() {
488
561
  try {
489
562
  // Override prefix to be too long
490
563
  message.descriptor.prefix = '0'.repeat(257);
491
- const handler = new MessagesSyncHandler(didResolver, messageStore, stateIndex);
492
- const reply = yield handler.handle({ tenant: alice.did, message });
564
+ const handler = new MessagesSyncHandler({ didResolver, messageStore, stateIndex });
565
+ const reply = await handler.handle({ tenant: alice.did, message });
493
566
  expect(reply.status.code).toBe(500);
494
567
  expect(reply.status.detail).toContain('MessagesSyncInvalidPrefix');
495
568
  }
496
569
  finally {
497
570
  parseStub.restore();
498
571
  }
499
- }));
572
+ });
500
573
  });
501
574
  describe('error handling', () => {
502
- it('returns 500 when stateIndex throws an unexpected error', () => __awaiter(this, void 0, void 0, function* () {
503
- const alice = yield TestDataGenerator.generateDidKeyPersona();
575
+ it('returns 500 when stateIndex throws an unexpected error', async () => {
576
+ const alice = await TestDataGenerator.generateDidKeyPersona();
504
577
  const failingStateIndex = {
505
- open: () => __awaiter(this, void 0, void 0, function* () { }),
506
- close: () => __awaiter(this, void 0, void 0, function* () { }),
507
- clear: () => __awaiter(this, void 0, void 0, function* () { }),
508
- insert: () => __awaiter(this, void 0, void 0, function* () { }),
509
- delete: () => __awaiter(this, void 0, void 0, function* () { }),
510
- getRoot: () => __awaiter(this, void 0, void 0, function* () { throw new Error('Unexpected DB failure'); }),
511
- getProtocolRoot: () => __awaiter(this, void 0, void 0, function* () { throw new Error('Unexpected DB failure'); }),
512
- getSubtreeHash: () => __awaiter(this, void 0, void 0, function* () { throw new Error('Unexpected DB failure'); }),
513
- getProtocolSubtreeHash: () => __awaiter(this, void 0, void 0, function* () { throw new Error('Unexpected DB failure'); }),
514
- getLeaves: () => __awaiter(this, void 0, void 0, function* () { throw new Error('Unexpected DB failure'); }),
515
- getProtocolLeaves: () => __awaiter(this, void 0, void 0, function* () { throw new Error('Unexpected DB failure'); }),
578
+ open: async () => { },
579
+ close: async () => { },
580
+ clear: async () => { },
581
+ insert: async () => { },
582
+ delete: async () => { },
583
+ getRoot: async () => { throw new Error('Unexpected DB failure'); },
584
+ getProtocolRoot: async () => { throw new Error('Unexpected DB failure'); },
585
+ getSubtreeHash: async () => { throw new Error('Unexpected DB failure'); },
586
+ getProtocolSubtreeHash: async () => { throw new Error('Unexpected DB failure'); },
587
+ getLeaves: async () => { throw new Error('Unexpected DB failure'); },
588
+ getProtocolLeaves: async () => { throw new Error('Unexpected DB failure'); },
516
589
  };
517
- const handler = new MessagesSyncHandler(didResolver, messageStore, failingStateIndex);
518
- const { message } = yield MessagesSync.create({
590
+ const handler = new MessagesSyncHandler({ didResolver, messageStore, stateIndex: failingStateIndex });
591
+ const { message } = await MessagesSync.create({
519
592
  signer: Jws.createSigner(alice),
520
593
  action: 'root',
521
594
  });
522
- const reply = yield handler.handle({ tenant: alice.did, message });
595
+ const reply = await handler.handle({ tenant: alice.did, message });
523
596
  expect(reply.status.code).toBe(500);
524
- }));
597
+ });
525
598
  });
526
599
  });
527
600
  }