@enbox/dwn-sdk-js 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +762 -911
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/abstract-message.js +4 -0
  6. package/dist/esm/src/core/abstract-message.js.map +1 -1
  7. package/dist/esm/src/core/auth.js +22 -33
  8. package/dist/esm/src/core/auth.js.map +1 -1
  9. package/dist/esm/src/core/constants.js +11 -0
  10. package/dist/esm/src/core/constants.js.map +1 -0
  11. package/dist/esm/src/core/core-protocol.js +44 -0
  12. package/dist/esm/src/core/core-protocol.js.map +1 -0
  13. package/dist/esm/src/core/dwn-constant.js +7 -7
  14. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  15. package/dist/esm/src/core/dwn-error.js +10 -12
  16. package/dist/esm/src/core/dwn-error.js.map +1 -1
  17. package/dist/esm/src/core/grant-authorization.js +50 -52
  18. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  19. package/dist/esm/src/core/message.js +85 -116
  20. package/dist/esm/src/core/message.js.map +1 -1
  21. package/dist/esm/src/core/messages-grant-authorization.js +63 -78
  22. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  23. package/dist/esm/src/core/protocol-authorization-action.js +266 -0
  24. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
  25. package/dist/esm/src/core/protocol-authorization-validation.js +321 -0
  26. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
  27. package/dist/esm/src/core/protocol-authorization.js +144 -741
  28. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  29. package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
  30. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  31. package/dist/esm/src/core/record-chain.js +64 -0
  32. package/dist/esm/src/core/record-chain.js.map +1 -0
  33. package/dist/esm/src/core/records-grant-authorization.js +53 -72
  34. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  35. package/dist/esm/src/core/resumable-task-manager.js +50 -65
  36. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  37. package/dist/esm/src/core/tenant-gate.js +2 -13
  38. package/dist/esm/src/core/tenant-gate.js.map +1 -1
  39. package/dist/esm/src/dwn.js +108 -101
  40. package/dist/esm/src/dwn.js.map +1 -1
  41. package/dist/esm/src/event-stream/event-emitter-event-log.js +204 -0
  42. package/dist/esm/src/event-stream/event-emitter-event-log.js.map +1 -0
  43. package/dist/esm/src/handlers/messages-read.js +67 -81
  44. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  45. package/dist/esm/src/handlers/messages-subscribe.js +51 -63
  46. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  47. package/dist/esm/src/handlers/messages-sync.js +75 -89
  48. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  49. package/dist/esm/src/handlers/protocols-configure.js +153 -163
  50. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  51. package/dist/esm/src/handlers/protocols-query.js +52 -55
  52. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  53. package/dist/esm/src/handlers/records-count.js +97 -85
  54. package/dist/esm/src/handlers/records-count.js.map +1 -1
  55. package/dist/esm/src/handlers/records-delete.js +75 -93
  56. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  57. package/dist/esm/src/handlers/records-query.js +116 -105
  58. package/dist/esm/src/handlers/records-query.js.map +1 -1
  59. package/dist/esm/src/handlers/records-read.js +130 -132
  60. package/dist/esm/src/handlers/records-read.js.map +1 -1
  61. package/dist/esm/src/handlers/records-subscribe.js +164 -104
  62. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  63. package/dist/esm/src/handlers/records-write.js +213 -280
  64. package/dist/esm/src/handlers/records-write.js.map +1 -1
  65. package/dist/esm/src/index.js +5 -2
  66. package/dist/esm/src/index.js.map +1 -1
  67. package/dist/esm/src/interfaces/messages-read.js +24 -32
  68. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  69. package/dist/esm/src/interfaces/messages-subscribe.js +28 -41
  70. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  71. package/dist/esm/src/interfaces/messages-sync.js +26 -40
  72. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  73. package/dist/esm/src/interfaces/protocols-configure.js +87 -65
  74. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  75. package/dist/esm/src/interfaces/protocols-query.js +55 -68
  76. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-count.js +50 -66
  78. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-delete.js +45 -55
  80. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-query.js +60 -76
  82. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  83. package/dist/esm/src/interfaces/records-read.js +51 -67
  84. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  85. package/dist/esm/src/interfaces/records-subscribe.js +53 -68
  86. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  87. package/dist/esm/src/interfaces/records-write-query.js +102 -0
  88. package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
  89. package/dist/esm/src/interfaces/records-write-signing.js +81 -0
  90. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
  91. package/dist/esm/src/interfaces/records-write.js +396 -610
  92. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  93. package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
  94. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  95. package/dist/esm/src/jose/jws/general/builder.js +23 -35
  96. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  97. package/dist/esm/src/jose/jws/general/verifier.js +56 -69
  98. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  99. package/dist/esm/src/protocols/permission-grant.js +43 -14
  100. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  101. package/dist/esm/src/protocols/permission-request.js +28 -14
  102. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  103. package/dist/esm/src/protocols/permissions.js +325 -227
  104. package/dist/esm/src/protocols/permissions.js.map +1 -1
  105. package/dist/esm/src/smt/smt-store-level.js +42 -64
  106. package/dist/esm/src/smt/smt-store-level.js.map +1 -1
  107. package/dist/esm/src/smt/smt-store-memory.js +19 -45
  108. package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
  109. package/dist/esm/src/smt/smt-utils.js +28 -45
  110. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  111. package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
  112. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
  113. package/dist/esm/src/state-index/state-index-level.js +113 -150
  114. package/dist/esm/src/state-index/state-index-level.js.map +1 -1
  115. package/dist/esm/src/store/blockstore-level.js +54 -156
  116. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  117. package/dist/esm/src/store/blockstore-mock.js +48 -153
  118. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  119. package/dist/esm/src/store/data-store-level.js +137 -100
  120. package/dist/esm/src/store/data-store-level.js.map +1 -1
  121. package/dist/esm/src/store/index-level-compound.js +246 -0
  122. package/dist/esm/src/store/index-level-compound.js.map +1 -0
  123. package/dist/esm/src/store/index-level.js +307 -715
  124. package/dist/esm/src/store/index-level.js.map +1 -1
  125. package/dist/esm/src/store/level-wrapper.js +143 -244
  126. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  127. package/dist/esm/src/store/message-store-level.js +71 -94
  128. package/dist/esm/src/store/message-store-level.js.map +1 -1
  129. package/dist/esm/src/store/resumable-task-store-level.js +62 -101
  130. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
  131. package/dist/esm/src/store/storage-controller.js +131 -146
  132. package/dist/esm/src/store/storage-controller.js.map +1 -1
  133. package/dist/esm/src/types/permission-types.js.map +1 -1
  134. package/dist/esm/src/types/protocols-types.js +10 -0
  135. package/dist/esm/src/types/protocols-types.js.map +1 -1
  136. package/dist/esm/src/types/records-types.js.map +1 -1
  137. package/dist/esm/src/utils/abort.js +8 -19
  138. package/dist/esm/src/utils/abort.js.map +1 -1
  139. package/dist/esm/src/utils/array.js +15 -49
  140. package/dist/esm/src/utils/array.js.map +1 -1
  141. package/dist/esm/src/utils/cid.js +29 -77
  142. package/dist/esm/src/utils/cid.js.map +1 -1
  143. package/dist/esm/src/utils/data-stream.js +37 -65
  144. package/dist/esm/src/utils/data-stream.js.map +1 -1
  145. package/dist/esm/src/utils/encryption.js +136 -162
  146. package/dist/esm/src/utils/encryption.js.map +1 -1
  147. package/dist/esm/src/utils/filter.js +1 -12
  148. package/dist/esm/src/utils/filter.js.map +1 -1
  149. package/dist/esm/src/utils/hd-key.js +45 -71
  150. package/dist/esm/src/utils/hd-key.js.map +1 -1
  151. package/dist/esm/src/utils/jws.js +9 -20
  152. package/dist/esm/src/utils/jws.js.map +1 -1
  153. package/dist/esm/src/utils/memory-cache.js +12 -23
  154. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  155. package/dist/esm/src/utils/messages.js +21 -33
  156. package/dist/esm/src/utils/messages.js.map +1 -1
  157. package/dist/esm/src/utils/private-key-signer.js +9 -17
  158. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  159. package/dist/esm/src/utils/protocols.js +62 -70
  160. package/dist/esm/src/utils/protocols.js.map +1 -1
  161. package/dist/esm/src/utils/records.js +103 -166
  162. package/dist/esm/src/utils/records.js.map +1 -1
  163. package/dist/esm/src/utils/secp256k1.js +60 -96
  164. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  165. package/dist/esm/src/utils/secp256r1.js +54 -71
  166. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  167. package/dist/esm/src/utils/time.js +5 -18
  168. package/dist/esm/src/utils/time.js.map +1 -1
  169. package/dist/esm/src/utils/url.js +3 -3
  170. package/dist/esm/src/utils/url.js.map +1 -1
  171. package/dist/esm/tests/core/auth.spec.js +3 -12
  172. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  173. package/dist/esm/tests/core/message.spec.js +50 -59
  174. package/dist/esm/tests/core/message.spec.js.map +1 -1
  175. package/dist/esm/tests/core/protocol-authorization.spec.js +10 -18
  176. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  177. package/dist/esm/tests/dwn.spec.js +65 -89
  178. package/dist/esm/tests/dwn.spec.js.map +1 -1
  179. package/dist/esm/tests/event-emitter-event-log.spec.js +305 -0
  180. package/dist/esm/tests/event-emitter-event-log.spec.js.map +1 -0
  181. package/dist/esm/tests/features/author-delegated-grant.spec.js +337 -347
  182. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  183. package/dist/esm/tests/features/owner-delegated-grant.spec.js +160 -172
  184. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  185. package/dist/esm/tests/features/owner-signature.spec.js +78 -82
  186. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  187. package/dist/esm/tests/features/permissions.spec.js +449 -184
  188. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  189. package/dist/esm/tests/features/protocol-composition.spec.js +981 -360
  190. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  191. package/dist/esm/tests/features/protocol-create-action.spec.js +45 -54
  192. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  193. package/dist/esm/tests/features/protocol-delete-action.spec.js +99 -108
  194. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  195. package/dist/esm/tests/features/protocol-update-action.spec.js +108 -117
  196. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  197. package/dist/esm/tests/features/records-immutable.spec.js +315 -0
  198. package/dist/esm/tests/features/records-immutable.spec.js.map +1 -0
  199. package/dist/esm/tests/features/records-prune.spec.js +178 -194
  200. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  201. package/dist/esm/tests/features/records-record-limit.spec.js +542 -0
  202. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -0
  203. package/dist/esm/tests/features/records-tags.spec.js +456 -463
  204. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  205. package/dist/esm/tests/features/resumable-tasks.spec.js +88 -98
  206. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  207. package/dist/esm/tests/handlers/messages-read.spec.js +215 -210
  208. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  209. package/dist/esm/tests/handlers/messages-subscribe.spec.js +309 -171
  210. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  211. package/dist/esm/tests/handlers/messages-sync.spec.js +272 -199
  212. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  213. package/dist/esm/tests/handlers/protocols-configure.spec.js +247 -241
  214. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  215. package/dist/esm/tests/handlers/protocols-query.spec.js +159 -172
  216. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  217. package/dist/esm/tests/handlers/records-count.spec.js +101 -105
  218. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  219. package/dist/esm/tests/handlers/records-delete.spec.js +266 -279
  220. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  221. package/dist/esm/tests/handlers/records-query.spec.js +984 -996
  222. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  223. package/dist/esm/tests/handlers/records-read.spec.js +542 -671
  224. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  225. package/dist/esm/tests/handlers/records-subscribe.spec.js +433 -302
  226. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  227. package/dist/esm/tests/handlers/records-write.spec.js +1216 -1140
  228. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  229. package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
  230. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  231. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
  232. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  233. package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
  234. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  235. package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
  236. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  237. package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
  238. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  239. package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
  240. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  241. package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
  242. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  243. package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
  244. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  245. package/dist/esm/tests/interfaces/records-write.spec.js +190 -219
  246. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  247. package/dist/esm/tests/jose/jws/general.spec.js +36 -45
  248. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  249. package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
  250. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
  251. package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
  252. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  253. package/dist/esm/tests/protocols/permissions.spec.js +49 -55
  254. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  255. package/dist/esm/tests/scenarios/aggregator.spec.js +127 -138
  256. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  257. package/dist/esm/tests/scenarios/deleted-record.spec.js +372 -36
  258. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  259. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +55 -64
  260. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  261. package/dist/esm/tests/scenarios/nested-roles.spec.js +66 -76
  262. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  263. package/dist/esm/tests/scenarios/subscriptions.spec.js +451 -354
  264. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  265. package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
  266. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
  267. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
  268. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
  269. package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
  270. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
  271. package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
  272. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  273. package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
  274. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  275. package/dist/esm/tests/store/data-store-level.spec.js +160 -108
  276. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  277. package/dist/esm/tests/store/index-level.spec.js +404 -414
  278. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  279. package/dist/esm/tests/store/message-store-level.spec.js +13 -22
  280. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  281. package/dist/esm/tests/store/message-store.spec.js +229 -238
  282. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  283. package/dist/esm/tests/test-event-stream.js +12 -13
  284. package/dist/esm/tests/test-event-stream.js.map +1 -1
  285. package/dist/esm/tests/test-stores.js +16 -13
  286. package/dist/esm/tests/test-stores.js.map +1 -1
  287. package/dist/esm/tests/test-suite.js +8 -15
  288. package/dist/esm/tests/test-suite.js.map +1 -1
  289. package/dist/esm/tests/utils/cid.spec.js +24 -33
  290. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  291. package/dist/esm/tests/utils/data-stream.spec.js +48 -57
  292. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  293. package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
  294. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  295. package/dist/esm/tests/utils/encryption.spec.js +229 -82
  296. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  297. package/dist/esm/tests/utils/filters.spec.js +46 -55
  298. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  299. package/dist/esm/tests/utils/hd-key.spec.js +10 -19
  300. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  301. package/dist/esm/tests/utils/jws.spec.js +3 -12
  302. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  303. package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
  304. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  305. package/dist/esm/tests/utils/messages.spec.js +18 -20
  306. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  307. package/dist/esm/tests/utils/poller.js +22 -33
  308. package/dist/esm/tests/utils/poller.js.map +1 -1
  309. package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
  310. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  311. package/dist/esm/tests/utils/records.spec.js +14 -27
  312. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  313. package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
  314. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  315. package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
  316. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  317. package/dist/esm/tests/utils/test-data-generator.js +446 -467
  318. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  319. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
  320. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  321. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
  322. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  323. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
  324. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  325. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
  326. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  327. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
  328. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  329. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
  330. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  331. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
  332. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
  333. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +44 -24
  334. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  335. package/dist/types/generated/precompiled-validators.d.ts +49 -40
  336. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  337. package/dist/types/src/core/constants.d.ts +11 -0
  338. package/dist/types/src/core/constants.d.ts.map +1 -0
  339. package/dist/types/src/core/core-protocol.d.ts +89 -0
  340. package/dist/types/src/core/core-protocol.d.ts.map +1 -0
  341. package/dist/types/src/core/dwn-error.d.ts +9 -12
  342. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  343. package/dist/types/src/core/grant-authorization.d.ts +6 -2
  344. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  345. package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
  346. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
  347. package/dist/types/src/core/protocol-authorization-validation.d.ts +81 -0
  348. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
  349. package/dist/types/src/core/protocol-authorization.d.ts +24 -106
  350. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  351. package/dist/types/src/core/record-chain.d.ts +24 -0
  352. package/dist/types/src/core/record-chain.d.ts.map +1 -0
  353. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  354. package/dist/types/src/dwn.d.ts +19 -7
  355. package/dist/types/src/dwn.d.ts.map +1 -1
  356. package/dist/types/src/event-stream/event-emitter-event-log.d.ts +50 -0
  357. package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +1 -0
  358. package/dist/types/src/handlers/messages-read.d.ts +3 -8
  359. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  360. package/dist/types/src/handlers/messages-subscribe.d.ts +6 -10
  361. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  362. package/dist/types/src/handlers/messages-sync.d.ts +3 -8
  363. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  364. package/dist/types/src/handlers/protocols-configure.d.ts +3 -10
  365. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  366. package/dist/types/src/handlers/protocols-query.d.ts +3 -8
  367. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
  368. package/dist/types/src/handlers/records-count.d.ts +3 -6
  369. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  370. package/dist/types/src/handlers/records-delete.d.ts +3 -8
  371. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  372. package/dist/types/src/handlers/records-query.d.ts +3 -8
  373. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  374. package/dist/types/src/handlers/records-read.d.ts +3 -8
  375. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  376. package/dist/types/src/handlers/records-subscribe.d.ts +8 -10
  377. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  378. package/dist/types/src/handlers/records-write.d.ts +4 -24
  379. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  380. package/dist/types/src/index.d.ts +8 -4
  381. package/dist/types/src/index.d.ts.map +1 -1
  382. package/dist/types/src/interfaces/messages-subscribe.d.ts +5 -0
  383. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  384. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  385. package/dist/types/src/interfaces/records-subscribe.d.ts +5 -0
  386. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  387. package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
  388. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
  389. package/dist/types/src/interfaces/records-write-signing.d.ts +34 -0
  390. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
  391. package/dist/types/src/interfaces/records-write.d.ts +13 -53
  392. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  393. package/dist/types/src/protocols/permission-grant.d.ts +1 -1
  394. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  395. package/dist/types/src/protocols/permission-request.d.ts +1 -1
  396. package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
  397. package/dist/types/src/protocols/permissions.d.ts +40 -3
  398. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  399. package/dist/types/src/state-index/state-index-level.d.ts.map +1 -1
  400. package/dist/types/src/store/data-store-level.d.ts +20 -4
  401. package/dist/types/src/store/data-store-level.d.ts.map +1 -1
  402. package/dist/types/src/store/index-level-compound.d.ts +70 -0
  403. package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
  404. package/dist/types/src/store/index-level.d.ts +4 -58
  405. package/dist/types/src/store/index-level.d.ts.map +1 -1
  406. package/dist/types/src/store/storage-controller.d.ts +4 -4
  407. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  408. package/dist/types/src/types/message-types.d.ts +3 -3
  409. package/dist/types/src/types/message-types.d.ts.map +1 -1
  410. package/dist/types/src/types/messages-types.d.ts +12 -3
  411. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  412. package/dist/types/src/types/method-handler.d.ts +24 -3
  413. package/dist/types/src/types/method-handler.d.ts.map +1 -1
  414. package/dist/types/src/types/permission-types.d.ts +7 -0
  415. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  416. package/dist/types/src/types/protocols-types.d.ts +41 -1
  417. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  418. package/dist/types/src/types/records-types.d.ts +16 -6
  419. package/dist/types/src/types/records-types.d.ts.map +1 -1
  420. package/dist/types/src/types/subscriptions.d.ts +151 -13
  421. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  422. package/dist/types/src/utils/hd-key.d.ts +1 -9
  423. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  424. package/dist/types/src/utils/messages.d.ts +7 -5
  425. package/dist/types/src/utils/messages.d.ts.map +1 -1
  426. package/dist/types/src/utils/protocols.d.ts +5 -0
  427. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  428. package/dist/types/src/utils/records.d.ts +1 -11
  429. package/dist/types/src/utils/records.d.ts.map +1 -1
  430. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  431. package/dist/types/tests/event-emitter-event-log.spec.d.ts +2 -0
  432. package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +1 -0
  433. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  434. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  435. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  436. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  437. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  438. package/dist/types/tests/features/records-immutable.spec.d.ts +2 -0
  439. package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -0
  440. package/dist/types/tests/features/records-record-limit.spec.d.ts +2 -0
  441. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -0
  442. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  443. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  444. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  445. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  446. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  447. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  448. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  449. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  450. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  451. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  452. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  453. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  454. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
  455. package/dist/types/tests/test-event-stream.d.ts +11 -12
  456. package/dist/types/tests/test-event-stream.d.ts.map +1 -1
  457. package/dist/types/tests/test-suite.d.ts +2 -2
  458. package/dist/types/tests/test-suite.d.ts.map +1 -1
  459. package/dist/types/tests/utils/test-data-generator.d.ts +18 -0
  460. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  461. package/package.json +5 -4
  462. package/src/core/constants.ts +11 -0
  463. package/src/core/core-protocol.ts +129 -0
  464. package/src/core/dwn-error.ts +15 -12
  465. package/src/core/grant-authorization.ts +20 -3
  466. package/src/core/protocol-authorization-action.ts +377 -0
  467. package/src/core/protocol-authorization-validation.ts +487 -0
  468. package/src/core/protocol-authorization.ts +111 -856
  469. package/src/core/record-chain.ts +99 -0
  470. package/src/core/records-grant-authorization.ts +6 -8
  471. package/src/dwn.ts +58 -73
  472. package/src/event-stream/event-emitter-event-log.ts +283 -0
  473. package/src/handlers/messages-read.ts +8 -9
  474. package/src/handlers/messages-subscribe.ts +24 -28
  475. package/src/handlers/messages-sync.ts +10 -16
  476. package/src/handlers/protocols-configure.ts +47 -32
  477. package/src/handlers/protocols-query.ts +6 -9
  478. package/src/handlers/records-count.ts +11 -10
  479. package/src/handlers/records-delete.ts +12 -21
  480. package/src/handlers/records-query.ts +12 -12
  481. package/src/handlers/records-read.ts +34 -22
  482. package/src/handlers/records-subscribe.ts +47 -26
  483. package/src/handlers/records-write.ts +47 -104
  484. package/src/index.ts +9 -5
  485. package/src/interfaces/messages-subscribe.ts +7 -1
  486. package/src/interfaces/protocols-configure.ts +73 -8
  487. package/src/interfaces/records-count.ts +1 -1
  488. package/src/interfaces/records-delete.ts +1 -1
  489. package/src/interfaces/records-query.ts +1 -1
  490. package/src/interfaces/records-read.ts +1 -1
  491. package/src/interfaces/records-subscribe.ts +8 -1
  492. package/src/interfaces/records-write-query.ts +139 -0
  493. package/src/interfaces/records-write-signing.ts +123 -0
  494. package/src/interfaces/records-write.ts +66 -261
  495. package/src/protocols/permission-grant.ts +1 -1
  496. package/src/protocols/permission-request.ts +1 -1
  497. package/src/protocols/permissions.ts +148 -6
  498. package/src/state-index/state-index-level.ts +5 -7
  499. package/src/store/data-store-level.ts +124 -34
  500. package/src/store/index-level-compound.ts +324 -0
  501. package/src/store/index-level.ts +68 -341
  502. package/src/store/storage-controller.ts +11 -11
  503. package/src/types/message-types.ts +3 -3
  504. package/src/types/messages-types.ts +12 -3
  505. package/src/types/method-handler.ts +26 -4
  506. package/src/types/mitt.d.ts +28 -0
  507. package/src/types/permission-types.ts +7 -0
  508. package/src/types/protocols-types.ts +46 -0
  509. package/src/types/records-types.ts +16 -6
  510. package/src/types/subscriptions.ts +178 -14
  511. package/src/utils/hd-key.ts +0 -9
  512. package/src/utils/messages.ts +17 -37
  513. package/src/utils/protocols.ts +8 -0
  514. package/src/utils/records.ts +8 -59
  515. package/dist/esm/src/event-stream/event-emitter-stream.js +0 -60
  516. package/dist/esm/src/event-stream/event-emitter-stream.js.map +0 -1
  517. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +0 -77
  518. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +0 -1
  519. package/dist/esm/tests/event-stream/event-stream.spec.js +0 -123
  520. package/dist/esm/tests/event-stream/event-stream.spec.js.map +0 -1
  521. package/dist/types/src/event-stream/event-emitter-stream.d.ts +0 -23
  522. package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +0 -1
  523. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts +0 -2
  524. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +0 -1
  525. package/dist/types/tests/event-stream/event-stream.spec.d.ts +0 -2
  526. package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +0 -1
  527. package/src/event-stream/event-emitter-stream.ts +0 -69
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { authenticate } from '../core/auth.js';
11
2
  import { DateSort } from '../types/records-types.js';
