@enbox/dwn-sdk-js 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +1 -2
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/abstract-message.js +4 -0
  6. package/dist/esm/src/core/abstract-message.js.map +1 -1
  7. package/dist/esm/src/core/auth.js +22 -33
  8. package/dist/esm/src/core/auth.js.map +1 -1
  9. package/dist/esm/src/core/dwn-constant.js +7 -7
  10. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  11. package/dist/esm/src/core/dwn-error.js +1 -0
  12. package/dist/esm/src/core/dwn-error.js.map +1 -1
  13. package/dist/esm/src/core/grant-authorization.js +37 -52
  14. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/message.js +85 -116
  16. package/dist/esm/src/core/message.js.map +1 -1
  17. package/dist/esm/src/core/messages-grant-authorization.js +63 -78
  18. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  19. package/dist/esm/src/core/protocol-authorization-action.js +266 -0
  20. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
  21. package/dist/esm/src/core/protocol-authorization-validation.js +254 -0
  22. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
  23. package/dist/esm/src/core/protocol-authorization.js +122 -740
  24. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  25. package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
  26. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  27. package/dist/esm/src/core/record-chain.js +64 -0
  28. package/dist/esm/src/core/record-chain.js.map +1 -0
  29. package/dist/esm/src/core/records-grant-authorization.js +55 -72
  30. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  31. package/dist/esm/src/core/resumable-task-manager.js +50 -65
  32. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  33. package/dist/esm/src/core/tenant-gate.js +2 -13
  34. package/dist/esm/src/core/tenant-gate.js.map +1 -1
  35. package/dist/esm/src/dwn.js +69 -86
  36. package/dist/esm/src/dwn.js.map +1 -1
  37. package/dist/esm/src/event-stream/event-emitter-stream.js +17 -31
  38. package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -1
  39. package/dist/esm/src/handlers/messages-read.js +67 -77
  40. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  41. package/dist/esm/src/handlers/messages-subscribe.js +51 -61
  42. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  43. package/dist/esm/src/handlers/messages-sync.js +75 -85
  44. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  45. package/dist/esm/src/handlers/protocols-configure.js +135 -155
  46. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  47. package/dist/esm/src/handlers/protocols-query.js +52 -51
  48. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  49. package/dist/esm/src/handlers/records-count.js +96 -82
  50. package/dist/esm/src/handlers/records-count.js.map +1 -1
  51. package/dist/esm/src/handlers/records-delete.js +78 -88
  52. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  53. package/dist/esm/src/handlers/records-query.js +116 -101
  54. package/dist/esm/src/handlers/records-query.js.map +1 -1
  55. package/dist/esm/src/handlers/records-read.js +124 -131
  56. package/dist/esm/src/handlers/records-read.js.map +1 -1
  57. package/dist/esm/src/handlers/records-subscribe.js +150 -103
  58. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  59. package/dist/esm/src/handlers/records-write.js +250 -259
  60. package/dist/esm/src/handlers/records-write.js.map +1 -1
  61. package/dist/esm/src/interfaces/messages-read.js +24 -32
  62. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  63. package/dist/esm/src/interfaces/messages-subscribe.js +27 -41
  64. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  65. package/dist/esm/src/interfaces/messages-sync.js +26 -40
  66. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  67. package/dist/esm/src/interfaces/protocols-configure.js +63 -63
  68. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  69. package/dist/esm/src/interfaces/protocols-query.js +55 -68
  70. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  71. package/dist/esm/src/interfaces/records-count.js +50 -66
  72. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  73. package/dist/esm/src/interfaces/records-delete.js +45 -55
  74. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  75. package/dist/esm/src/interfaces/records-query.js +60 -76
  76. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-read.js +51 -67
  78. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-subscribe.js +52 -68
  80. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-write-query.js +102 -0
  82. package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
  83. package/dist/esm/src/interfaces/records-write-signing.js +92 -0
  84. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
  85. package/dist/esm/src/interfaces/records-write.js +407 -602
  86. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  87. package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
  88. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  89. package/dist/esm/src/jose/jws/general/builder.js +23 -35
  90. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  91. package/dist/esm/src/jose/jws/general/verifier.js +56 -69
  92. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  93. package/dist/esm/src/protocols/permission-grant.js +44 -15
  94. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  95. package/dist/esm/src/protocols/permission-request.js +29 -15
  96. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  97. package/dist/esm/src/protocols/permissions.js +216 -226
  98. package/dist/esm/src/protocols/permissions.js.map +1 -1
  99. package/dist/esm/src/smt/smt-store-level.js +42 -64
  100. package/dist/esm/src/smt/smt-store-level.js.map +1 -1
  101. package/dist/esm/src/smt/smt-store-memory.js +19 -45
  102. package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
  103. package/dist/esm/src/smt/smt-utils.js +28 -45
  104. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  105. package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
  106. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
  107. package/dist/esm/src/state-index/state-index-level.js +115 -150
  108. package/dist/esm/src/state-index/state-index-level.js.map +1 -1
  109. package/dist/esm/src/store/blockstore-level.js +54 -156
  110. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  111. package/dist/esm/src/store/blockstore-mock.js +48 -153
  112. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  113. package/dist/esm/src/store/data-store-level.js +59 -99
  114. package/dist/esm/src/store/data-store-level.js.map +1 -1
  115. package/dist/esm/src/store/index-level-compound.js +246 -0
  116. package/dist/esm/src/store/index-level-compound.js.map +1 -0
  117. package/dist/esm/src/store/index-level.js +295 -713
  118. package/dist/esm/src/store/index-level.js.map +1 -1
  119. package/dist/esm/src/store/level-wrapper.js +143 -244
  120. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  121. package/dist/esm/src/store/message-store-level.js +71 -94
  122. package/dist/esm/src/store/message-store-level.js.map +1 -1
  123. package/dist/esm/src/store/resumable-task-store-level.js +62 -101
  124. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
  125. package/dist/esm/src/store/storage-controller.js +129 -144
  126. package/dist/esm/src/store/storage-controller.js.map +1 -1
  127. package/dist/esm/src/utils/abort.js +8 -19
  128. package/dist/esm/src/utils/abort.js.map +1 -1
  129. package/dist/esm/src/utils/array.js +15 -49
  130. package/dist/esm/src/utils/array.js.map +1 -1
  131. package/dist/esm/src/utils/cid.js +29 -77
  132. package/dist/esm/src/utils/cid.js.map +1 -1
  133. package/dist/esm/src/utils/data-stream.js +37 -65
  134. package/dist/esm/src/utils/data-stream.js.map +1 -1
  135. package/dist/esm/src/utils/encryption.js +136 -162
  136. package/dist/esm/src/utils/encryption.js.map +1 -1
  137. package/dist/esm/src/utils/filter.js +1 -12
  138. package/dist/esm/src/utils/filter.js.map +1 -1
  139. package/dist/esm/src/utils/hd-key.js +45 -63
  140. package/dist/esm/src/utils/hd-key.js.map +1 -1
  141. package/dist/esm/src/utils/jws.js +9 -20
  142. package/dist/esm/src/utils/jws.js.map +1 -1
  143. package/dist/esm/src/utils/memory-cache.js +12 -23
  144. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  145. package/dist/esm/src/utils/messages.js +9 -3
  146. package/dist/esm/src/utils/messages.js.map +1 -1
  147. package/dist/esm/src/utils/private-key-signer.js +9 -17
  148. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  149. package/dist/esm/src/utils/protocols.js +62 -70
  150. package/dist/esm/src/utils/protocols.js.map +1 -1
  151. package/dist/esm/src/utils/records.js +100 -125
  152. package/dist/esm/src/utils/records.js.map +1 -1
  153. package/dist/esm/src/utils/secp256k1.js +60 -96
  154. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  155. package/dist/esm/src/utils/secp256r1.js +54 -71
  156. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  157. package/dist/esm/src/utils/time.js +5 -18
  158. package/dist/esm/src/utils/time.js.map +1 -1
  159. package/dist/esm/src/utils/url.js +3 -3
  160. package/dist/esm/src/utils/url.js.map +1 -1
  161. package/dist/esm/tests/core/auth.spec.js +3 -12
  162. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  163. package/dist/esm/tests/core/message.spec.js +50 -59
  164. package/dist/esm/tests/core/message.spec.js.map +1 -1
  165. package/dist/esm/tests/core/protocol-authorization.spec.js +9 -18
  166. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  167. package/dist/esm/tests/dwn.spec.js +45 -58
  168. package/dist/esm/tests/dwn.spec.js.map +1 -1
  169. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +24 -33
  170. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -1
  171. package/dist/esm/tests/event-stream/event-stream.spec.js +46 -55
  172. package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -1
  173. package/dist/esm/tests/features/author-delegated-grant.spec.js +326 -343
  174. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  175. package/dist/esm/tests/features/owner-delegated-grant.spec.js +153 -169
  176. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  177. package/dist/esm/tests/features/owner-signature.spec.js +67 -78
  178. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  179. package/dist/esm/tests/features/permissions.spec.js +446 -181
  180. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  181. package/dist/esm/tests/features/protocol-composition.spec.js +346 -356
  182. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  183. package/dist/esm/tests/features/protocol-create-action.spec.js +42 -51
  184. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  185. package/dist/esm/tests/features/protocol-delete-action.spec.js +94 -103
  186. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  187. package/dist/esm/tests/features/protocol-update-action.spec.js +105 -114
  188. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  189. package/dist/esm/tests/features/records-prune.spec.js +175 -191
  190. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  191. package/dist/esm/tests/features/records-tags.spec.js +441 -460
  192. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  193. package/dist/esm/tests/features/resumable-tasks.spec.js +82 -91
  194. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  195. package/dist/esm/tests/handlers/messages-read.spec.js +206 -207
  196. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  197. package/dist/esm/tests/handlers/messages-subscribe.spec.js +145 -154
  198. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  199. package/dist/esm/tests/handlers/messages-sync.spec.js +174 -183
  200. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  201. package/dist/esm/tests/handlers/protocols-configure.spec.js +244 -238
  202. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  203. package/dist/esm/tests/handlers/protocols-query.spec.js +156 -169
  204. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  205. package/dist/esm/tests/handlers/records-count.spec.js +93 -102
  206. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  207. package/dist/esm/tests/handlers/records-delete.spec.js +252 -264
  208. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  209. package/dist/esm/tests/handlers/records-query.spec.js +917 -988
  210. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  211. package/dist/esm/tests/handlers/records-read.spec.js +549 -564
  212. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  213. package/dist/esm/tests/handlers/records-subscribe.spec.js +269 -278
  214. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  215. package/dist/esm/tests/handlers/records-write.spec.js +1057 -1082
  216. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  217. package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
  218. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  219. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
  220. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  221. package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
  222. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  223. package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
  224. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  225. package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
  226. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  227. package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
  228. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  229. package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
  230. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  231. package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
  232. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  233. package/dist/esm/tests/interfaces/records-write.spec.js +152 -165
  234. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  235. package/dist/esm/tests/jose/jws/general.spec.js +36 -45
  236. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  237. package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
  238. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
  239. package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
  240. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  241. package/dist/esm/tests/protocols/permissions.spec.js +49 -55
  242. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  243. package/dist/esm/tests/scenarios/aggregator.spec.js +124 -135
  244. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  245. package/dist/esm/tests/scenarios/deleted-record.spec.js +23 -32
  246. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  247. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +52 -61
  248. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  249. package/dist/esm/tests/scenarios/nested-roles.spec.js +63 -73
  250. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  251. package/dist/esm/tests/scenarios/subscriptions.spec.js +377 -333
  252. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  253. package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
  254. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
  255. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
  256. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
  257. package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
  258. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
  259. package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
  260. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  261. package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
  262. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  263. package/dist/esm/tests/store/data-store-level.spec.js +86 -95
  264. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  265. package/dist/esm/tests/store/index-level.spec.js +404 -414
  266. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  267. package/dist/esm/tests/store/message-store-level.spec.js +13 -22
  268. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  269. package/dist/esm/tests/store/message-store.spec.js +229 -238
  270. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  271. package/dist/esm/tests/test-event-stream.js +3 -3
  272. package/dist/esm/tests/test-event-stream.js.map +1 -1
  273. package/dist/esm/tests/test-stores.js +16 -13
  274. package/dist/esm/tests/test-stores.js.map +1 -1
  275. package/dist/esm/tests/test-suite.js +2 -11
  276. package/dist/esm/tests/test-suite.js.map +1 -1
  277. package/dist/esm/tests/utils/cid.spec.js +24 -33
  278. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  279. package/dist/esm/tests/utils/data-stream.spec.js +48 -57
  280. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  281. package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
  282. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  283. package/dist/esm/tests/utils/encryption.spec.js +229 -82
  284. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  285. package/dist/esm/tests/utils/filters.spec.js +46 -55
  286. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  287. package/dist/esm/tests/utils/hd-key.spec.js +10 -19
  288. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  289. package/dist/esm/tests/utils/jws.spec.js +3 -12
  290. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  291. package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
  292. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  293. package/dist/esm/tests/utils/messages.spec.js +6 -15
  294. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  295. package/dist/esm/tests/utils/poller.js +22 -33
  296. package/dist/esm/tests/utils/poller.js.map +1 -1
  297. package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
  298. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  299. package/dist/esm/tests/utils/records.spec.js +10 -19
  300. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  301. package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
  302. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  303. package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
  304. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  305. package/dist/esm/tests/utils/test-data-generator.js +414 -468
  306. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  307. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
  308. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  309. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
  310. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  311. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
  312. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  313. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
  314. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  315. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
  316. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  317. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
  318. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  319. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
  320. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
  321. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +7 -16
  322. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  323. package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
  324. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
  325. package/dist/types/src/core/protocol-authorization-validation.d.ts +60 -0
  326. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
  327. package/dist/types/src/core/protocol-authorization.d.ts +10 -100
  328. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  329. package/dist/types/src/core/record-chain.d.ts +24 -0
  330. package/dist/types/src/core/record-chain.d.ts.map +1 -0
  331. package/dist/types/src/handlers/records-write.d.ts +2 -1
  332. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  333. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  334. package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
  335. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
  336. package/dist/types/src/interfaces/records-write-signing.d.ts +35 -0
  337. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
  338. package/dist/types/src/interfaces/records-write.d.ts +10 -44
  339. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  340. package/dist/types/src/store/index-level-compound.d.ts +70 -0
  341. package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
  342. package/dist/types/src/store/index-level.d.ts +0 -58
  343. package/dist/types/src/store/index-level.d.ts.map +1 -1
  344. package/dist/types/src/utils/protocols.d.ts +5 -0
  345. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  346. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  347. package/package.json +2 -2
  348. package/src/core/protocol-authorization-action.ts +377 -0
  349. package/src/core/protocol-authorization-validation.ts +391 -0
  350. package/src/core/protocol-authorization.ts +60 -849
  351. package/src/core/record-chain.ts +99 -0
  352. package/src/handlers/records-read.ts +1 -1
  353. package/src/handlers/records-write.ts +37 -21
  354. package/src/interfaces/protocols-configure.ts +33 -5
  355. package/src/interfaces/records-write-query.ts +139 -0
  356. package/src/interfaces/records-write-signing.ts +143 -0
  357. package/src/interfaces/records-write.ts +49 -221
  358. package/src/store/index-level-compound.ts +324 -0
  359. package/src/store/index-level.ts +24 -306
  360. package/src/utils/protocols.ts +8 -0
  361. package/src/utils/records.ts +1 -1
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
11
2
  import { lexicographicalCompare } from '../../src/utils/string.js';
