@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,19 +1,9 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import sinon from 'sinon';
11
2
  import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
12
- import { DataStoreLevel, EventEmitterStream, MessageStoreLevel, ResumableTaskStoreLevel, StateIndexLevel } from '../src/index.js';
3
+ import { DataStoreLevel, EventEmitterEventLog, MessageStoreLevel, ResumableTaskStoreLevel, StateIndexLevel } from '../src/index.js';
13
4
  import { Dwn } from '../src/dwn.js';
14
- import { Message } from '../src/core/message.js';
15
5
  import { TestDataGenerator } from './utils/test-data-generator.js';
16
- import { TestEventStream } from './test-event-stream.js';
6
+ import { TestEventLog } from './test-event-stream.js';
17
7
  import { TestStores } from './test-stores.js';
18
8
  import { DidKey, UniversalResolver } from '@enbox/dids';
19
9
  export function testDwnClass() {
@@ -23,133 +13,119 @@ export function testDwnClass() {
23
13
  let dataStore;
24
14
  let resumableTaskStore;
25
15
  let stateIndex;
26
- let eventStream;
16
+ let eventLog;
27
17
  let dwn;
28
18
  // important to follow the `beforeAll` and `afterAll` pattern to initialize and clean the stores in tests
29
19
  // so that different test suites can reuse the same backend store for testing
30
- beforeAll(() => __awaiter(this, void 0, void 0, function* () {
20
+ beforeAll(async () => {
31
21
  didResolver = new UniversalResolver({ didResolvers: [DidKey] });
32
22
  const stores = TestStores.get();
33
23
  messageStore = stores.messageStore;
34
24
  dataStore = stores.dataStore;
35
25
  resumableTaskStore = stores.resumableTaskStore;
36
26
  stateIndex = stores.stateIndex;
37
- eventStream = TestEventStream.get();
38
- dwn = yield Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
39
- }));
40
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
27
+ eventLog = TestEventLog.get();
28
+ dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventLog, resumableTaskStore });
29
+ });
30
+ beforeEach(async () => {
41
31
  sinon.restore(); // wipe all stubs/spies/mocks/fakes from previous test
42
- 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
43
- }));
44
- afterAll(() => __awaiter(this, void 0, void 0, function* () {
32
+ 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
33
+ });
34
+ afterAll(async () => {
45
35
  sinon.restore();
46
- yield dwn.close();
47
- }));
36
+ await dwn.close();
37
+ });
48
38
  describe('processMessage()', () => {
49
- it('should process RecordsWrite message signed by a `did:key` DID', () => __awaiter(this, void 0, void 0, function* () {
50
- // generate a `did:key` DID
51
- const alice = yield TestDataGenerator.generateDidKeyPersona();
52
- const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({
53
- author: alice,
54
- });
55
- const reply = yield dwn.processMessage(alice.did, message, { dataStream });
39
+ it('should process RecordsWrite message signed by a `did:key` DID', async () => {
40
+ const alice = await TestDataGenerator.generateDidKeyPersona();
41
+ await TestDataGenerator.installDefaultTestProtocol(dwn, alice);
42
+ const { message, dataStream } = await TestDataGenerator.generateRecordsWrite({ author: alice });
43
+ const reply = await dwn.processMessage(alice.did, message, { dataStream });
56
44
  expect(reply.status.code).toBe(202);
57
- }));
58
- it('should process RecordsQuery message', () => __awaiter(this, void 0, void 0, function* () {
59
- const alice = yield TestDataGenerator.generateDidKeyPersona();
60
- const { author, message } = yield TestDataGenerator.generateRecordsQuery({ author: alice });
61
- const tenant = author.did;
62
- const reply = yield dwn.processMessage(tenant, message);
45
+ });
46
+ it('should process RecordsQuery message', async () => {
47
+ const alice = await TestDataGenerator.generateDidKeyPersona();
48
+ const { message } = await TestDataGenerator.generateRecordsQuery({ author: alice });
49
+ const reply = await dwn.processMessage(alice.did, message);
63
50
  expect(reply.status.code).toBe(200);
64
- expect(reply.entries).toEqual([]);
65
- }));
66
- it('#191 - regression - should run JSON schema validation', () => __awaiter(this, void 0, void 0, function* () {
67
- const invalidMessage = {
68
- descriptor: {
69
- interface: 'Records',
70
- method: 'Read',
71
- messageTimestamp: '2023-07-25T10:20:30.123456Z'
72
- },
73
- authorization: {}
74
- };
75
- const validateJsonSchemaSpy = sinon.spy(Message, 'validateJsonSchema');
76
- const alice = yield TestDataGenerator.generateDidKeyPersona();
77
- const reply = yield dwn.processMessage(alice.did, invalidMessage);
78
- sinon.assert.calledOnce(validateJsonSchemaSpy);
51
+ });
52
+ it('should process RecordsDelete message', async () => {
53
+ const alice = await TestDataGenerator.generateDidKeyPersona();
54
+ const { message } = await TestDataGenerator.generateRecordsDelete({ author: alice });
55
+ const reply = await dwn.processMessage(alice.did, message);
56
+ expect(reply.status.code).toBe(404);
57
+ });
58
+ it('should process ProtocolsConfigure message', async () => {
59
+ const alice = await TestDataGenerator.generateDidKeyPersona();
60
+ const { message } = await TestDataGenerator.generateProtocolsConfigure({ author: alice });
61
+ const reply = await dwn.processMessage(alice.did, message);
62
+ expect(reply.status.code).toBe(202);
63
+ });
64
+ it('should process ProtocolsQuery message', async () => {
65
+ const alice = await TestDataGenerator.generateDidKeyPersona();
66
+ const { message } = await TestDataGenerator.generateProtocolsQuery({ author: alice });
67
+ const reply = await dwn.processMessage(alice.did, message);
68
+ expect(reply.status.code).toBe(200);
69
+ });
70
+ it('should return a 400 if message is invalid', async () => {
71
+ const reply = await dwn.processMessage('did:example:alice', {});
79
72
  expect(reply.status.code).toBe(400);
80
- expect(reply.status.detail).toContain(`must have required property 'filter'`);
81
- }));
82
- it('should throw 400 if given no interface or method found in message', () => __awaiter(this, void 0, void 0, function* () {
83
- const alice = yield TestDataGenerator.generateDidKeyPersona();
84
- const reply1 = yield dwn.processMessage(alice.did, undefined); // missing message entirely, thus missing both `interface` and `method`
85
- expect(reply1.status.code).toBe(400);
86
- expect(reply1.status.detail).toContain('Both interface and method must be present');
87
- const reply2 = yield dwn.processMessage(alice.did, { descriptor: { method: 'anyValue' } }); // missing `interface`
88
- expect(reply2.status.code).toBe(400);
89
- expect(reply2.status.detail).toContain('Both interface and method must be present');
90
- const reply3 = yield dwn.processMessage(alice.did, { descriptor: { interface: 'anyValue' } }); // missing `method`
91
- expect(reply3.status.code).toBe(400);
92
- expect(reply3.status.detail).toContain('Both interface and method must be present');
93
- }));
94
- it('should throw 401 if message is targeted at a non active tenant', () => __awaiter(this, void 0, void 0, function* () {
73
+ });
74
+ it('should return a 401 if tenant gate blocks the message', async () => {
95
75
  // tenant gate that blocks everyone
96
76
  const blockAllTenantGate = {
97
- isActiveTenant() {
98
- return __awaiter(this, void 0, void 0, function* () {
99
- return { isActiveTenant: false };
100
- });
77
+ async isActiveTenant() {
78
+ return { isActiveTenant: false };
101
79
  }
102
80
  };
103
81
  const messageStoreStub = sinon.createStubInstance(MessageStoreLevel);
104
82
  const dataStoreStub = sinon.createStubInstance(DataStoreLevel);
105
83
  const resumableTaskStoreStub = sinon.createStubInstance(ResumableTaskStoreLevel);
106
84
  const stateIndexStub = sinon.createStubInstance(StateIndexLevel);
107
- const eventStreamStub = sinon.createStubInstance(EventEmitterStream);
108
- const dwnWithConfig = yield Dwn.create({
85
+ const eventLogStub = sinon.createStubInstance(EventEmitterEventLog);
86
+ const dwnWithConfig = await Dwn.create({
109
87
  tenantGate: blockAllTenantGate,
110
88
  messageStore: messageStoreStub,
111
89
  dataStore: dataStoreStub,
112
90
  resumableTaskStore: resumableTaskStoreStub,
113
91
  stateIndex: stateIndexStub,
114
- eventStream: eventStreamStub
92
+ eventLog: eventLogStub
115
93
  });
116
- const alice = yield TestDataGenerator.generateDidKeyPersona();
117
- const { author, message } = yield TestDataGenerator.generateRecordsQuery({ author: alice });
94
+ const alice = await TestDataGenerator.generateDidKeyPersona();
95
+ const { author, message } = await TestDataGenerator.generateRecordsQuery({ author: alice });
118
96
  const tenant = author.did;
119
- const reply = yield dwnWithConfig.processMessage(tenant, message);
97
+ const reply = await dwnWithConfig.processMessage(tenant, message);
120
98
  expect(reply.status.code).toBe(401);
121
99
  expect(reply.status.detail).toContain('not an active tenant');
122
- }));
123
- it('should throw 401 with custom message from tenant gate if provided', () => __awaiter(this, void 0, void 0, function* () {
100
+ });
101
+ it('should throw 401 with custom message from tenant gate if provided', async () => {
124
102
  // tenant gate that blocks everyone with a custom message
125
103
  const customMessage = 'a custom not-an-active-tenant message';
126
104
  const blockAllTenantGate = {
127
- isActiveTenant() {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- return { isActiveTenant: false, detail: customMessage };
130
- });
105
+ async isActiveTenant() {
106
+ return { isActiveTenant: false, detail: customMessage };
131
107
  }
132
108
  };
133
109
  const messageStoreStub = sinon.createStubInstance(MessageStoreLevel);
134
110
  const dataStoreStub = sinon.createStubInstance(DataStoreLevel);
135
111
  const resumableTaskStoreStub = sinon.createStubInstance(ResumableTaskStoreLevel);
136
112
  const stateIndexStub = sinon.createStubInstance(StateIndexLevel);
137
- const eventStreamStub = sinon.createStubInstance(EventEmitterStream);
138
- const dwnWithConfig = yield Dwn.create({
113
+ const eventLogStub = sinon.createStubInstance(EventEmitterEventLog);
114
+ const dwnWithConfig = await Dwn.create({
139
115
  tenantGate: blockAllTenantGate,
140
116
  messageStore: messageStoreStub,
141
117
  dataStore: dataStoreStub,
142
118
  resumableTaskStore: resumableTaskStoreStub,
143
119
  stateIndex: stateIndexStub,
144
- eventStream: eventStreamStub
120
+ eventLog: eventLogStub
145
121
  });
146
- const alice = yield TestDataGenerator.generateDidKeyPersona();
147
- const { author, message } = yield TestDataGenerator.generateRecordsQuery({ author: alice });
122
+ const alice = await TestDataGenerator.generateDidKeyPersona();
123
+ const { author, message } = await TestDataGenerator.generateRecordsQuery({ author: alice });
148
124
  const tenant = author.did;
149
- const reply = yield dwnWithConfig.processMessage(tenant, message);
125
+ const reply = await dwnWithConfig.processMessage(tenant, message);
150
126
  expect(reply.status.code).toBe(401);
151
127
  expect(reply.status.detail).toBe(customMessage);
152
- }));
128
+ });
153
129
  });
154
130
  });
155
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dwn.spec.js","sourceRoot":"","sources":["../../../tests/dwn.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dwn.spec.js","sourceRoot":"","sources":["../../../tests/dwn.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,305 @@
1
+ import { afterAll, beforeEach, describe, expect, it } from 'bun:test';
2
+ import { EventEmitterEventLog } from '../src/event-stream/event-emitter-event-log.js';
3
+ describe('EventEmitterEventLog', () => {
4
+ let eventLog;
5
+ beforeEach(async () => {
6
+ eventLog = new EventEmitterEventLog();
7
+ await eventLog.open();
8
+ });
9
+ afterAll(async () => {
10
+ await eventLog.close();
11
+ });
12
+ describe('emit()', () => {
13
+ it('should return opaque cursor strings', async () => {
14
+ const tenant = 'did:example:alice';
15
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
16
+ const cursor1 = await eventLog.emit(tenant, event, { key: 'val1' });
17
+ const cursor2 = await eventLog.emit(tenant, event, { key: 'val2' });
18
+ const cursor3 = await eventLog.emit(tenant, event, { key: 'val3' });
19
+ // Cursors are strings and should be different for each event.
20
+ expect(typeof cursor1).toBe('string');
21
+ expect(typeof cursor2).toBe('string');
22
+ expect(cursor1).not.toBe(cursor2);
23
+ expect(cursor2).not.toBe(cursor3);
24
+ });
25
+ it('should maintain independent cursors per tenant', async () => {
26
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
27
+ const cursorAlice = await eventLog.emit('did:example:alice', event, {});
28
+ const cursorBob = await eventLog.emit('did:example:bob', event, {});
29
+ // Both are valid cursor strings (first event for each tenant).
30
+ expect(typeof cursorAlice).toBe('string');
31
+ expect(typeof cursorBob).toBe('string');
32
+ expect(cursorAlice.length).toBeGreaterThan(0);
33
+ expect(cursorBob.length).toBeGreaterThan(0);
34
+ });
35
+ it('should return empty string when EventLog is closed', async () => {
36
+ await eventLog.close();
37
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
38
+ const cursor = await eventLog.emit('did:example:alice', event, {});
39
+ expect(cursor).toBe('');
40
+ // reopen for afterAll cleanup
41
+ await eventLog.open();
42
+ });
43
+ });
44
+ describe('read()', () => {
45
+ it('should read all events for a tenant when no cursor is provided', async () => {
46
+ const tenant = 'did:example:alice';
47
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
48
+ await eventLog.emit(tenant, event, { schema: 'http://a' });
49
+ await eventLog.emit(tenant, event, { schema: 'http://b' });
50
+ const result = await eventLog.read(tenant);
51
+ expect(result.events.length).toBe(2);
52
+ expect(result.cursor).toBeDefined();
53
+ });
54
+ it('should read events after a cursor', async () => {
55
+ const tenant = 'did:example:alice';
56
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
57
+ await eventLog.emit(tenant, event, { schema: 'http://a' });
58
+ const cursor2 = await eventLog.emit(tenant, event, { schema: 'http://b' });
59
+ await eventLog.emit(tenant, event, { schema: 'http://c' });
60
+ // Read after cursor2 — should only get the third event.
61
+ const result = await eventLog.read(tenant, { cursor: cursor2 });
62
+ expect(result.events.length).toBe(1);
63
+ expect(result.cursor).toBeDefined();
64
+ });
65
+ it('should apply filters during read', async () => {
66
+ const tenant = 'did:example:alice';
67
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
68
+ await eventLog.emit(tenant, event, { schema: 'http://match' });
69
+ await eventLog.emit(tenant, event, { schema: 'http://other' });
70
+ await eventLog.emit(tenant, event, { schema: 'http://match' });
71
+ const result = await eventLog.read(tenant, { filters: [{ schema: 'http://match' }] });
72
+ expect(result.events.length).toBe(2);
73
+ });
74
+ it('should return undefined cursor for unknown tenant', async () => {
75
+ const result = await eventLog.read('did:example:unknown');
76
+ expect(result.events.length).toBe(0);
77
+ expect(result.cursor).toBeUndefined();
78
+ });
79
+ it('should return the input cursor when no new events match', async () => {
80
+ const tenant = 'did:example:alice';
81
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
82
+ const lastCursor = await eventLog.emit(tenant, event, {});
83
+ // Read after the last event — nothing new.
84
+ const result = await eventLog.read(tenant, { cursor: lastCursor });
85
+ expect(result.events.length).toBe(0);
86
+ expect(result.cursor).toBe(lastCursor);
87
+ });
88
+ it('should respect the limit option', async () => {
89
+ const tenant = 'did:example:alice';
90
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
91
+ await eventLog.emit(tenant, event, {});
92
+ await eventLog.emit(tenant, event, {});
93
+ await eventLog.emit(tenant, event, {});
94
+ const result = await eventLog.read(tenant, { limit: 2 });
95
+ expect(result.events.length).toBe(2);
96
+ expect(result.cursor).toBeDefined();
97
+ });
98
+ });
99
+ describe('subscribe() — live only (no cursor)', () => {
100
+ it('should deliver live events to subscriber with cursor strings', async () => {
101
+ const tenant = 'did:example:alice';
102
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
103
+ const received = [];
104
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); });
105
+ await eventLog.emit(tenant, event, {});
106
+ await eventLog.emit(tenant, event, {});
107
+ expect(received.length).toBe(2);
108
+ expect(received[0].type).toBe('event');
109
+ expect(received[1].type).toBe('event');
110
+ if (received[0].type === 'event') {
111
+ expect(typeof received[0].cursor).toBe('string');
112
+ expect(received[0].cursor.length).toBeGreaterThan(0);
113
+ }
114
+ });
115
+ it('should NOT deliver EOSE when no cursor is provided', async () => {
116
+ const tenant = 'did:example:alice';
117
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
118
+ // Emit some events before subscribing.
119
+ await eventLog.emit(tenant, event, {});
120
+ const received = [];
121
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); });
122
+ // Emit after subscribing.
123
+ await eventLog.emit(tenant, event, {});
124
+ // Should only have the live event, no EOSE.
125
+ expect(received.length).toBe(1);
126
+ expect(received[0].type).toBe('event');
127
+ });
128
+ it('should filter live events', async () => {
129
+ const tenant = 'did:example:alice';
130
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
131
+ const received = [];
132
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); }, {
133
+ filters: [{ schema: 'http://match' }],
134
+ });
135
+ await eventLog.emit(tenant, event, { schema: 'http://match' });
136
+ await eventLog.emit(tenant, event, { schema: 'http://other' });
137
+ await eventLog.emit(tenant, event, { schema: 'http://match' });
138
+ expect(received.length).toBe(2);
139
+ });
140
+ it('should stop delivering events after close', async () => {
141
+ const tenant = 'did:example:alice';
142
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
143
+ const received = [];
144
+ const sub = await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); });
145
+ await eventLog.emit(tenant, event, {});
146
+ expect(received.length).toBe(1);
147
+ await sub.close();
148
+ await eventLog.emit(tenant, event, {});
149
+ expect(received.length).toBe(1); // no new events after close
150
+ });
151
+ });
152
+ describe('subscribe() — cursor mode (catch-up + EOSE + live)', () => {
153
+ it('should replay stored events after cursor and deliver EOSE', async () => {
154
+ const tenant = 'did:example:alice';
155
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
156
+ // Emit 3 events, capture the first cursor.
157
+ const cursor1 = await eventLog.emit(tenant, event, { idx: '1' });
158
+ await eventLog.emit(tenant, event, { idx: '2' });
159
+ await eventLog.emit(tenant, event, { idx: '3' });
160
+ // Subscribe with cursor from first event — should replay events 2 and 3.
161
+ const received = [];
162
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); }, { cursor: cursor1 });
163
+ // Should receive 2 catch-up events + EOSE.
164
+ expect(received.length).toBe(3);
165
+ expect(received[0].type).toBe('event');
166
+ expect(received[1].type).toBe('event');
167
+ expect(received[2].type).toBe('eose');
168
+ // Cursors should be opaque strings, each different.
169
+ if (received[0].type === 'event' && received[1].type === 'event') {
170
+ expect(received[0].cursor).not.toBe(received[1].cursor);
171
+ }
172
+ });
173
+ it('should deliver EOSE echoing the input cursor when already caught up', async () => {
174
+ const tenant = 'did:example:alice';
175
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
176
+ // Emit events and capture last cursor.
177
+ await eventLog.emit(tenant, event, {});
178
+ const lastCursor = await eventLog.emit(tenant, event, {});
179
+ // Subscribe with the last cursor — already caught up, no stored events to replay.
180
+ const received = [];
181
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); }, { cursor: lastCursor });
182
+ // Should just get EOSE echoing the input cursor.
183
+ expect(received.length).toBe(1);
184
+ expect(received[0].type).toBe('eose');
185
+ if (received[0].type === 'eose') {
186
+ expect(received[0].cursor).toBe(lastCursor);
187
+ }
188
+ });
189
+ it('should continue delivering live events after EOSE', async () => {
190
+ const tenant = 'did:example:alice';
191
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
192
+ // Emit 1 event and capture its cursor.
193
+ const cursor1 = await eventLog.emit(tenant, event, { idx: '1' });
194
+ const received = [];
195
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); }, { cursor: cursor1 });
196
+ // Already caught up — should have just EOSE.
197
+ expect(received.length).toBe(1);
198
+ expect(received[0].type).toBe('eose');
199
+ // Now emit a live event.
200
+ await eventLog.emit(tenant, event, { idx: '2' });
201
+ // Should now have the live event appended.
202
+ expect(received.length).toBe(2);
203
+ expect(received[1].type).toBe('event');
204
+ if (received[1].type === 'event') {
205
+ expect(typeof received[1].cursor).toBe('string');
206
+ }
207
+ });
208
+ it('should apply filters to both catch-up and live events', async () => {
209
+ const tenant = 'did:example:alice';
210
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
211
+ // Emit events with different schemas, capture cursor before the batch.
212
+ const cursorBefore = await eventLog.emit(tenant, event, { schema: 'http://before' });
213
+ await eventLog.emit(tenant, event, { schema: 'http://match' });
214
+ await eventLog.emit(tenant, event, { schema: 'http://other' });
215
+ await eventLog.emit(tenant, event, { schema: 'http://match' });
216
+ const received = [];
217
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); }, {
218
+ cursor: cursorBefore,
219
+ filters: [{ schema: 'http://match' }],
220
+ });
221
+ // Catch-up: 2 matching events + EOSE. (Event with 'http://other' filtered out.)
222
+ expect(received.length).toBe(3);
223
+ expect(received[0].type).toBe('event');
224
+ expect(received[1].type).toBe('event');
225
+ expect(received[2].type).toBe('eose');
226
+ // Emit live events — only matching ones should arrive.
227
+ await eventLog.emit(tenant, event, { schema: 'http://other' });
228
+ await eventLog.emit(tenant, event, { schema: 'http://match' });
229
+ expect(received.length).toBe(4); // +1 matching live event
230
+ });
231
+ it('should deduplicate live events that arrived during catch-up', async () => {
232
+ const tenant = 'did:example:alice';
233
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
234
+ // Emit 2 events, capture cursor before them.
235
+ const cursorBefore = await eventLog.emit(tenant, event, { idx: '0' });
236
+ await eventLog.emit(tenant, event, { idx: '1' });
237
+ await eventLog.emit(tenant, event, { idx: '2' });
238
+ const received = [];
239
+ await eventLog.subscribe(tenant, 'sub-1', (msg) => { received.push(msg); }, { cursor: cursorBefore });
240
+ // 2 catch-up events + EOSE.
241
+ expect(received.length).toBe(3);
242
+ // Verify no duplicate cursors.
243
+ const eventCursors = received.filter(m => m.type === 'event').map(m => m.cursor);
244
+ const uniqueCursors = new Set(eventCursors);
245
+ expect(uniqueCursors.size).toBe(eventCursors.length);
246
+ });
247
+ it('should isolate subscriptions between tenants in cursor mode', async () => {
248
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
249
+ // Emit for alice, capture first cursor.
250
+ const aliceCursor1 = await eventLog.emit('did:example:alice', event, {});
251
+ await eventLog.emit('did:example:alice', event, {});
252
+ // Emit for bob.
253
+ await eventLog.emit('did:example:bob', event, {});
254
+ // Subscribe to alice with cursor — should only get alice's second event.
255
+ const aliceReceived = [];
256
+ await eventLog.subscribe('did:example:alice', 'sub-alice', (msg) => { aliceReceived.push(msg); }, { cursor: aliceCursor1 });
257
+ // Should only get alice's 1 catch-up event + EOSE.
258
+ expect(aliceReceived.length).toBe(2);
259
+ expect(aliceReceived[0].type).toBe('event');
260
+ expect(aliceReceived[1].type).toBe('eose');
261
+ });
262
+ });
263
+ describe('trim()', () => {
264
+ it('should trim events by sequence number', async () => {
265
+ const tenant = 'did:example:alice';
266
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
267
+ await eventLog.emit(tenant, event, {});
268
+ await eventLog.emit(tenant, event, {});
269
+ await eventLog.emit(tenant, event, {});
270
+ await eventLog.trim(tenant, 3); // trim events with seq < 3
271
+ const result = await eventLog.read(tenant);
272
+ expect(result.events.length).toBe(1);
273
+ expect(result.events[0].seq).toBe(3);
274
+ });
275
+ it('should trim events by ISO-8601 timestamp', async () => {
276
+ const tenant = 'did:example:alice';
277
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
278
+ const oldTime = '2020-01-01T00:00:00.000000Z';
279
+ const newTime = '2025-01-01T00:00:00.000000Z';
280
+ await eventLog.emit(tenant, event, { messageTimestamp: oldTime });
281
+ await eventLog.emit(tenant, event, { messageTimestamp: newTime });
282
+ await eventLog.trim(tenant, '2023-01-01T00:00:00.000000Z');
283
+ const result = await eventLog.read(tenant);
284
+ expect(result.events.length).toBe(1);
285
+ });
286
+ });
287
+ describe('maxEventsPerTenant eviction', () => {
288
+ it('should evict oldest events when limit is exceeded', async () => {
289
+ const smallLog = new EventEmitterEventLog({ maxEventsPerTenant: 3 });
290
+ await smallLog.open();
291
+ const tenant = 'did:example:alice';
292
+ const event = { message: { descriptor: { interface: 'Records', method: 'Write' } } };
293
+ await smallLog.emit(tenant, event, { idx: '1' });
294
+ await smallLog.emit(tenant, event, { idx: '2' });
295
+ await smallLog.emit(tenant, event, { idx: '3' });
296
+ await smallLog.emit(tenant, event, { idx: '4' }); // should evict seq=1
297
+ const result = await smallLog.read(tenant);
298
+ expect(result.events.length).toBe(3);
299
+ expect(result.events[0].seq).toBe(2); // seq=1 was evicted
300
+ expect(result.events[2].seq).toBe(4);
301
+ await smallLog.close();
302
+ });
303
+ });
304
+ });
305
+ //# sourceMappingURL=event-emitter-event-log.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter-event-log.spec.js","sourceRoot":"","sources":["../../../tests/event-emitter-event-log.spec.ts"],"names":[],"mappings":"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"}