12
3
  import { Message } from '../core/message.js';
@@ -18,63 +9,60 @@ import { RecordsWrite } from '../interfaces/records-write.js';
18
9
  import { SortDirection } from '../types/query-types.js';
19
10
  import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
20
11
  export class RecordsQueryHandler {
21
- constructor(didResolver, messageStore, dataStore) {
22
- this.didResolver = didResolver;
23
- this.messageStore = messageStore;
24
- this.dataStore = dataStore;
12
+ deps;
13
+ constructor(deps) {
14
+ this.deps = deps;
25
15
  }
26
- handle(_a) {
27
- return __awaiter(this, arguments, void 0, function* ({ tenant, message }) {
28
- let recordsQuery;
16
+ async handle({ tenant, message }) {
17
+ let recordsQuery;
18
+ try {
19
+ recordsQuery = await RecordsQuery.parse(message);
20
+ }
21
+ catch (e) {
22
+ return messageReplyFromError(e, 400);
23
+ }
24
+ let recordsWrites;
25
+ let cursor;
26
+ // if this is an anonymous query and the filter supports published records, query only published records
27
+ if (Records.filterIncludesPublishedRecords(recordsQuery.message.descriptor.filter) && recordsQuery.author === undefined) {
28
+ const results = await this.fetchPublishedRecords(tenant, recordsQuery);
29
+ recordsWrites = results.messages;
30
+ cursor = results.cursor;
31
+ }
32
+ else {
33
+ // authentication and authorization
29
34
  try {
30
- recordsQuery = yield RecordsQuery.parse(message);
35
+ await authenticate(message.authorization, this.deps.didResolver);
36
+ await RecordsQueryHandler.authorizeRecordsQuery(tenant, recordsQuery, this.deps.messageStore, this.deps.coreProtocols);
31
37
  }
32
38
  catch (e) {
33
- return messageReplyFromError(e, 400);
39
+ return messageReplyFromError(e, 401);
34
40
  }
35
- let recordsWrites;
36
- let cursor;
37
- // if this is an anonymous query and the filter supports published records, query only published records
38
- if (Records.filterIncludesPublishedRecords(recordsQuery.message.descriptor.filter) && recordsQuery.author === undefined) {
39
- const results = yield this.fetchPublishedRecords(tenant, recordsQuery);
41
+ if (recordsQuery.author === tenant) {
42
+ const results = await this.fetchRecordsAsOwner(tenant, recordsQuery);
40
43
  recordsWrites = results.messages;
41
44
  cursor = results.cursor;
42
45
  }
43
46
  else {
44
- // authentication and authorization
45
- try {
46
- yield authenticate(message.authorization, this.didResolver);
47
- yield RecordsQueryHandler.authorizeRecordsQuery(tenant, recordsQuery, this.messageStore);
48
- }
49
- catch (e) {
50
- return messageReplyFromError(e, 401);
51
- }
52
- if (recordsQuery.author === tenant) {
53
- const results = yield this.fetchRecordsAsOwner(tenant, recordsQuery);
54
- recordsWrites = results.messages;
55
- cursor = results.cursor;
56
- }
57
- else {
58
- const results = yield this.fetchRecordsAsNonOwner(tenant, recordsQuery);
59
- recordsWrites = results.messages;
60
- cursor = results.cursor;
61
- }
47
+ const results = await this.fetchRecordsAsNonOwner(tenant, recordsQuery);
48
+ recordsWrites = results.messages;
49
+ cursor = results.cursor;
62
50
  }
63
- // attach initial write if returned RecordsWrite is not initial write
64
- for (const recordsWrite of recordsWrites) {
65
- if (!(yield RecordsWrite.isInitialWrite(recordsWrite))) {
66
- const initialWriteQueryResult = yield this.messageStore.query(tenant, [{ recordId: recordsWrite.recordId, isLatestBaseState: false, method: DwnMethodName.Write }]);
67
- const initialWrite = initialWriteQueryResult.messages[0];
68
- delete initialWrite.encodedData; // defensive measure but technically optional because we do this when an update RecordsWrite takes place
69
- recordsWrite.initialWrite = initialWrite;
70
- }
51
+ }
52
+ // attach initial write if returned RecordsWrite is not initial write
53
+ for (const recordsWrite of recordsWrites) {
54
+ if (!await RecordsWrite.isInitialWrite(recordsWrite)) {
55
+ const initialWriteQueryResult = await this.deps.messageStore.query(tenant, [{ recordId: recordsWrite.recordId, isLatestBaseState: false, method: DwnMethodName.Write }]);
56
+ const initialWrite = initialWriteQueryResult.messages[0];
57
+ delete initialWrite.encodedData; // defensive measure but technically optional because we do this when an update RecordsWrite takes place
58
+ recordsWrite.initialWrite = initialWrite;
71
59
  }
72
- return {
73
- status: { code: 200, detail: 'OK' },
74
- entries: recordsWrites,
75
- cursor
76
- };
77
- });
60
+ }
61
+ return {
62
+ status: { code: 200, detail: 'OK' },
63
+ entries: recordsWrites,
64
+ cursor
65
+ };
78
66
  }
79
67
  /**
80
68
  * Convert an incoming DateSort to a sort type accepted by MessageStore
@@ -104,14 +92,17 @@ export class RecordsQueryHandler {
104
92
  /**
105
93
  * Fetches the records as the owner of the DWN with no additional filtering.
106
94
  */
107
- fetchRecordsAsOwner(tenant, recordsQuery) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- const { dateSort, filter, pagination } = recordsQuery.message.descriptor;
110
- // fetch all published records matching the query
111
- const queryFilter = Object.assign(Object.assign({}, Records.convertFilter(filter, dateSort)), { interface: DwnInterfaceName.Records, method: DwnMethodName.Write, isLatestBaseState: true });
112
- const messageSort = this.convertDateSort(dateSort);
113
- return this.messageStore.query(tenant, [queryFilter], messageSort, pagination);
114
- });
95
+ async fetchRecordsAsOwner(tenant, recordsQuery) {
96
+ const { dateSort, filter, pagination } = recordsQuery.message.descriptor;
97
+ // fetch all published records matching the query
98
+ const queryFilter = {
99
+ ...Records.convertFilter(filter, dateSort),
100
+ interface: DwnInterfaceName.Records,
101
+ method: DwnMethodName.Write,
102
+ isLatestBaseState: true
103
+ };
104
+ const messageSort = this.convertDateSort(dateSort);
105
+ return this.deps.messageStore.query(tenant, [queryFilter], messageSort, pagination);
115
106
  }
116
107
  /**
117
108
  * Fetches the records as a non-owner.
@@ -132,43 +123,45 @@ export class RecordsQueryHandler {
132
123
  * 2. unpublished records authorized by a protocol rule.
133
124
  *
134
125
  */
135
- fetchRecordsAsNonOwner(tenant, recordsQuery) {
136
- return __awaiter(this, void 0, void 0, function* () {
137
- const { dateSort, pagination, filter } = recordsQuery.message.descriptor;
138
- const filters = [];
139
- if (Records.filterIncludesPublishedRecords(filter)) {
140
- filters.push(RecordsQueryHandler.buildPublishedRecordsFilter(recordsQuery));
126
+ async fetchRecordsAsNonOwner(tenant, recordsQuery) {
127
+ const { dateSort, pagination, filter } = recordsQuery.message.descriptor;
128
+ const filters = [];
129
+ if (Records.filterIncludesPublishedRecords(filter)) {
130
+ filters.push(RecordsQueryHandler.buildPublishedRecordsFilter(recordsQuery));
131
+ }
132
+ if (Records.filterIncludesUnpublishedRecords(filter)) {
133
+ if (Records.shouldBuildUnpublishedAuthorFilter(filter, recordsQuery.author)) {
134
+ filters.push(RecordsQueryHandler.buildUnpublishedRecordsByQueryAuthorFilter(recordsQuery));
141
135
  }
142
- if (Records.filterIncludesUnpublishedRecords(filter)) {
143
- if (Records.shouldBuildUnpublishedAuthorFilter(filter, recordsQuery.author)) {
144
- filters.push(RecordsQueryHandler.buildUnpublishedRecordsByQueryAuthorFilter(recordsQuery));
145
- }
146
- if (Records.shouldProtocolAuthorize(recordsQuery.signaturePayload)) {
147
- filters.push(RecordsQueryHandler.buildUnpublishedProtocolAuthorizedRecordsFilter(recordsQuery));
148
- }
149
- if (Records.shouldBuildUnpublishedRecipientFilter(filter, recordsQuery.author)) {
150
- filters.push(RecordsQueryHandler.buildUnpublishedRecordsForQueryAuthorFilter(recordsQuery));
151
- }
136
+ if (Records.shouldProtocolAuthorize(recordsQuery.signaturePayload)) {
137
+ filters.push(RecordsQueryHandler.buildUnpublishedProtocolAuthorizedRecordsFilter(recordsQuery));
138
+ }
139
+ if (Records.shouldBuildUnpublishedRecipientFilter(filter, recordsQuery.author)) {
140
+ filters.push(RecordsQueryHandler.buildUnpublishedRecordsForQueryAuthorFilter(recordsQuery));
152
141
  }
153
- const messageSort = this.convertDateSort(dateSort);
154
- return this.messageStore.query(tenant, filters, messageSort, pagination);
155
- });
142
+ }
143
+ const messageSort = this.convertDateSort(dateSort);
144
+ return this.deps.messageStore.query(tenant, filters, messageSort, pagination);
156
145
  }
157
146
  /**
158
147
  * Fetches only published records.
159
148
  */
160
- fetchPublishedRecords(tenant, recordsQuery) {
161
- return __awaiter(this, void 0, void 0, function* () {
162
- const { dateSort, pagination } = recordsQuery.message.descriptor;
163
- const filter = RecordsQueryHandler.buildPublishedRecordsFilter(recordsQuery);
164
- const messageSort = this.convertDateSort(dateSort);
165
- return this.messageStore.query(tenant, [filter], messageSort, pagination);
166
- });
149
+ async fetchPublishedRecords(tenant, recordsQuery) {
150
+ const { dateSort, pagination } = recordsQuery.message.descriptor;
151
+ const filter = RecordsQueryHandler.buildPublishedRecordsFilter(recordsQuery);
152
+ const messageSort = this.convertDateSort(dateSort);
153
+ return this.deps.messageStore.query(tenant, [filter], messageSort, pagination);
167
154
  }
168
155
  static buildPublishedRecordsFilter(recordsQuery) {
169
156
  const { dateSort, filter } = recordsQuery.message.descriptor;
170
157
  // fetch all published records matching the query
171
- return Object.assign(Object.assign({}, Records.convertFilter(filter, dateSort)), { interface: DwnInterfaceName.Records, method: DwnMethodName.Write, published: true, isLatestBaseState: true });
158
+ return {
159
+ ...Records.convertFilter(filter, dateSort),
160
+ interface: DwnInterfaceName.Records,
161
+ method: DwnMethodName.Write,
162
+ published: true,
163
+ isLatestBaseState: true
164
+ };
172
165
  }
173
166
  /**
174
167
  * Creates a filter for unpublished records that are intended for the query author (where `recipient` is the author).
@@ -176,7 +169,14 @@ export class RecordsQueryHandler {
176
169
  static buildUnpublishedRecordsForQueryAuthorFilter(recordsQuery) {
177
170
  const { dateSort, filter } = recordsQuery.message.descriptor;
178
171
  // include records where recipient is query author
179
- return Object.assign(Object.assign({}, Records.convertFilter(filter, dateSort)), { interface: DwnInterfaceName.Records, method: DwnMethodName.Write, recipient: recordsQuery.author, isLatestBaseState: true, published: false });
172
+ return {
173
+ ...Records.convertFilter(filter, dateSort),
174
+ interface: DwnInterfaceName.Records,
175
+ method: DwnMethodName.Write,
176
+ recipient: recordsQuery.author,
177
+ isLatestBaseState: true,
178
+ published: false
179
+ };
180
180
  }
181
181
  /**
182
182
  * Creates a filter for unpublished records that are within the specified protocol.
@@ -184,7 +184,13 @@ export class RecordsQueryHandler {
184
184
  */
185
185
  static buildUnpublishedProtocolAuthorizedRecordsFilter(recordsQuery) {
186
186
  const { dateSort, filter } = recordsQuery.message.descriptor;
187
- return Object.assign(Object.assign({}, Records.convertFilter(filter, dateSort)), { interface: DwnInterfaceName.Records, method: DwnMethodName.Write, isLatestBaseState: true, published: false });
187
+ return {
188
+ ...Records.convertFilter(filter, dateSort),
189
+ interface: DwnInterfaceName.Records,
190
+ method: DwnMethodName.Write,
191
+ isLatestBaseState: true,
192
+ published: false
193
+ };
188
194
  }
189
195
  /**
190
196
  * Creates a filter for only unpublished records where the author is the same as the query author.
@@ -192,23 +198,28 @@ export class RecordsQueryHandler {
192
198
  static buildUnpublishedRecordsByQueryAuthorFilter(recordsQuery) {
193
199
  const { dateSort, filter } = recordsQuery.message.descriptor;
194
200
  // include records where author is the same as the query author
195
- return Object.assign(Object.assign({}, Records.convertFilter(filter, dateSort)), { author: recordsQuery.author, interface: DwnInterfaceName.Records, method: DwnMethodName.Write, isLatestBaseState: true, published: false });
201
+ return {
202
+ ...Records.convertFilter(filter, dateSort),
203
+ author: recordsQuery.author,
204
+ interface: DwnInterfaceName.Records,
205
+ method: DwnMethodName.Write,
206
+ isLatestBaseState: true,
207
+ published: false
208
+ };
196
209
  }
197
210
  /**
198
211
  * @param messageStore Used to check if the grant has been revoked.
199
212
  */
200
- static authorizeRecordsQuery(tenant, recordsQuery, messageStore) {
201
- return __awaiter(this, void 0, void 0, function* () {
202
- if (Message.isSignedByAuthorDelegate(recordsQuery.message)) {
203
- yield recordsQuery.authorizeDelegate(messageStore);
204
- }
205
- // NOTE: not all RecordsQuery messages require protocol authorization even if the filter includes protocol-related fields,
206
- // this is because we dynamically filter out records that the caller is not authorized to see.
207
- // Currently only run protocol authorization if message deliberately invokes a protocol role.
208
- if (Records.shouldProtocolAuthorize(recordsQuery.signaturePayload)) {
209
- yield ProtocolAuthorization.authorizeQueryOrSubscribe(tenant, recordsQuery, messageStore);
210
- }
211
- });
213
+ static async authorizeRecordsQuery(tenant, recordsQuery, messageStore, coreProtocols) {
214
+ if (Message.isSignedByAuthorDelegate(recordsQuery.message)) {
215
+ await recordsQuery.authorizeDelegate(messageStore);
216
+ }
217
+ // NOTE: not all RecordsQuery messages require protocol authorization even if the filter includes protocol-related fields,
218
+ // this is because we dynamically filter out records that the caller is not authorized to see.
219
+ // Currently only run protocol authorization if message deliberately invokes a protocol role.
220
+ if (Records.shouldProtocolAuthorize(recordsQuery.signaturePayload)) {
221
+ await ProtocolAuthorization.authorizeQueryOrSubscribe(tenant, recordsQuery, messageStore, coreProtocols);
222
+ }
212
223
  }
213
224
  }
214
225
  //# sourceMappingURL=records-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"records-query.js","sourceRoot":"","sources":["../../../../src/handlers/records-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records-query.js","sourceRoot":"","sources":["../../../../src/handlers/records-query.ts"],"names":[],"mappings":"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"}
@@ -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 { authenticate } from '../core/auth.js';
11
2
  import { DataStream } from '../utils/data-stream.js';
12
3
  import { Encoder } from '../utils/encoder.js';
@@ -21,147 +12,154 @@ import { RecordsWrite } from '../interfaces/records-write.js';
21
12
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
22
13
  import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
23
14
  export class RecordsReadHandler {
24
- constructor(didResolver, messageStore, dataStore) {
25
- this.didResolver = didResolver;
26
- this.messageStore = messageStore;
27
- this.dataStore = dataStore;
15
+ deps;
16
+ constructor(deps) {
17
+ this.deps = deps;
28
18
  }
29
- handle(_a) {
30
- return __awaiter(this, arguments, void 0, function* ({ tenant, message }) {
31
- let recordsRead;
32
- try {
33
- recordsRead = yield RecordsRead.parse(message);
34
- }
35
- catch (e) {
36
- return messageReplyFromError(e, 400);
37
- }
38
- // authentication
19
+ async handle({ tenant, message }) {
20
+ let recordsRead;
21
+ try {
22
+ recordsRead = await RecordsRead.parse(message);
23
+ }
24
+ catch (e) {
25
+ return messageReplyFromError(e, 400);
26
+ }
27
+ // authentication
28
+ try {
29
+ if (recordsRead.author !== undefined) {
30
+ await authenticate(message.authorization, this.deps.didResolver);
31
+ }
32
+ }
33
+ catch (e) {
34
+ return messageReplyFromError(e, 401);
35
+ }
36
+ // get the latest active message matching the supplied filter, sorted and limited to 1 result
37
+ const query = {
38
+ // NOTE: we don't filter by `method` so that we get both RecordsWrite and RecordsDelete messages
39
+ interface: DwnInterfaceName.Records,
40
+ isLatestBaseState: true,
41
+ ...Records.convertFilter(message.descriptor.filter)
42
+ };
43
+ const messageSort = Records.convertDateSort(message.descriptor.dateSort);
44
+ const { messages: existingMessages } = await this.deps.messageStore.query(tenant, [query], messageSort, { limit: 1 });
45
+ if (existingMessages.length === 0) {
46
+ return {
47
+ status: { code: 404, detail: 'Not Found' }
48
+ };
49
+ }
50
+ const matchedMessage = existingMessages[0];
51
+ // If the matched message is a RecordsDelete, authorize against the newest RecordsWrite
52
+ // (for parity with the live-record path which authorizes against the latest write),
53
+ // then return 404 with both the RecordsDelete and the initial RecordsWrite.
54
+ if (matchedMessage.descriptor.method === DwnMethodName.Delete) {
55
+ const recordsDeleteMessage = matchedMessage;
56
+ const recordId = recordsDeleteMessage.descriptor.recordId;
57
+ const initialWrite = await RecordsWrite.fetchInitialRecordsWriteMessage(this.deps.messageStore, tenant, recordId);
58
+ if (initialWrite === undefined) {
59
+ return messageReplyFromError(new DwnError(DwnErrorCode.RecordsReadInitialWriteNotFound, 'initial write for deleted record not found'), 400);
60
+ }
61
+ // Authorize against the newest RecordsWrite so that mutable properties like `published`
62
+ // reflect the record's state at the time of deletion, not just the initial write.
63
+ let newestWrite;
39
64
  try {
40
- if (recordsRead.author !== undefined) {
41
- yield authenticate(message.authorization, this.didResolver);
42
- }
43
- }
44
- catch (e) {
45
- return messageReplyFromError(e, 401);
46
- }
47
- // get the latest active message matching the supplied filter, sorted and limited to 1 result
48
- const query = Object.assign({
49
- // NOTE: we don't filter by `method` so that we get both RecordsWrite and RecordsDelete messages
50
- interface: DwnInterfaceName.Records, isLatestBaseState: true }, Records.convertFilter(message.descriptor.filter));
51
- const messageSort = Records.convertDateSort(message.descriptor.dateSort);
52
- const { messages: existingMessages } = yield this.messageStore.query(tenant, [query], messageSort, { limit: 1 });
53
- if (existingMessages.length === 0) {
54
- return {
55
- status: { code: 404, detail: 'Not Found' }
56
- };
65
+ newestWrite = await RecordsWrite.fetchNewestRecordsWrite(this.deps.messageStore, tenant, recordId);
57
66
  }
58
- const matchedMessage = existingMessages[0];
59
- // if the matched message is a RecordsDelete, we mark the record as not-found and return both the RecordsDelete and the initial RecordsWrite
60
- // TODO: https://github.com/enboxorg/enbox/issues/819:
61
- // Consider performing authorization checks like when records exists before returning RecordsDelete and initial RecordsWrite of a deleted record
62
- if (matchedMessage.descriptor.method === DwnMethodName.Delete) {
63
- const recordsDeleteMessage = matchedMessage;
64
- const initialWrite = yield RecordsWrite.fetchInitialRecordsWriteMessage(this.messageStore, tenant, recordsDeleteMessage.descriptor.recordId);
65
- if (initialWrite === undefined) {
66
- return messageReplyFromError(new DwnError(DwnErrorCode.RecordsReadInitialWriteNotFound, 'Initial write for deleted record not found'), 400);
67
- }
68
- // Perform authorization before returning the delete and initial write messages
69
- const parsedInitialWrite = yield RecordsWrite.parse(initialWrite);
70
- try {
71
- yield RecordsReadHandler.authorizeRecordsRead(tenant, recordsRead, parsedInitialWrite, this.messageStore);
72
- }
73
- catch (error) {
74
- return messageReplyFromError(error, 401);
75
- }
76
- return {
77
- status: { code: 404, detail: 'Not Found' },
78
- entry: {
79
- recordsDelete: recordsDeleteMessage,
80
- initialWrite
81
- }
82
- };
67
+ catch {
68
+ // If newest write is not found (should not happen since initial write exists),
69
+ // fall back to the initial write for authorization.
70
+ newestWrite = initialWrite;
83
71
  }
84
- // else the matched message is a RecordsWrite
85
- const matchedRecordsWrite = matchedMessage;
72
+ const parsedNewestWrite = await RecordsWrite.parse(newestWrite);
86
73
  try {
87
- yield RecordsReadHandler.authorizeRecordsRead(tenant, recordsRead, yield RecordsWrite.parse(matchedRecordsWrite), this.messageStore);
74
+ await RecordsReadHandler.authorizeRecordsRead(tenant, recordsRead, parsedNewestWrite, this.deps.messageStore, this.deps.coreProtocols);
88
75
  }
89
76
  catch (error) {
90
77
  return messageReplyFromError(error, 401);
91
78
  }
92
- let data;
93
- if (matchedRecordsWrite.encodedData !== undefined) {
94
- const dataBytes = Encoder.base64UrlToBytes(matchedRecordsWrite.encodedData);
95
- data = DataStream.fromBytes(dataBytes);
96
- delete matchedRecordsWrite.encodedData;
97
- }
98
- else {
99
- const result = yield this.dataStore.get(tenant, matchedRecordsWrite.recordId, matchedRecordsWrite.descriptor.dataCid);
100
- if ((result === null || result === void 0 ? void 0 : result.dataStream) === undefined) {
101
- return {
102
- status: { code: 404, detail: 'Not Found' }
103
- };
104
- }
105
- data = result.dataStream;
106
- }
107
- const recordsReadReply = {
108
- status: { code: 200, detail: 'OK' },
79
+ return {
80
+ status: { code: 404, detail: 'Not Found' },
109
81
  entry: {
110
- recordsWrite: matchedRecordsWrite,
111
- data
82
+ recordsDelete: recordsDeleteMessage,
83
+ initialWrite,
112
84
  }
113
85
  };
114
- // attach initial write if latest RecordsWrite is not initial write
115
- if (!(yield RecordsWrite.isInitialWrite(matchedRecordsWrite))) {
116
- const initialWriteQueryResult = yield this.messageStore.query(tenant, [{ recordId: matchedRecordsWrite.recordId, isLatestBaseState: false, method: DwnMethodName.Write }]);
117
- const initialWrite = initialWriteQueryResult.messages[0];
118
- delete initialWrite.encodedData; // just defensive because technically should already be deleted when a later RecordsWrite is written
119
- recordsReadReply.entry.initialWrite = initialWrite;
86
+ }
87
+ // else the matched message is a RecordsWrite
88
+ const matchedRecordsWrite = matchedMessage;
89
+ try {
90
+ const parsedWrite = await RecordsWrite.parse(matchedRecordsWrite);
91
+ await RecordsReadHandler.authorizeRecordsRead(tenant, recordsRead, parsedWrite, this.deps.messageStore, this.deps.coreProtocols);
92
+ }
93
+ catch (error) {
94
+ return messageReplyFromError(error, 401);
95
+ }
96
+ let data;
97
+ if (matchedRecordsWrite.encodedData !== undefined) {
98
+ const dataBytes = Encoder.base64UrlToBytes(matchedRecordsWrite.encodedData);
99
+ data = DataStream.fromBytes(dataBytes);
100
+ delete matchedRecordsWrite.encodedData;
101
+ }
102
+ else {
103
+ const result = await this.deps.dataStore.get(tenant, matchedRecordsWrite.recordId, matchedRecordsWrite.descriptor.dataCid);
104
+ if (result?.dataStream === undefined) {
105
+ return {
106
+ status: { code: 404, detail: 'Not Found' }
107
+ };
120
108
  }
121
- return recordsReadReply;
122
- });
109
+ data = result.dataStream;
110
+ }
111
+ const recordsReadReply = {
112
+ status: { code: 200, detail: 'OK' },
113
+ entry: {
114
+ recordsWrite: matchedRecordsWrite,
115
+ data
116
+ }
117
+ };
118
+ // attach initial write if latest RecordsWrite is not initial write
119
+ if (!await RecordsWrite.isInitialWrite(matchedRecordsWrite)) {
120
+ const initialWriteQueryResult = await this.deps.messageStore.query(tenant, [{ recordId: matchedRecordsWrite.recordId, isLatestBaseState: false, method: DwnMethodName.Write }]);
121
+ const initialWrite = initialWriteQueryResult.messages[0];
122
+ delete initialWrite.encodedData; // just defensive because technically should already be deleted when a later RecordsWrite is written
123
+ recordsReadReply.entry.initialWrite = initialWrite;
124
+ }
125
+ return recordsReadReply;
123
126
  }
124
127
  ;
125
128
  /**
126
129
  * @param messageStore Used to check if the grant has been revoked.
127
130
  */
128
- static authorizeRecordsRead(tenant, recordsRead, matchedRecordsWrite, messageStore) {
129
- return __awaiter(this, void 0, void 0, function* () {
130
- if (Message.isSignedByAuthorDelegate(recordsRead.message)) {
131
- yield recordsRead.authorizeDelegate(matchedRecordsWrite.message, messageStore);
132
- }
133
- const { descriptor } = matchedRecordsWrite.message;
134
- // if author is the same as the target tenant, we can directly grant access
135
- if (recordsRead.author === tenant) {
136
- return;
137
- }
138
- else if (descriptor.published === true) {
139
- // authentication is not required for published data
140
- return;
141
- }
142
- else if (recordsRead.author !== undefined &&
143
- (recordsRead.author === descriptor.recipient || recordsRead.author === matchedRecordsWrite.author)) {
144
- // The recipient or author of a message may always read it
145
- return;
146
- }
147
- else if (recordsRead.author !== undefined && recordsRead.signaturePayload.permissionGrantId !== undefined) {
148
- const permissionGrant = yield PermissionsProtocol.fetchGrant(tenant, messageStore, recordsRead.signaturePayload.permissionGrantId);
149
- yield RecordsGrantAuthorization.authorizeRead({
150
- recordsReadMessage: recordsRead.message,
151
- recordsWriteMessageToBeRead: matchedRecordsWrite.message,
152
- expectedGrantor: tenant,
153
- expectedGrantee: recordsRead.author,
154
- permissionGrant,
155
- messageStore
156
- });
157
- }
158
- else if (descriptor.protocol !== undefined) {
159
- yield ProtocolAuthorization.authorizeRead(tenant, recordsRead, matchedRecordsWrite, messageStore);
160
- }
161
- else {
162
- throw new DwnError(DwnErrorCode.RecordsReadAuthorizationFailed, 'message failed authorization');
163
- }
164
- });
131
+ static async authorizeRecordsRead(tenant, recordsRead, matchedRecordsWrite, messageStore, coreProtocols) {
132
+ if (Message.isSignedByAuthorDelegate(recordsRead.message)) {
133
+ await recordsRead.authorizeDelegate(matchedRecordsWrite.message, messageStore);
134
+ }
135
+ const { descriptor } = matchedRecordsWrite.message;
136
+ // if author is the same as the target tenant, we can directly grant access
137
+ if (recordsRead.author === tenant) {
138
+ return;
139
+ }
140
+ else if (descriptor.published === true) {
141
+ // authentication is not required for published data
142
+ return;
143
+ }
144
+ else if (recordsRead.author !== undefined &&
145
+ (recordsRead.author === descriptor.recipient || recordsRead.author === matchedRecordsWrite.author)) {
146
+ // The recipient or author of a message may always read it
147
+ return;
148
+ }
149
+ else if (recordsRead.author !== undefined && recordsRead.signaturePayload.permissionGrantId !== undefined) {
150
+ const permissionGrant = await PermissionsProtocol.fetchGrant(tenant, messageStore, recordsRead.signaturePayload.permissionGrantId);
151
+ await RecordsGrantAuthorization.authorizeRead({
152
+ recordsReadMessage: recordsRead.message,
153
+ recordsWriteMessageToBeRead: matchedRecordsWrite.message,
154
+ expectedGrantor: tenant,
155
+ expectedGrantee: recordsRead.author,
156
+ permissionGrant,
157
+ messageStore
158
+ });
159
+ }
160
+ else {
161
+ await ProtocolAuthorization.authorizeRead(tenant, recordsRead, matchedRecordsWrite, messageStore, coreProtocols);
162
+ }
165
163
  }
166
164
  }
167
165
  //# sourceMappingURL=records-read.js.map