12
3
  import { Message } from '../../src/core/message.js';
@@ -19,370 +10,370 @@ export function testMessageStore() {
19
10
  describe('put', function () {
20
11
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
21
12
  // so that different test suites can reuse the same backend store for testing
22
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
13
+ beforeAll(async () => {
23
14
  const stores = TestStores.get();
24
15
  messageStore = stores.messageStore;
25
- yield messageStore.open();
26
- }));
27
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
28
- yield messageStore.clear(); // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
29
- }));
30
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
31
- yield messageStore.close();
32
- }));
33
- it('stores messages as cbor/sha256 encoded blocks with CID as key', () => __awaiter(this, void 0, void 0, function* () {
34
- const alice = yield TestDataGenerator.generateDidKeyPersona();
35
- const { message } = yield TestDataGenerator.generateRecordsWrite();
16
+ await messageStore.open();
17
+ });
18
+ beforeEach(async () => {
19
+ await messageStore.clear(); // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
20
+ });
21
+ afterAll(async () => {
22
+ await messageStore.close();
23
+ });
24
+ it('stores messages as cbor/sha256 encoded blocks with CID as key', async () => {
25
+ const alice = await TestDataGenerator.generateDidKeyPersona();
26
+ const { message } = await TestDataGenerator.generateRecordsWrite();
36
27
  const { messageTimestamp } = message.descriptor;
37
- yield messageStore.put(alice.did, message, { messageTimestamp });
38
- const expectedCid = yield Message.getCid(message);
39
- const jsonMessage = (yield messageStore.get(alice.did, expectedCid));
40
- const resultCid = yield Message.getCid(jsonMessage);
28
+ await messageStore.put(alice.did, message, { messageTimestamp });
29
+ const expectedCid = await Message.getCid(message);
30
+ const jsonMessage = (await messageStore.get(alice.did, expectedCid));
31
+ const resultCid = await Message.getCid(jsonMessage);
41
32
  expect(resultCid).toBe(expectedCid);
42
- }));
33
+ });
43
34
  // https://github.com/enboxorg/enbox/issues/170
44
- it('#170 - should be able to update (delete and insert new) indexes to an existing message', () => __awaiter(this, void 0, void 0, function* () {
45
- const alice = yield TestDataGenerator.generateDidKeyPersona();
46
- const { message } = yield TestDataGenerator.generateRecordsWrite();
35
+ it('#170 - should be able to update (delete and insert new) indexes to an existing message', async () => {
36
+ const alice = await TestDataGenerator.generateDidKeyPersona();
37
+ const { message } = await TestDataGenerator.generateRecordsWrite();
47
38
  const { messageTimestamp } = message.descriptor;
48
39
  // inserting the message indicating it is the latest base state
49
- yield messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
50
- const { messages: results1 } = yield messageStore.query(alice.did, [{ isLatestBaseState: true }]);
40
+ await messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
41
+ const { messages: results1 } = await messageStore.query(alice.did, [{ isLatestBaseState: true }]);
51
42
  expect(results1.length).toBe(1);
52
- const { messages: results2 } = yield messageStore.query(alice.did, [{ isLatestBaseState: false }]);
43
+ const { messages: results2 } = await messageStore.query(alice.did, [{ isLatestBaseState: false }]);
53
44
  expect(results2.length).toBe(0);
54
45
  // deleting the existing indexes and replacing it indicating it is no longer the latest base state
55
- const cid = yield Message.getCid(message);
56
- yield messageStore.delete(alice.did, cid);
57
- yield messageStore.put(alice.did, message, { isLatestBaseState: false, messageTimestamp });
58
- const { messages: results3 } = yield messageStore.query(alice.did, [{ isLatestBaseState: true }]);
46
+ const cid = await Message.getCid(message);
47
+ await messageStore.delete(alice.did, cid);
48
+ await messageStore.put(alice.did, message, { isLatestBaseState: false, messageTimestamp });
49
+ const { messages: results3 } = await messageStore.query(alice.did, [{ isLatestBaseState: true }]);
59
50
  expect(results3.length).toBe(0);
60
- const { messages: results4 } = yield messageStore.query(alice.did, [{ isLatestBaseState: false }]);
51
+ const { messages: results4 } = await messageStore.query(alice.did, [{ isLatestBaseState: false }]);
61
52
  expect(results4.length).toBe(1);
62
- }));
63
- it('should index properties with characters beyond just letters and digits', () => __awaiter(this, void 0, void 0, function* () {
64
- const alice = yield TestDataGenerator.generateDidKeyPersona();
53
+ });
54
+ it('should index properties with characters beyond just letters and digits', async () => {
55
+ const alice = await TestDataGenerator.generateDidKeyPersona();
65
56
  const schema = 'http://my-awesome-schema/awesomeness_schema';
66
- const { message } = yield TestDataGenerator.generateRecordsWrite({ schema });
57
+ const { message } = await TestDataGenerator.generateRecordsWrite({ schema });
67
58
  const { messageTimestamp } = message.descriptor;
68
- yield messageStore.put(alice.did, message, { schema, messageTimestamp });
69
- const { messages: results } = yield messageStore.query(alice.did, [{ schema }]);
59
+ await messageStore.put(alice.did, message, { schema, messageTimestamp });
60
+ const { messages: results } = await messageStore.query(alice.did, [{ schema }]);
70
61
  expect(results[0].descriptor.schema).toBe(schema);
71
- }));
72
- it('should not store anything if aborted beforehand', () => __awaiter(this, void 0, void 0, function* () {
73
- const alice = yield TestDataGenerator.generateDidKeyPersona();
74
- const { message } = yield TestDataGenerator.generateRecordsWrite();
62
+ });
63
+ it('should not store anything if aborted beforehand', async () => {
64
+ const alice = await TestDataGenerator.generateDidKeyPersona();
65
+ const { message } = await TestDataGenerator.generateRecordsWrite();
75
66
  const { messageTimestamp } = message.descriptor;
76
67
  const controller = new AbortController();
77
68
  controller.signal.throwIfAborted = () => { }; // simulate aborting happening async
78
69
  controller.abort('reason');
79
70
  try {
80
- yield messageStore.put(alice.did, message, { messageTimestamp }, { signal: controller.signal });
71
+ await messageStore.put(alice.did, message, { messageTimestamp }, { signal: controller.signal });
81
72
  }
82
73
  catch (e) {
83
74
  expect(e).toBe('reason');
84
75
  }
85
- const expectedCid = yield Message.getCid(message);
86
- const jsonMessage = yield messageStore.get(alice.did, expectedCid);
76
+ const expectedCid = await Message.getCid(message);
77
+ const jsonMessage = await messageStore.get(alice.did, expectedCid);
87
78
  expect(jsonMessage).toBe(undefined);
88
- }));
89
- it('should not index anything if aborted during', () => __awaiter(this, void 0, void 0, function* () {
90
- const alice = yield TestDataGenerator.generateDidKeyPersona();
79
+ });
80
+ it('should not index anything if aborted during', async () => {
81
+ const alice = await TestDataGenerator.generateDidKeyPersona();
91
82
  const schema = 'http://my-awesome-schema/awesomeness_schema#awesome-1?id=awesome_1';
92
- const { message } = yield TestDataGenerator.generateRecordsWrite({ schema });
83
+ const { message } = await TestDataGenerator.generateRecordsWrite({ schema });
93
84
  const { messageTimestamp } = message.descriptor;
94
85
  const controller = new AbortController();
95
86
  queueMicrotask(() => {
96
87
  controller.abort('reason');
97
88
  });
98
89
  try {
99
- yield messageStore.put(alice.did, message, { schema, messageTimestamp }, { signal: controller.signal });
90
+ await messageStore.put(alice.did, message, { schema, messageTimestamp }, { signal: controller.signal });
100
91
  }
101
92
  catch (e) {
102
93
  expect(e).toBe('reason');
103
94
  }
104
95
  // index should not return the message
105
- const { messages: results } = yield messageStore.query(alice.did, [{ schema }]);
96
+ const { messages: results } = await messageStore.query(alice.did, [{ schema }]);
106
97
  expect(results.length).toBe(0);
107
98
  // check that message doesn't exist
108
- const messageCid = yield Message.getCid(message);
109
- const fetchedMessage = yield messageStore.get(alice.did, messageCid);
99
+ const messageCid = await Message.getCid(message);
100
+ const fetchedMessage = await messageStore.get(alice.did, messageCid);
110
101
  expect(fetchedMessage).toBeUndefined();
111
- }));
112
- it('should not store anything if aborted beforehand', () => __awaiter(this, void 0, void 0, function* () {
113
- const alice = yield TestDataGenerator.generateDidKeyPersona();
114
- const { message } = yield TestDataGenerator.generateRecordsWrite();
102
+ });
103
+ it('should not store anything if aborted beforehand', async () => {
104
+ const alice = await TestDataGenerator.generateDidKeyPersona();
105
+ const { message } = await TestDataGenerator.generateRecordsWrite();
115
106
  const { messageTimestamp } = message.descriptor;
116
107
  const controller = new AbortController();
117
108
  controller.signal.throwIfAborted = () => { }; // simulate aborting happening async
118
109
  controller.abort('reason');
119
110
  try {
120
- yield messageStore.put(alice.did, message, { messageTimestamp }, { signal: controller.signal });
111
+ await messageStore.put(alice.did, message, { messageTimestamp }, { signal: controller.signal });
121
112
  }
122
113
  catch (e) {
123
114
  expect(e).toBe('reason');
124
115
  }
125
- const expectedCid = yield Message.getCid(message);
126
- const jsonMessage = yield messageStore.get(alice.did, expectedCid);
116
+ const expectedCid = await Message.getCid(message);
117
+ const jsonMessage = await messageStore.get(alice.did, expectedCid);
127
118
  expect(jsonMessage).toBe(undefined);
128
- }));
129
- it('should not delete if aborted', () => __awaiter(this, void 0, void 0, function* () {
130
- const alice = yield TestDataGenerator.generateDidKeyPersona();
131
- const { message } = yield TestDataGenerator.generateRecordsWrite();
119
+ });
120
+ it('should not delete if aborted', async () => {
121
+ const alice = await TestDataGenerator.generateDidKeyPersona();
122
+ const { message } = await TestDataGenerator.generateRecordsWrite();
132
123
  const { messageTimestamp } = message.descriptor;
133
- yield messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
134
- const messageCid = yield Message.getCid(message);
135
- const resultsAlice1 = yield messageStore.get(alice.did, messageCid);
124
+ await messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
125
+ const messageCid = await Message.getCid(message);
126
+ const resultsAlice1 = await messageStore.get(alice.did, messageCid);
136
127
  expect(resultsAlice1.recordId).toBe(message.recordId);
137
128
  const controller = new AbortController();
138
129
  controller.signal.throwIfAborted = () => { }; // simulate aborting happening async
139
130
  controller.abort('reason');
140
131
  // aborted delete
141
132
  const deletePromise = messageStore.delete(alice.did, messageCid, { signal: controller.signal });
142
- yield expect(deletePromise).rejects.toThrow('reason');
143
- }));
144
- it('should not delete the message of another tenant', () => __awaiter(this, void 0, void 0, function* () {
145
- const alice = yield TestDataGenerator.generateDidKeyPersona();
146
- const bob = yield TestDataGenerator.generateDidKeyPersona();
147
- const { message } = yield TestDataGenerator.generateRecordsWrite();
133
+ await expect(deletePromise).rejects.toThrow('reason');
134
+ });
135
+ it('should not delete the message of another tenant', async () => {
136
+ const alice = await TestDataGenerator.generateDidKeyPersona();
137
+ const bob = await TestDataGenerator.generateDidKeyPersona();
138
+ const { message } = await TestDataGenerator.generateRecordsWrite();
148
139
  const { messageTimestamp } = message.descriptor;
149
- yield messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
150
- yield messageStore.put(bob.did, message, { isLatestBaseState: true, messageTimestamp });
151
- const messageCid = yield Message.getCid(message);
152
- const resultsAlice1 = yield messageStore.get(alice.did, messageCid);
140
+ await messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
141
+ await messageStore.put(bob.did, message, { isLatestBaseState: true, messageTimestamp });
142
+ const messageCid = await Message.getCid(message);
143
+ const resultsAlice1 = await messageStore.get(alice.did, messageCid);
153
144
  expect(resultsAlice1.recordId).toBe(message.recordId);
154
- const resultsBob1 = yield messageStore.get(bob.did, messageCid);
145
+ const resultsBob1 = await messageStore.get(bob.did, messageCid);
155
146
  expect(resultsBob1.recordId).toBe(message.recordId);
156
147
  // bob deletes message
157
- yield messageStore.delete(bob.did, messageCid);
158
- const resultsBob2 = yield messageStore.get(bob.did, messageCid);
148
+ await messageStore.delete(bob.did, messageCid);
149
+ const resultsBob2 = await messageStore.get(bob.did, messageCid);
159
150
  expect(resultsBob2).toBeUndefined();
160
151
  //expect alice to retain the message
161
- const resultsAlice2 = yield messageStore.get(alice.did, messageCid);
152
+ const resultsAlice2 = await messageStore.get(alice.did, messageCid);
162
153
  expect(resultsAlice2.recordId).toBe(message.recordId);
163
- }));
164
- it('should not clear the MessageStore index of another tenant', () => __awaiter(this, void 0, void 0, function* () {
165
- const alice = yield TestDataGenerator.generateDidKeyPersona();
166
- const bob = yield TestDataGenerator.generateDidKeyPersona();
167
- const { message } = yield TestDataGenerator.generateRecordsWrite();
154
+ });
155
+ it('should not clear the MessageStore index of another tenant', async () => {
156
+ const alice = await TestDataGenerator.generateDidKeyPersona();
157
+ const bob = await TestDataGenerator.generateDidKeyPersona();
158
+ const { message } = await TestDataGenerator.generateRecordsWrite();
168
159
  const { messageTimestamp } = message.descriptor;
169
- yield messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
170
- yield messageStore.put(bob.did, message, { isLatestBaseState: true, messageTimestamp });
171
- const messageCid = yield Message.getCid(message);
172
- const resultsAlice1 = yield messageStore.query(alice.did, [{ isLatestBaseState: true }]);
160
+ await messageStore.put(alice.did, message, { isLatestBaseState: true, messageTimestamp });
161
+ await messageStore.put(bob.did, message, { isLatestBaseState: true, messageTimestamp });
162
+ const messageCid = await Message.getCid(message);
163
+ const resultsAlice1 = await messageStore.query(alice.did, [{ isLatestBaseState: true }]);
173
164
  expect(resultsAlice1.messages.length).toBe(1);
174
- const resultsBob1 = yield messageStore.query(bob.did, [{ isLatestBaseState: true }]);
165
+ const resultsBob1 = await messageStore.query(bob.did, [{ isLatestBaseState: true }]);
175
166
  expect(resultsBob1.messages.length).toBe(1);
176
167
  // bob deletes message
177
- yield messageStore.delete(bob.did, messageCid);
178
- const resultsBob2 = yield messageStore.query(bob.did, [{ isLatestBaseState: true }]);
168
+ await messageStore.delete(bob.did, messageCid);
169
+ const resultsBob2 = await messageStore.query(bob.did, [{ isLatestBaseState: true }]);
179
170
  expect(resultsBob2.messages.length).toBe(0);
180
171
  //expect alice to retain the message
181
- const resultsAlice2 = yield messageStore.query(alice.did, [{ isLatestBaseState: true }]);
172
+ const resultsAlice2 = await messageStore.query(alice.did, [{ isLatestBaseState: true }]);
182
173
  expect(resultsAlice2.messages.length).toBe(1);
183
- }));
174
+ });
184
175
  });
185
176
  describe('sort and pagination', () => {
186
177
  // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
187
178
  // so that different test suites can reuse the same backend store for testing
188
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
179
+ beforeAll(async () => {
189
180
  const stores = TestStores.get();
190
181
  messageStore = stores.messageStore;
191
- yield messageStore.open();
192
- }));
193
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
194
- yield messageStore.clear(); // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
195
- }));
196
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
197
- yield messageStore.close();
198
- }));
182
+ await messageStore.open();
183
+ });
184
+ beforeEach(async () => {
185
+ await messageStore.clear(); // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
186
+ });
187
+ afterAll(async () => {
188
+ await messageStore.close();
189
+ });
199
190
  describe('sorting', () => {
200
- it('should sort on messageTimestamp Ascending if no sort is specified', () => __awaiter(this, void 0, void 0, function* () {
201
- const alice = yield TestDataGenerator.generateDidKeyPersona();
202
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
191
+ it('should sort on messageTimestamp Ascending if no sort is specified', async () => {
192
+ const alice = await TestDataGenerator.generateDidKeyPersona();
193
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
203
194
  messageTimestamp: TestDataGenerator.randomTimestamp()
204
195
  })));
205
196
  for (const message of messages) {
206
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
197
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
207
198
  }
208
- const { messages: messageQuery } = yield messageStore.query(alice.did, [{}]);
199
+ const { messages: messageQuery } = await messageStore.query(alice.did, [{}]);
209
200
  expect(messageQuery.length).toBe(messages.length);
210
201
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(a.message.descriptor.messageTimestamp, b.message.descriptor.messageTimestamp));
211
202
  for (let i = 0; i < sortedRecords.length; i++) {
212
203
  expect(sortedRecords[i].message.descriptor.messageTimestamp).toBe(messageQuery[i].descriptor.messageTimestamp);
213
204
  }
214
- }));
215
- it('should sort on messageTimestamp Ascending', () => __awaiter(this, void 0, void 0, function* () {
216
- const alice = yield TestDataGenerator.generateDidKeyPersona();
217
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
205
+ });
206
+ it('should sort on messageTimestamp Ascending', async () => {
207
+ const alice = await TestDataGenerator.generateDidKeyPersona();
208
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
218
209
  messageTimestamp: TestDataGenerator.randomTimestamp()
219
210
  })));
220
211
  for (const message of messages) {
221
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
212
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
222
213
  }
223
- const { messages: messageQuery } = yield messageStore.query(alice.did, [{}], { messageTimestamp: SortDirection.Ascending });
214
+ const { messages: messageQuery } = await messageStore.query(alice.did, [{}], { messageTimestamp: SortDirection.Ascending });
224
215
  expect(messageQuery.length).toBe(messages.length);
225
216
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(a.message.descriptor.messageTimestamp, b.message.descriptor.messageTimestamp));
226
217
  for (let i = 0; i < messages.length; i++) {
227
218
  expect(sortedRecords[i].message.descriptor.messageTimestamp).toBe(messageQuery[i].descriptor.messageTimestamp);
228
219
  }
229
- }));
230
- it('should sort on dateCreated Ascending', () => __awaiter(this, void 0, void 0, function* () {
231
- const alice = yield TestDataGenerator.generateDidKeyPersona();
232
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
220
+ });
221
+ it('should sort on dateCreated Ascending', async () => {
222
+ const alice = await TestDataGenerator.generateDidKeyPersona();
223
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
233
224
  dateCreated: TestDataGenerator.randomTimestamp(),
234
225
  })));
235
226
  for (const message of messages) {
236
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
227
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
237
228
  }
238
- const { messages: messageQuery } = yield messageStore.query(alice.did, [{}], { dateCreated: SortDirection.Ascending });
229
+ const { messages: messageQuery } = await messageStore.query(alice.did, [{}], { dateCreated: SortDirection.Ascending });
239
230
  expect(messageQuery.length).toBe(messages.length);
240
231
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(a.message.descriptor.dateCreated, b.message.descriptor.dateCreated));
241
232
  for (let i = 0; i < messages.length; i++) {
242
- expect(yield Message.getCid(sortedRecords[i].message)).toBe(yield Message.getCid(messageQuery[i]));
233
+ expect(await Message.getCid(sortedRecords[i].message)).toBe(await Message.getCid(messageQuery[i]));
243
234
  }
244
- }));
245
- it('should sort on dateCreated Descending', () => __awaiter(this, void 0, void 0, function* () {
246
- const alice = yield TestDataGenerator.generateDidKeyPersona();
247
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
235
+ });
236
+ it('should sort on dateCreated Descending', async () => {
237
+ const alice = await TestDataGenerator.generateDidKeyPersona();
238
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
248
239
  dateCreated: TestDataGenerator.randomTimestamp(),
249
240
  })));
250
241
  for (const message of messages) {
251
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
242
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
252
243
  }
253
- const { messages: messageQuery } = yield messageStore.query(alice.did, [{}], { dateCreated: SortDirection.Descending });
244
+ const { messages: messageQuery } = await messageStore.query(alice.did, [{}], { dateCreated: SortDirection.Descending });
254
245
  expect(messageQuery.length).toBe(messages.length);
255
246
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(b.message.descriptor.dateCreated, a.message.descriptor.dateCreated));
256
247
  for (let i = 0; i < messages.length; i++) {
257
- expect(yield Message.getCid(sortedRecords[i].message)).toBe(yield Message.getCid(messageQuery[i]));
248
+ expect(await Message.getCid(sortedRecords[i].message)).toBe(await Message.getCid(messageQuery[i]));
258
249
  }
259
- }));
260
- it('should sort on datePublished Ascending', () => __awaiter(this, void 0, void 0, function* () {
261
- const alice = yield TestDataGenerator.generateDidKeyPersona();
262
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
250
+ });
251
+ it('should sort on datePublished Ascending', async () => {
252
+ const alice = await TestDataGenerator.generateDidKeyPersona();
253
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
263
254
  published: true,
264
255
  datePublished: TestDataGenerator.randomTimestamp()
265
256
  })));
266
257
  for (const message of messages) {
267
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
258
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
268
259
  }
269
- const { messages: messageQuery } = yield messageStore.query(alice.did, [{}], { datePublished: SortDirection.Ascending });
260
+ const { messages: messageQuery } = await messageStore.query(alice.did, [{}], { datePublished: SortDirection.Ascending });
270
261
  expect(messageQuery.length).toBe(messages.length);
271
262
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(a.message.descriptor.datePublished, b.message.descriptor.datePublished));
272
263
  for (let i = 0; i < messages.length; i++) {
273
- expect(yield Message.getCid(sortedRecords[i].message)).toBe(yield Message.getCid(messageQuery[i]));
264
+ expect(await Message.getCid(sortedRecords[i].message)).toBe(await Message.getCid(messageQuery[i]));
274
265
  }
275
- }));
276
- it('should sort on datePublished Descending', () => __awaiter(this, void 0, void 0, function* () {
277
- const alice = yield TestDataGenerator.generateDidKeyPersona();
278
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
266
+ });
267
+ it('should sort on datePublished Descending', async () => {
268
+ const alice = await TestDataGenerator.generateDidKeyPersona();
269
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
279
270
  published: true,
280
271
  datePublished: TestDataGenerator.randomTimestamp()
281
272
  })));
282
273
  for (const message of messages) {
283
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
274
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
284
275
  }
285
- const { messages: messageQuery } = yield messageStore.query(alice.did, [{}], { datePublished: SortDirection.Descending });
276
+ const { messages: messageQuery } = await messageStore.query(alice.did, [{}], { datePublished: SortDirection.Descending });
286
277
  expect(messageQuery.length).toBe(messages.length);
287
278
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(b.message.descriptor.datePublished, a.message.descriptor.datePublished));
288
279
  for (let i = 0; i < messages.length; i++) {
289
- expect(yield Message.getCid(sortedRecords[i].message)).toBe(yield Message.getCid(messageQuery[i]));
280
+ expect(await Message.getCid(sortedRecords[i].message)).toBe(await Message.getCid(messageQuery[i]));
290
281
  }
291
- }));
282
+ });
292
283
  });
293
284
  describe('pagination', () => {
294
- it('should return all records if no limit is specified', () => __awaiter(this, void 0, void 0, function* () {
295
- const alice = yield TestDataGenerator.generateDidKeyPersona();
296
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
285
+ it('should return all records if no limit is specified', async () => {
286
+ const alice = await TestDataGenerator.generateDidKeyPersona();
287
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
297
288
  messageTimestamp: TestDataGenerator.randomTimestamp()
298
289
  })));
299
290
  for (const message of messages) {
300
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
291
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
301
292
  }
302
- const { messages: limitQuery } = yield messageStore.query(alice.did, [{}]);
293
+ const { messages: limitQuery } = await messageStore.query(alice.did, [{}]);
303
294
  expect(limitQuery.length).toBe(messages.length);
304
- }));
305
- it('should limit records', () => __awaiter(this, void 0, void 0, function* () {
306
- const alice = yield TestDataGenerator.generateDidKeyPersona();
307
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
295
+ });
296
+ it('should limit records', async () => {
297
+ const alice = await TestDataGenerator.generateDidKeyPersona();
298
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
308
299
  messageTimestamp: TestDataGenerator.randomTimestamp()
309
300
  })));
310
301
  for (const message of messages) {
311
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
302
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
312
303
  }
313
304
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(a.message.descriptor.messageTimestamp, b.message.descriptor.messageTimestamp));
314
305
  const limit = 5;
315
- const { messages: limitQuery } = yield messageStore.query(alice.did, [{}], {}, { limit });
306
+ const { messages: limitQuery } = await messageStore.query(alice.did, [{}], {}, { limit });
316
307
  expect(limitQuery.length).toBe(limit);
317
308
  for (let i = 0; i < limitQuery.length; i++) {
318
- expect(yield Message.getCid(sortedRecords[i].message)).toBe(yield Message.getCid(limitQuery[i]));
309
+ expect(await Message.getCid(sortedRecords[i].message)).toBe(await Message.getCid(limitQuery[i]));
319
310
  }
320
- }));
321
- it('should only return a cursor if there are additional results', () => __awaiter(this, void 0, void 0, function* () {
322
- const alice = yield TestDataGenerator.generateDidKeyPersona();
323
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
311
+ });
312
+ it('should only return a cursor if there are additional results', async () => {
313
+ const alice = await TestDataGenerator.generateDidKeyPersona();
314
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
324
315
  messageTimestamp: TestDataGenerator.randomTimestamp()
325
316
  })));
326
317
  for (const message of messages) {
327
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
318
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
328
319
  }
329
320
  // get all of the records
330
- const allRecords = yield messageStore.query(alice.did, [{}], {}, { limit: 10 });
321
+ const allRecords = await messageStore.query(alice.did, [{}], {}, { limit: 10 });
331
322
  expect(allRecords.cursor).toBeUndefined();
332
323
  // get only partial records
333
- const partialRecords = yield messageStore.query(alice.did, [{}], {}, { limit: 5 });
324
+ const partialRecords = await messageStore.query(alice.did, [{}], {}, { limit: 5 });
334
325
  expect(partialRecords.cursor).toBeDefined();
335
- }));
336
- it('should return all records from the cursor onwards when no limit is provided', () => __awaiter(this, void 0, void 0, function* () {
337
- const alice = yield TestDataGenerator.generateDidKeyPersona();
338
- const messages = yield Promise.all(Array(13).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
326
+ });
327
+ it('should return all records from the cursor onwards when no limit is provided', async () => {
328
+ const alice = await TestDataGenerator.generateDidKeyPersona();
329
+ const messages = await Promise.all(Array(13).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
339
330
  messageTimestamp: TestDataGenerator.randomTimestamp()
340
331
  })));
341
332
  for (const message of messages) {
342
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
333
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
343
334
  }
344
335
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(a.message.descriptor.messageTimestamp, b.message.descriptor.messageTimestamp));
345
336
  // we make an initial request to get one record and a cursor.
346
- const { cursor } = yield messageStore.query(alice.did, [{}], {}, { limit: 1 });
347
- const { messages: limitQuery } = yield messageStore.query(alice.did, [{}], {}, { cursor });
337
+ const { cursor } = await messageStore.query(alice.did, [{}], {}, { limit: 1 });
338
+ const { messages: limitQuery } = await messageStore.query(alice.did, [{}], {}, { cursor });
348
339
  expect(limitQuery.length).toBe(sortedRecords.slice(1).length);
349
340
  for (let i = 0; i < limitQuery.length; i++) {
350
341
  const offsetIndex = i + 1; // offset for the initial request item
351
- expect(yield Message.getCid(sortedRecords[offsetIndex].message)).toBe(yield Message.getCid(limitQuery[i]));
342
+ expect(await Message.getCid(sortedRecords[offsetIndex].message)).toBe(await Message.getCid(limitQuery[i]));
352
343
  }
353
- }));
354
- it('should limit records when a cursor and limit are provided', () => __awaiter(this, void 0, void 0, function* () {
355
- const alice = yield TestDataGenerator.generateDidKeyPersona();
356
- const messages = yield Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
344
+ });
345
+ it('should limit records when a cursor and limit are provided', async () => {
346
+ const alice = await TestDataGenerator.generateDidKeyPersona();
347
+ const messages = await Promise.all(Array(10).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
357
348
  messageTimestamp: TestDataGenerator.randomTimestamp()
358
349
  })));
359
350
  for (const message of messages) {
360
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
351
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
361
352
  }
362
353
  const sortedRecords = messages.sort((a, b) => lexicographicalCompare(a.message.descriptor.messageTimestamp, b.message.descriptor.messageTimestamp));
363
354
  // we make an initial request to get one record and a cursor.
364
- const { cursor } = yield messageStore.query(alice.did, [{}], {}, { limit: 1 });
355
+ const { cursor } = await messageStore.query(alice.did, [{}], {}, { limit: 1 });
365
356
  const limit = 3;
366
- const { messages: limitQuery } = yield messageStore.query(alice.did, [{}], {}, { cursor, limit });
357
+ const { messages: limitQuery } = await messageStore.query(alice.did, [{}], {}, { cursor, limit });
367
358
  expect(limitQuery.length).toBe(limit);
368
359
  for (let i = 0; i < limitQuery.length; i++) {
369
360
  const offsetIndex = i + 1; // offset for the initial request item
370
- expect(yield Message.getCid(sortedRecords[offsetIndex].message)).toBe(yield Message.getCid(limitQuery[i]));
361
+ expect(await Message.getCid(sortedRecords[offsetIndex].message)).toBe(await Message.getCid(limitQuery[i]));
371
362
  }
372
- }));
373
- it('should paginate through all of the records', () => __awaiter(this, void 0, void 0, function* () {
374
- const alice = yield TestDataGenerator.generateDidKeyPersona();
375
- const messages = yield Promise.all(Array(23).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
363
+ });
364
+ it('should paginate through all of the records', async () => {
365
+ const alice = await TestDataGenerator.generateDidKeyPersona();
366
+ const messages = await Promise.all(Array(23).fill({}).map((_) => TestDataGenerator.generateRecordsWrite({
376
367
  messageTimestamp: TestDataGenerator.randomTimestamp()
377
368
  })));
378
369
  for (const message of messages) {
379
- yield messageStore.put(alice.did, message.message, yield message.recordsWrite.constructIndexes(true));
370
+ await messageStore.put(alice.did, message.message, await message.recordsWrite.constructIndexes(true));
380
371
  }
381
372
  const limit = 6;
382
373
  const results = [];
383
374
  let cursor;
384
375
  while (true) {
385
- const { messages: limitQuery, cursor: queryCursor } = yield messageStore.query(alice.did, [{}], {}, { cursor, limit });
376
+ const { messages: limitQuery, cursor: queryCursor } = await messageStore.query(alice.did, [{}], {}, { cursor, limit });
386
377
  expect(limitQuery.length).toBeLessThanOrEqual(limit);
387
378
  results.push(...limitQuery);
388
379
  cursor = queryCursor;
@@ -391,87 +382,87 @@ export function testMessageStore() {
391
382
  }
392
383
  }
393
384
  expect(results.length).toBe(messages.length);
394
- const messageMessageIds = yield Promise.all(messages.map(m => Message.getCid(m.message)));
395
- const resultMessageIds = yield Promise.all(results.map(m => Message.getCid(m)));
385
+ const messageMessageIds = await Promise.all(messages.map(m => Message.getCid(m.message)));
386
+ const resultMessageIds = await Promise.all(results.map(m => Message.getCid(m)));
396
387
  for (const recordId of messageMessageIds) {
397
388
  expect(resultMessageIds.includes(recordId)).toBe(true);
398
389
  }
399
- }));
390
+ });
400
391
  });
401
392
  });
402
393
  describe('count', () => {
403
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
394
+ beforeAll(async () => {
404
395
  const stores = TestStores.get();
405
396
  messageStore = stores.messageStore;
406
- yield messageStore.open();
407
- }));
408
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
409
- yield messageStore.clear();
410
- }));
411
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
412
- yield messageStore.close();
413
- }));
414
- it('should return 0 when no messages match', () => __awaiter(this, void 0, void 0, function* () {
415
- const alice = yield TestDataGenerator.generateDidKeyPersona();
416
- const count = yield messageStore.count(alice.did, [{ schema: 'nonexistent' }]);
397
+ await messageStore.open();
398
+ });
399
+ beforeEach(async () => {
400
+ await messageStore.clear();
401
+ });
402
+ afterAll(async () => {
403
+ await messageStore.close();
404
+ });
405
+ it('should return 0 when no messages match', async () => {
406
+ const alice = await TestDataGenerator.generateDidKeyPersona();
407
+ const count = await messageStore.count(alice.did, [{ schema: 'nonexistent' }]);
417
408
  expect(count).toBe(0);
418
- }));
419
- it('should count all matching messages', () => __awaiter(this, void 0, void 0, function* () {
420
- const alice = yield TestDataGenerator.generateDidKeyPersona();
409
+ });
410
+ it('should count all matching messages', async () => {
411
+ const alice = await TestDataGenerator.generateDidKeyPersona();
421
412
  const schema = 'https://schema.org/CountTest';
422
413
  for (let i = 0; i < 10; i++) {
423
- const { message, recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ schema });
424
- yield messageStore.put(alice.did, message, yield recordsWrite.constructIndexes(true));
414
+ const { message, recordsWrite } = await TestDataGenerator.generateRecordsWrite({ schema });
415
+ await messageStore.put(alice.did, message, await recordsWrite.constructIndexes(true));
425
416
  }
426
417
  // also insert messages with a different schema
427
418
  for (let i = 0; i < 5; i++) {
428
- const { message, recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ schema: 'https://schema.org/Other' });
429
- yield messageStore.put(alice.did, message, yield recordsWrite.constructIndexes(true));
419
+ const { message, recordsWrite } = await TestDataGenerator.generateRecordsWrite({ schema: 'https://schema.org/Other' });
420
+ await messageStore.put(alice.did, message, await recordsWrite.constructIndexes(true));
430
421
  }
431
- const count = yield messageStore.count(alice.did, [{ schema }]);
422
+ const count = await messageStore.count(alice.did, [{ schema }]);
432
423
  expect(count).toBe(10);
433
- }));
434
- it('should count all messages when filter is empty', () => __awaiter(this, void 0, void 0, function* () {
435
- const alice = yield TestDataGenerator.generateDidKeyPersona();
424
+ });
425
+ it('should count all messages when filter is empty', async () => {
426
+ const alice = await TestDataGenerator.generateDidKeyPersona();
436
427
  for (let i = 0; i < 7; i++) {
437
- const { message, recordsWrite } = yield TestDataGenerator.generateRecordsWrite();
438
- yield messageStore.put(alice.did, message, yield recordsWrite.constructIndexes(true));
428
+ const { message, recordsWrite } = await TestDataGenerator.generateRecordsWrite();
429
+ await messageStore.put(alice.did, message, await recordsWrite.constructIndexes(true));
439
430
  }
440
- const count = yield messageStore.count(alice.did, [{}]);
431
+ const count = await messageStore.count(alice.did, [{}]);
441
432
  expect(count).toBe(7);
442
- }));
443
- it('should not count messages from another tenant', () => __awaiter(this, void 0, void 0, function* () {
444
- const alice = yield TestDataGenerator.generateDidKeyPersona();
445
- const bob = yield TestDataGenerator.generateDidKeyPersona();
433
+ });
434
+ it('should not count messages from another tenant', async () => {
435
+ const alice = await TestDataGenerator.generateDidKeyPersona();
436
+ const bob = await TestDataGenerator.generateDidKeyPersona();
446
437
  const schema = 'https://schema.org/TenantTest';
447
438
  for (let i = 0; i < 3; i++) {
448
- const { message, recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ schema });
449
- yield messageStore.put(alice.did, message, yield recordsWrite.constructIndexes(true));
439
+ const { message, recordsWrite } = await TestDataGenerator.generateRecordsWrite({ schema });
440
+ await messageStore.put(alice.did, message, await recordsWrite.constructIndexes(true));
450
441
  }
451
442
  for (let i = 0; i < 5; i++) {
452
- const { message, recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ schema });
453
- yield messageStore.put(bob.did, message, yield recordsWrite.constructIndexes(true));
443
+ const { message, recordsWrite } = await TestDataGenerator.generateRecordsWrite({ schema });
444
+ await messageStore.put(bob.did, message, await recordsWrite.constructIndexes(true));
454
445
  }
455
- const aliceCount = yield messageStore.count(alice.did, [{ schema }]);
446
+ const aliceCount = await messageStore.count(alice.did, [{ schema }]);
456
447
  expect(aliceCount).toBe(3);
457
- const bobCount = yield messageStore.count(bob.did, [{ schema }]);
448
+ const bobCount = await messageStore.count(bob.did, [{ schema }]);
458
449
  expect(bobCount).toBe(5);
459
- }));
460
- it('should count with OR (multi-filter) queries', () => __awaiter(this, void 0, void 0, function* () {
461
- const alice = yield TestDataGenerator.generateDidKeyPersona();
450
+ });
451
+ it('should count with OR (multi-filter) queries', async () => {
452
+ const alice = await TestDataGenerator.generateDidKeyPersona();
462
453
  const schema1 = 'https://schema.org/Type1';
463
454
  const schema2 = 'https://schema.org/Type2';
464
455
  for (let i = 0; i < 4; i++) {
465
- const { message, recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ schema: schema1 });
466
- yield messageStore.put(alice.did, message, yield recordsWrite.constructIndexes(true));
456
+ const { message, recordsWrite } = await TestDataGenerator.generateRecordsWrite({ schema: schema1 });
457
+ await messageStore.put(alice.did, message, await recordsWrite.constructIndexes(true));
467
458
  }
468
459
  for (let i = 0; i < 3; i++) {
469
- const { message, recordsWrite } = yield TestDataGenerator.generateRecordsWrite({ schema: schema2 });
470
- yield messageStore.put(alice.did, message, yield recordsWrite.constructIndexes(true));
460
+ const { message, recordsWrite } = await TestDataGenerator.generateRecordsWrite({ schema: schema2 });
461
+ await messageStore.put(alice.did, message, await recordsWrite.constructIndexes(true));
471
462
  }
472
- const count = yield messageStore.count(alice.did, [{ schema: schema1 }, { schema: schema2 }]);
463
+ const count = await messageStore.count(alice.did, [{ schema: schema1 }, { schema: schema2 }]);
473
464
  expect(count).toBe(7);
474
- }));
465
+ });
475
466
  });
476
467
  });
477
468
  }