@enbox/dwn-sdk-js 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +1 -2
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/abstract-message.js +4 -0
  6. package/dist/esm/src/core/abstract-message.js.map +1 -1
  7. package/dist/esm/src/core/auth.js +22 -33
  8. package/dist/esm/src/core/auth.js.map +1 -1
  9. package/dist/esm/src/core/dwn-constant.js +7 -7
  10. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  11. package/dist/esm/src/core/dwn-error.js +1 -0
  12. package/dist/esm/src/core/dwn-error.js.map +1 -1
  13. package/dist/esm/src/core/grant-authorization.js +37 -52
  14. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/message.js +85 -116
  16. package/dist/esm/src/core/message.js.map +1 -1
  17. package/dist/esm/src/core/messages-grant-authorization.js +63 -78
  18. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  19. package/dist/esm/src/core/protocol-authorization-action.js +266 -0
  20. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
  21. package/dist/esm/src/core/protocol-authorization-validation.js +254 -0
  22. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
  23. package/dist/esm/src/core/protocol-authorization.js +122 -740
  24. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  25. package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
  26. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  27. package/dist/esm/src/core/record-chain.js +64 -0
  28. package/dist/esm/src/core/record-chain.js.map +1 -0
  29. package/dist/esm/src/core/records-grant-authorization.js +55 -72
  30. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  31. package/dist/esm/src/core/resumable-task-manager.js +50 -65
  32. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  33. package/dist/esm/src/core/tenant-gate.js +2 -13
  34. package/dist/esm/src/core/tenant-gate.js.map +1 -1
  35. package/dist/esm/src/dwn.js +69 -86
  36. package/dist/esm/src/dwn.js.map +1 -1
  37. package/dist/esm/src/event-stream/event-emitter-stream.js +17 -31
  38. package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -1
  39. package/dist/esm/src/handlers/messages-read.js +67 -77
  40. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  41. package/dist/esm/src/handlers/messages-subscribe.js +51 -61
  42. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  43. package/dist/esm/src/handlers/messages-sync.js +75 -85
  44. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  45. package/dist/esm/src/handlers/protocols-configure.js +135 -155
  46. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  47. package/dist/esm/src/handlers/protocols-query.js +52 -51
  48. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  49. package/dist/esm/src/handlers/records-count.js +96 -82
  50. package/dist/esm/src/handlers/records-count.js.map +1 -1
  51. package/dist/esm/src/handlers/records-delete.js +78 -88
  52. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  53. package/dist/esm/src/handlers/records-query.js +116 -101
  54. package/dist/esm/src/handlers/records-query.js.map +1 -1
  55. package/dist/esm/src/handlers/records-read.js +124 -131
  56. package/dist/esm/src/handlers/records-read.js.map +1 -1
  57. package/dist/esm/src/handlers/records-subscribe.js +150 -103
  58. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  59. package/dist/esm/src/handlers/records-write.js +250 -259
  60. package/dist/esm/src/handlers/records-write.js.map +1 -1
  61. package/dist/esm/src/interfaces/messages-read.js +24 -32
  62. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  63. package/dist/esm/src/interfaces/messages-subscribe.js +27 -41
  64. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  65. package/dist/esm/src/interfaces/messages-sync.js +26 -40
  66. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  67. package/dist/esm/src/interfaces/protocols-configure.js +63 -63
  68. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  69. package/dist/esm/src/interfaces/protocols-query.js +55 -68
  70. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  71. package/dist/esm/src/interfaces/records-count.js +50 -66
  72. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  73. package/dist/esm/src/interfaces/records-delete.js +45 -55
  74. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  75. package/dist/esm/src/interfaces/records-query.js +60 -76
  76. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-read.js +51 -67
  78. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-subscribe.js +52 -68
  80. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-write-query.js +102 -0
  82. package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
  83. package/dist/esm/src/interfaces/records-write-signing.js +92 -0
  84. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
  85. package/dist/esm/src/interfaces/records-write.js +407 -602
  86. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  87. package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
  88. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  89. package/dist/esm/src/jose/jws/general/builder.js +23 -35
  90. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  91. package/dist/esm/src/jose/jws/general/verifier.js +56 -69
  92. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  93. package/dist/esm/src/protocols/permission-grant.js +44 -15
  94. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  95. package/dist/esm/src/protocols/permission-request.js +29 -15
  96. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  97. package/dist/esm/src/protocols/permissions.js +216 -226
  98. package/dist/esm/src/protocols/permissions.js.map +1 -1
  99. package/dist/esm/src/smt/smt-store-level.js +42 -64
  100. package/dist/esm/src/smt/smt-store-level.js.map +1 -1
  101. package/dist/esm/src/smt/smt-store-memory.js +19 -45
  102. package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
  103. package/dist/esm/src/smt/smt-utils.js +28 -45
  104. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  105. package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
  106. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
  107. package/dist/esm/src/state-index/state-index-level.js +115 -150
  108. package/dist/esm/src/state-index/state-index-level.js.map +1 -1
  109. package/dist/esm/src/store/blockstore-level.js +54 -156
  110. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  111. package/dist/esm/src/store/blockstore-mock.js +48 -153
  112. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  113. package/dist/esm/src/store/data-store-level.js +59 -99
  114. package/dist/esm/src/store/data-store-level.js.map +1 -1
  115. package/dist/esm/src/store/index-level-compound.js +246 -0
  116. package/dist/esm/src/store/index-level-compound.js.map +1 -0
  117. package/dist/esm/src/store/index-level.js +295 -713
  118. package/dist/esm/src/store/index-level.js.map +1 -1
  119. package/dist/esm/src/store/level-wrapper.js +143 -244
  120. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  121. package/dist/esm/src/store/message-store-level.js +71 -94
  122. package/dist/esm/src/store/message-store-level.js.map +1 -1
  123. package/dist/esm/src/store/resumable-task-store-level.js +62 -101
  124. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
  125. package/dist/esm/src/store/storage-controller.js +129 -144
  126. package/dist/esm/src/store/storage-controller.js.map +1 -1
  127. package/dist/esm/src/utils/abort.js +8 -19
  128. package/dist/esm/src/utils/abort.js.map +1 -1
  129. package/dist/esm/src/utils/array.js +15 -49
  130. package/dist/esm/src/utils/array.js.map +1 -1
  131. package/dist/esm/src/utils/cid.js +29 -77
  132. package/dist/esm/src/utils/cid.js.map +1 -1
  133. package/dist/esm/src/utils/data-stream.js +37 -65
  134. package/dist/esm/src/utils/data-stream.js.map +1 -1
  135. package/dist/esm/src/utils/encryption.js +136 -162
  136. package/dist/esm/src/utils/encryption.js.map +1 -1
  137. package/dist/esm/src/utils/filter.js +1 -12
  138. package/dist/esm/src/utils/filter.js.map +1 -1
  139. package/dist/esm/src/utils/hd-key.js +45 -63
  140. package/dist/esm/src/utils/hd-key.js.map +1 -1
  141. package/dist/esm/src/utils/jws.js +9 -20
  142. package/dist/esm/src/utils/jws.js.map +1 -1
  143. package/dist/esm/src/utils/memory-cache.js +12 -23
  144. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  145. package/dist/esm/src/utils/messages.js +9 -3
  146. package/dist/esm/src/utils/messages.js.map +1 -1
  147. package/dist/esm/src/utils/private-key-signer.js +9 -17
  148. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  149. package/dist/esm/src/utils/protocols.js +62 -70
  150. package/dist/esm/src/utils/protocols.js.map +1 -1
  151. package/dist/esm/src/utils/records.js +108 -140
  152. package/dist/esm/src/utils/records.js.map +1 -1
  153. package/dist/esm/src/utils/secp256k1.js +60 -96
  154. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  155. package/dist/esm/src/utils/secp256r1.js +54 -71
  156. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  157. package/dist/esm/src/utils/time.js +5 -18
  158. package/dist/esm/src/utils/time.js.map +1 -1
  159. package/dist/esm/src/utils/url.js +3 -3
  160. package/dist/esm/src/utils/url.js.map +1 -1
  161. package/dist/esm/tests/core/auth.spec.js +3 -12
  162. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  163. package/dist/esm/tests/core/message.spec.js +50 -59
  164. package/dist/esm/tests/core/message.spec.js.map +1 -1
  165. package/dist/esm/tests/core/protocol-authorization.spec.js +9 -18
  166. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  167. package/dist/esm/tests/dwn.spec.js +45 -58
  168. package/dist/esm/tests/dwn.spec.js.map +1 -1
  169. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +24 -33
  170. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -1
  171. package/dist/esm/tests/event-stream/event-stream.spec.js +46 -55
  172. package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -1
  173. package/dist/esm/tests/features/author-delegated-grant.spec.js +326 -343
  174. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  175. package/dist/esm/tests/features/owner-delegated-grant.spec.js +153 -169
  176. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  177. package/dist/esm/tests/features/owner-signature.spec.js +67 -78
  178. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  179. package/dist/esm/tests/features/permissions.spec.js +446 -181
  180. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  181. package/dist/esm/tests/features/protocol-composition.spec.js +346 -356
  182. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  183. package/dist/esm/tests/features/protocol-create-action.spec.js +42 -51
  184. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  185. package/dist/esm/tests/features/protocol-delete-action.spec.js +94 -103
  186. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  187. package/dist/esm/tests/features/protocol-update-action.spec.js +105 -114
  188. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  189. package/dist/esm/tests/features/records-prune.spec.js +175 -191
  190. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  191. package/dist/esm/tests/features/records-tags.spec.js +441 -460
  192. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  193. package/dist/esm/tests/features/resumable-tasks.spec.js +82 -91
  194. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  195. package/dist/esm/tests/handlers/messages-read.spec.js +206 -207
  196. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  197. package/dist/esm/tests/handlers/messages-subscribe.spec.js +145 -154
  198. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  199. package/dist/esm/tests/handlers/messages-sync.spec.js +174 -183
  200. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  201. package/dist/esm/tests/handlers/protocols-configure.spec.js +244 -238
  202. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  203. package/dist/esm/tests/handlers/protocols-query.spec.js +156 -169
  204. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  205. package/dist/esm/tests/handlers/records-count.spec.js +93 -102
  206. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  207. package/dist/esm/tests/handlers/records-delete.spec.js +252 -264
  208. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  209. package/dist/esm/tests/handlers/records-query.spec.js +917 -988
  210. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  211. package/dist/esm/tests/handlers/records-read.spec.js +553 -568
  212. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  213. package/dist/esm/tests/handlers/records-subscribe.spec.js +269 -278
  214. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  215. package/dist/esm/tests/handlers/records-write.spec.js +1057 -1082
  216. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  217. package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
  218. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  219. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
  220. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  221. package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
  222. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  223. package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
  224. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  225. package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
  226. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  227. package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
  228. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  229. package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
  230. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  231. package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
  232. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  233. package/dist/esm/tests/interfaces/records-write.spec.js +152 -165
  234. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  235. package/dist/esm/tests/jose/jws/general.spec.js +36 -45
  236. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  237. package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
  238. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
  239. package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
  240. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  241. package/dist/esm/tests/protocols/permissions.spec.js +49 -55
  242. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  243. package/dist/esm/tests/scenarios/aggregator.spec.js +124 -135
  244. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  245. package/dist/esm/tests/scenarios/deleted-record.spec.js +23 -32
  246. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  247. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +52 -61
  248. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  249. package/dist/esm/tests/scenarios/nested-roles.spec.js +63 -73
  250. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  251. package/dist/esm/tests/scenarios/subscriptions.spec.js +377 -333
  252. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  253. package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
  254. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
  255. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
  256. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
  257. package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
  258. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
  259. package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
  260. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  261. package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
  262. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  263. package/dist/esm/tests/store/data-store-level.spec.js +86 -95
  264. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  265. package/dist/esm/tests/store/index-level.spec.js +404 -414
  266. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  267. package/dist/esm/tests/store/message-store-level.spec.js +13 -22
  268. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  269. package/dist/esm/tests/store/message-store.spec.js +229 -238
  270. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  271. package/dist/esm/tests/test-event-stream.js +3 -3
  272. package/dist/esm/tests/test-event-stream.js.map +1 -1
  273. package/dist/esm/tests/test-stores.js +16 -13
  274. package/dist/esm/tests/test-stores.js.map +1 -1
  275. package/dist/esm/tests/test-suite.js +2 -11
  276. package/dist/esm/tests/test-suite.js.map +1 -1
  277. package/dist/esm/tests/utils/cid.spec.js +24 -33
  278. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  279. package/dist/esm/tests/utils/data-stream.spec.js +48 -57
  280. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  281. package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
  282. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  283. package/dist/esm/tests/utils/encryption.spec.js +291 -44
  284. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  285. package/dist/esm/tests/utils/filters.spec.js +46 -55
  286. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  287. package/dist/esm/tests/utils/hd-key.spec.js +10 -19
  288. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  289. package/dist/esm/tests/utils/jws.spec.js +3 -12
  290. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  291. package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
  292. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  293. package/dist/esm/tests/utils/messages.spec.js +6 -15
  294. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  295. package/dist/esm/tests/utils/poller.js +22 -33
  296. package/dist/esm/tests/utils/poller.js.map +1 -1
  297. package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
  298. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  299. package/dist/esm/tests/utils/records.spec.js +10 -19
  300. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  301. package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
  302. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  303. package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
  304. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  305. package/dist/esm/tests/utils/test-data-generator.js +414 -468
  306. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  307. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
  308. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  309. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
  310. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  311. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
  312. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  313. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
  314. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  315. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
  316. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  317. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
  318. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  319. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
  320. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
  321. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +7 -16
  322. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  323. package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
  324. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
  325. package/dist/types/src/core/protocol-authorization-validation.d.ts +60 -0
  326. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
  327. package/dist/types/src/core/protocol-authorization.d.ts +10 -100
  328. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  329. package/dist/types/src/core/record-chain.d.ts +24 -0
  330. package/dist/types/src/core/record-chain.d.ts.map +1 -0
  331. package/dist/types/src/handlers/records-write.d.ts +2 -1
  332. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  333. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  334. package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
  335. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
  336. package/dist/types/src/interfaces/records-write-signing.d.ts +35 -0
  337. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
  338. package/dist/types/src/interfaces/records-write.d.ts +10 -44
  339. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  340. package/dist/types/src/store/index-level-compound.d.ts +70 -0
  341. package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
  342. package/dist/types/src/store/index-level.d.ts +0 -58
  343. package/dist/types/src/store/index-level.d.ts.map +1 -1
  344. package/dist/types/src/utils/protocols.d.ts +5 -0
  345. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  346. package/dist/types/src/utils/records.d.ts +3 -1
  347. package/dist/types/src/utils/records.d.ts.map +1 -1
  348. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  349. package/package.json +3 -3
  350. package/src/core/protocol-authorization-action.ts +377 -0
  351. package/src/core/protocol-authorization-validation.ts +391 -0
  352. package/src/core/protocol-authorization.ts +60 -849
  353. package/src/core/record-chain.ts +99 -0
  354. package/src/handlers/records-read.ts +1 -1
  355. package/src/handlers/records-write.ts +37 -21
  356. package/src/interfaces/protocols-configure.ts +33 -5
  357. package/src/interfaces/records-write-query.ts +139 -0
  358. package/src/interfaces/records-write-signing.ts +143 -0
  359. package/src/interfaces/records-write.ts +49 -221
  360. package/src/store/index-level-compound.ts +324 -0
  361. package/src/store/index-level.ts +24 -306
  362. package/src/utils/protocols.ts +8 -0
  363. package/src/utils/records.ts +9 -15
@@ -1 +1 @@
1
- {"version":3,"file":"records-query.js","sourceRoot":"","sources":["../../../../src/interfaces/records-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records-query.js","sourceRoot":"","sources":["../../../../src/interfaces/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 { AbstractMessage } from '../core/abstract-message.js';
11
2
  import { DateSort } from '../types/records-types.js';
12
3
  import { Message } from '../core/message.js';
@@ -18,22 +9,20 @@ import { Time } from '../utils/time.js';
18
9
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
19
10
  import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
20
11
  export class RecordsRead extends AbstractMessage {
21
- static parse(message) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- if (message.descriptor.filter.published === false) {
24
- if (message.descriptor.dateSort === DateSort.PublishedAscending || message.descriptor.dateSort === DateSort.PublishedDescending) {
25
- throw new DwnError(DwnErrorCode.RecordsReadParseFilterPublishedSortInvalid, `reads must not filter for \`published:false\` and sort by ${message.descriptor.dateSort}`);
26
- }
12
+ static async parse(message) {
13
+ if (message.descriptor.filter.published === false) {
14
+ if (message.descriptor.dateSort === DateSort.PublishedAscending || message.descriptor.dateSort === DateSort.PublishedDescending) {
15
+ throw new DwnError(DwnErrorCode.RecordsReadParseFilterPublishedSortInvalid, `reads must not filter for \`published:false\` and sort by ${message.descriptor.dateSort}`);
27
16
  }
28
- let signaturePayload;
29
- if (message.authorization !== undefined) {
30
- signaturePayload = yield Message.validateSignatureStructure(message.authorization.signature, message.descriptor);
31
- }
32
- yield Records.validateDelegatedGrantReferentialIntegrity(message, signaturePayload);
33
- Time.validateTimestamp(message.descriptor.messageTimestamp);
34
- const recordsRead = new RecordsRead(message);
35
- return recordsRead;
36
- });
17
+ }
18
+ let signaturePayload;
19
+ if (message.authorization !== undefined) {
20
+ signaturePayload = await Message.validateSignatureStructure(message.authorization.signature, message.descriptor);
21
+ }
22
+ await Records.validateDelegatedGrantReferentialIntegrity(message, signaturePayload);
23
+ Time.validateTimestamp(message.descriptor.messageTimestamp);
24
+ const recordsRead = new RecordsRead(message);
25
+ return recordsRead;
37
26
  }
38
27
  /**
39
28
  * Creates a RecordsRead message.
@@ -42,56 +31,51 @@ export class RecordsRead extends AbstractMessage {
42
31
  *
43
32
  * @throws {DwnError} when a combination of required RecordsReadOptions are missing
44
33
  */
45
- static create(options) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- var _a;
48
- const { filter, signer, permissionGrantId, protocolRole, dateSort } = options;
49
- const currentTime = Time.getCurrentTimestamp();
50
- if (options.filter.published === false) {
51
- if (dateSort === DateSort.PublishedAscending || dateSort === DateSort.PublishedDescending) {
52
- throw new DwnError(DwnErrorCode.RecordsReadCreateFilterPublishedSortInvalid, `reads must not filter for \`published:false\` and sort by ${dateSort}`);
53
- }
34
+ static async create(options) {
35
+ const { filter, signer, permissionGrantId, protocolRole, dateSort } = options;
36
+ const currentTime = Time.getCurrentTimestamp();
37
+ if (options.filter.published === false) {
38
+ if (dateSort === DateSort.PublishedAscending || dateSort === DateSort.PublishedDescending) {
39
+ throw new DwnError(DwnErrorCode.RecordsReadCreateFilterPublishedSortInvalid, `reads must not filter for \`published:false\` and sort by ${dateSort}`);
54
40
  }
55
- const descriptor = {
56
- interface: DwnInterfaceName.Records,
57
- method: DwnMethodName.Read,
58
- filter: Records.normalizeFilter(filter),
59
- messageTimestamp: (_a = options.messageTimestamp) !== null && _a !== void 0 ? _a : currentTime,
41
+ }
42
+ const descriptor = {
43
+ interface: DwnInterfaceName.Records,
44
+ method: DwnMethodName.Read,
45
+ filter: Records.normalizeFilter(filter),
46
+ messageTimestamp: options.messageTimestamp ?? currentTime,
47
+ permissionGrantId,
48
+ dateSort,
49
+ };
50
+ removeUndefinedProperties(descriptor);
51
+ // only generate the `authorization` property if signature input is given
52
+ let authorization = undefined;
53
+ if (signer !== undefined) {
54
+ authorization = await Message.createAuthorization({
55
+ descriptor,
56
+ signer,
60
57
  permissionGrantId,
61
- dateSort,
62
- };
63
- removeUndefinedProperties(descriptor);
64
- // only generate the `authorization` property if signature input is given
65
- let authorization = undefined;
66
- if (signer !== undefined) {
67
- authorization = yield Message.createAuthorization({
68
- descriptor,
69
- signer,
70
- permissionGrantId,
71
- protocolRole,
72
- delegatedGrant: options.delegatedGrant
73
- });
74
- }
75
- const message = { descriptor, authorization };
76
- Message.validateJsonSchema(message);
77
- return new RecordsRead(message);
78
- });
58
+ protocolRole,
59
+ delegatedGrant: options.delegatedGrant
60
+ });
61
+ }
62
+ const message = { descriptor, authorization };
63
+ Message.validateJsonSchema(message);
64
+ return new RecordsRead(message);
79
65
  }
80
66
  /**
81
67
  * Authorizes the delegate who signed this message.
82
68
  * @param messageStore Used to check if the grant has been revoked.
83
69
  */
84
- authorizeDelegate(matchedRecordsWrite, messageStore) {
85
- return __awaiter(this, void 0, void 0, function* () {
86
- const delegatedGrant = yield PermissionGrant.parse(this.message.authorization.authorDelegatedGrant);
87
- yield RecordsGrantAuthorization.authorizeRead({
88
- recordsReadMessage: this.message,
89
- recordsWriteMessageToBeRead: matchedRecordsWrite,
90
- expectedGrantor: this.author,
91
- expectedGrantee: this.signer,
92
- permissionGrant: delegatedGrant,
93
- messageStore
94
- });
70
+ async authorizeDelegate(matchedRecordsWrite, messageStore) {
71
+ const delegatedGrant = await PermissionGrant.parse(this.message.authorization.authorDelegatedGrant);
72
+ await RecordsGrantAuthorization.authorizeRead({
73
+ recordsReadMessage: this.message,
74
+ recordsWriteMessageToBeRead: matchedRecordsWrite,
75
+ expectedGrantor: this.author,
76
+ expectedGrantee: this.signer,
77
+ permissionGrant: delegatedGrant,
78
+ messageStore
95
79
  });
96
80
  }
97
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"records-read.js","sourceRoot":"","sources":["../../../../src/interfaces/records-read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records-read.js","sourceRoot":"","sources":["../../../../src/interfaces/records-read.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAoBnF,MAAM,OAAO,WAAY,SAAQ,eAAmC;IAE3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAA2B;QACnD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAClD,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBAChI,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,0CAA0C,EACvD,6DAA6D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAC3F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,CAAC;QACrB,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACxC,gBAAgB,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACnH,CAAC;QAED,MAAM,OAAO,CAAC,0CAA0C,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAEpF,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAE5D,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAA2B;QACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE/C,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACvC,IAAI,QAAQ,KAAK,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,KAAK,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBAC1F,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,2CAA2C,EACxD,6DAA6D,QAAQ,EAAE,CACxE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAA0B;YACxC,SAAS,EAAU,gBAAgB,CAAC,OAAO;YAC3C,MAAM,EAAa,aAAa,CAAC,IAAI;YACrC,MAAM,EAAa,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC;YAClD,gBAAgB,EAAG,OAAO,CAAC,gBAAgB,IAAI,WAAW;YAC1D,iBAAiB;YACjB,QAAQ;SACT,CAAC;QAEF,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAEtC,yEAAyE;QACzE,IAAI,aAAa,GAAG,SAAS,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,aAAa,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC;gBAChD,UAAU;gBACV,MAAM;gBACN,iBAAiB;gBACjB,YAAY;gBACZ,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAuB,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QAElE,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEpC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB,CAAC,mBAAwC,EAAE,YAA0B;QACjG,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAc,CAAC,oBAAqB,CAAC,CAAC;QACtG,MAAM,yBAAyB,CAAC,aAAa,CAAC;YAC5C,kBAAkB,EAAY,IAAI,CAAC,OAAO;YAC1C,2BAA2B,EAAG,mBAAmB;YACjD,eAAe,EAAe,IAAI,CAAC,MAAO;YAC1C,eAAe,EAAe,IAAI,CAAC,MAAO;YAC1C,eAAe,EAAe,cAAc;YAC5C,YAAY;SACb,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -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 { AbstractMessage } from '../core/abstract-message.js';
11
2
  import { Message } from '../core/message.js';
12
3
  import { PermissionGrant } from '../protocols/permission-grant.js';
@@ -21,72 +12,65 @@ import { validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../u
21
12
  * A class representing a RecordsSubscribe DWN message.
22
13
  */
23
14
  export class RecordsSubscribe extends AbstractMessage {
24
- static parse(message) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- let signaturePayload;
27
- if (message.authorization !== undefined) {
28
- signaturePayload = yield Message.validateSignatureStructure(message.authorization.signature, message.descriptor);
15
+ static async parse(message) {
16
+ let signaturePayload;
17
+ if (message.authorization !== undefined) {
18
+ signaturePayload = await Message.validateSignatureStructure(message.authorization.signature, message.descriptor);
19
+ }
20
+ await Records.validateDelegatedGrantReferentialIntegrity(message, signaturePayload);
21
+ if (signaturePayload?.protocolRole !== undefined) {
22
+ if (message.descriptor.filter.protocolPath === undefined) {
23
+ throw new DwnError(DwnErrorCode.RecordsSubscribeFilterMissingRequiredProperties, 'Role-authorized subscriptions must include `protocolPath` in the filter');
29
24
  }
30
- yield Records.validateDelegatedGrantReferentialIntegrity(message, signaturePayload);
31
- if ((signaturePayload === null || signaturePayload === void 0 ? void 0 : signaturePayload.protocolRole) !== undefined) {
32
- if (message.descriptor.filter.protocolPath === undefined) {
33
- throw new DwnError(DwnErrorCode.RecordsSubscribeFilterMissingRequiredProperties, 'Role-authorized subscriptions must include `protocolPath` in the filter');
34
- }
35
- }
36
- if (message.descriptor.filter.protocol !== undefined) {
37
- validateProtocolUrlNormalized(message.descriptor.filter.protocol);
38
- }
39
- if (message.descriptor.filter.schema !== undefined) {
40
- validateSchemaUrlNormalized(message.descriptor.filter.schema);
41
- }
42
- Time.validateTimestamp(message.descriptor.messageTimestamp);
43
- return new RecordsSubscribe(message);
44
- });
25
+ }
26
+ if (message.descriptor.filter.protocol !== undefined) {
27
+ validateProtocolUrlNormalized(message.descriptor.filter.protocol);
28
+ }
29
+ if (message.descriptor.filter.schema !== undefined) {
30
+ validateSchemaUrlNormalized(message.descriptor.filter.schema);
31
+ }
32
+ Time.validateTimestamp(message.descriptor.messageTimestamp);
33
+ return new RecordsSubscribe(message);
45
34
  }
46
- static create(options) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- var _a;
49
- const descriptor = {
50
- interface: DwnInterfaceName.Records,
51
- method: DwnMethodName.Subscribe,
52
- messageTimestamp: (_a = options.messageTimestamp) !== null && _a !== void 0 ? _a : Time.getCurrentTimestamp(),
53
- filter: Records.normalizeFilter(options.filter),
54
- dateSort: options.dateSort,
55
- pagination: options.pagination,
56
- };
57
- // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:
58
- // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded
59
- removeUndefinedProperties(descriptor);
60
- // only generate the `authorization` property if signature input is given
61
- const signer = options.signer;
62
- let authorization;
63
- if (signer) {
64
- authorization = yield Message.createAuthorization({
65
- descriptor,
66
- signer,
67
- protocolRole: options.protocolRole,
68
- delegatedGrant: options.delegatedGrant
69
- });
70
- }
71
- const message = { descriptor, authorization };
72
- Message.validateJsonSchema(message);
73
- return new RecordsSubscribe(message);
74
- });
35
+ static async create(options) {
36
+ const descriptor = {
37
+ interface: DwnInterfaceName.Records,
38
+ method: DwnMethodName.Subscribe,
39
+ messageTimestamp: options.messageTimestamp ?? Time.getCurrentTimestamp(),
40
+ filter: Records.normalizeFilter(options.filter),
41
+ dateSort: options.dateSort,
42
+ pagination: options.pagination,
43
+ };
44
+ // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:
45
+ // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded
46
+ removeUndefinedProperties(descriptor);
47
+ // only generate the `authorization` property if signature input is given
48
+ const signer = options.signer;
49
+ let authorization;
50
+ if (signer) {
51
+ authorization = await Message.createAuthorization({
52
+ descriptor,
53
+ signer,
54
+ protocolRole: options.protocolRole,
55
+ delegatedGrant: options.delegatedGrant
56
+ });
57
+ }
58
+ const message = { descriptor, authorization };
59
+ Message.validateJsonSchema(message);
60
+ return new RecordsSubscribe(message);
75
61
  }
76
62
  /**
77
63
  * Authorizes the delegate who signed the message.
78
64
  * @param messageStore Used to check if the grant has been revoked.
79
65
  */
80
- authorizeDelegate(messageStore) {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- const delegatedGrant = yield PermissionGrant.parse(this.message.authorization.authorDelegatedGrant);
83
- yield RecordsGrantAuthorization.authorizeQueryOrSubscribe({
84
- incomingMessage: this.message,
85
- expectedGrantor: this.author,
86
- expectedGrantee: this.signer,
87
- permissionGrant: delegatedGrant,
88
- messageStore
89
- });
66
+ async authorizeDelegate(messageStore) {
67
+ const delegatedGrant = await PermissionGrant.parse(this.message.authorization.authorDelegatedGrant);
68
+ await RecordsGrantAuthorization.authorizeQueryOrSubscribe({
69
+ incomingMessage: this.message,
70
+ expectedGrantor: this.author,
71
+ expectedGrantee: this.signer,
72
+ permissionGrant: delegatedGrant,
73
+ messageStore
90
74
  });
91
75
  }
92
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"records-subscribe.js","sourceRoot":"","sources":["../../../../src/interfaces/records-subscribe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records-subscribe.js","sourceRoot":"","sources":["../../../../src/interfaces/records-subscribe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { Jws } from '../utils/jws.js';
2
+ import { Message } from '../core/message.js';
3
+ import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
4
+ import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
5
+ // Late-bound import to avoid circular dependency at module-evaluation time.
6
+ // `RecordsWrite` imports this module; this module needs `RecordsWrite.isInitialWrite` and `.parse`.
7
+ let _RecordsWriteClass;
8
+ async function getRecordsWrite() {
9
+ if (!_RecordsWriteClass) {
10
+ const mod = await import('./records-write.js');
11
+ _RecordsWriteClass = mod.RecordsWrite;
12
+ }
13
+ return _RecordsWriteClass;
14
+ }
15
+ /**
16
+ * Gets the initial write from the given list of messages.
17
+ */
18
+ export async function getInitialWrite(messages) {
19
+ const RW = await getRecordsWrite();
20
+ for (const message of messages) {
21
+ if (await RW.isInitialWrite(message)) {
22
+ return message;
23
+ }
24
+ }
25
+ throw new DwnError(DwnErrorCode.RecordsWriteGetInitialWriteNotFound, `Initial write is not found.`);
26
+ }
27
+ /**
28
+ * Verifies that immutable properties of the two given messages are identical.
29
+ * @throws {DwnError} if immutable properties between two RecordsWrite messages differ.
30
+ */
31
+ export function verifyEqualityOfImmutableProperties(existingWriteMessage, newMessage) {
32
+ const mutableDescriptorProperties = ['dataCid', 'dataSize', 'dataFormat', 'datePublished', 'published', 'messageTimestamp', 'tags'];
33
+ // get distinct property names that exist in either the existing message given or new message
34
+ let descriptorPropertyNames = [];
35
+ descriptorPropertyNames.push(...Object.keys(existingWriteMessage.descriptor));
36
+ descriptorPropertyNames.push(...Object.keys(newMessage.descriptor));
37
+ descriptorPropertyNames = [...new Set(descriptorPropertyNames)]; // step to remove duplicates
38
+ // ensure all immutable properties are not modified
39
+ for (const descriptorPropertyName of descriptorPropertyNames) {
40
+ // if property is supposed to be immutable
41
+ if (mutableDescriptorProperties.indexOf(descriptorPropertyName) === -1) {
42
+ const valueInExistingWrite = existingWriteMessage.descriptor[descriptorPropertyName];
43
+ const valueInNewMessage = newMessage.descriptor[descriptorPropertyName];
44
+ if (valueInNewMessage !== valueInExistingWrite) {
45
+ throw new DwnError(DwnErrorCode.RecordsWriteImmutablePropertyChanged, `${descriptorPropertyName} is an immutable property: cannot change '${valueInExistingWrite}' to '${valueInNewMessage}'`);
46
+ }
47
+ }
48
+ }
49
+ return true;
50
+ }
51
+ /**
52
+ * Gets the DID of the attesters of the given message.
53
+ */
54
+ export function getAttesters(message) {
55
+ const attestationSignatures = message.attestation?.signatures ?? [];
56
+ const attesters = attestationSignatures.map((signature) => Jws.getSignerDid(signature));
57
+ return attesters;
58
+ }
59
+ /**
60
+ * Fetches the newest RecordsWrite for a given recordId from the message store.
61
+ * @throws {DwnError} if no write is found.
62
+ */
63
+ export async function fetchNewestRecordsWrite(messageStore, tenant, recordId) {
64
+ // get existing RecordsWrite messages matching the `recordId`
65
+ const query = {
66
+ interface: DwnInterfaceName.Records,
67
+ method: DwnMethodName.Write,
68
+ recordId: recordId
69
+ };
70
+ const { messages: existingMessages } = await messageStore.query(tenant, [query]);
71
+ const newestWrite = await Message.getNewestMessage(existingMessages);
72
+ if (newestWrite !== undefined) {
73
+ return newestWrite;
74
+ }
75
+ throw new DwnError(DwnErrorCode.RecordsWriteGetNewestWriteRecordNotFound, 'record not found');
76
+ }
77
+ /**
78
+ * Fetches the initial RecordsWrite of a record.
79
+ * @returns The initial RecordsWrite if found; `undefined` otherwise.
80
+ */
81
+ export async function fetchInitialRecordsWrite(messageStore, tenant, recordId) {
82
+ const initialRecordsWriteMessage = await fetchInitialRecordsWriteMessage(messageStore, tenant, recordId);
83
+ if (initialRecordsWriteMessage === undefined) {
84
+ return undefined;
85
+ }
86
+ const RW = await getRecordsWrite();
87
+ const initialRecordsWrite = await RW.parse(initialRecordsWriteMessage);
88
+ return initialRecordsWrite;
89
+ }
90
+ /**
91
+ * Fetches the initial RecordsWrite message of a record.
92
+ * @returns The initial RecordsWriteMessage if found; `undefined` otherwise.
93
+ */
94
+ export async function fetchInitialRecordsWriteMessage(messageStore, tenant, recordId) {
95
+ const query = { entryId: recordId };
96
+ const { messages } = await messageStore.query(tenant, [query]);
97
+ if (messages.length === 0) {
98
+ return undefined;
99
+ }
100
+ return messages[0];
101
+ }
102
+ //# sourceMappingURL=records-write-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records-write-query.js","sourceRoot":"","sources":["../../../../src/interfaces/records-write-query.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEnF,4EAA4E;AAC5E,oGAAoG;AACpG,IAAI,kBAAuC,CAAC;AAC5C,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC/C,kBAAkB,GAAG,GAAG,CAAC,YAAY,CAAC;IACxC,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAA0B;IAC9D,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,OAA8B,CAAC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,mCAAmC,EAAE,6BAA6B,CAAC,CAAC;AACtG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CACjD,oBAAyC,EAAE,UAA+B;IAE1E,MAAM,2BAA2B,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAEpI,6FAA6F;IAC7F,IAAI,uBAAuB,GAAa,EAAE,CAAC;IAC3C,uBAAuB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,uBAAuB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,uBAAuB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAE7F,mDAAmD;IACnD,KAAK,MAAM,sBAAsB,IAAI,uBAAuB,EAAE,CAAC;QAC7D,0CAA0C;QAC1C,IAAI,2BAA2B,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,oBAAoB,GAAI,oBAAoB,CAAC,UAAsC,CAAC,sBAAsB,CAAC,CAAC;YAClH,MAAM,iBAAiB,GAAI,UAAU,CAAC,UAAsC,CAAC,sBAAsB,CAAC,CAAC;YACrG,IAAI,iBAAiB,KAAK,oBAAoB,EAAE,CAAC;gBAC/C,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oCAAoC,EACjD,GAAG,sBAAsB,6CAA6C,oBAAoB,SAAS,iBAAiB,GAAG,CACxH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAoC;IAC/D,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;IACpE,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAU,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,YAA0B,EAC1B,MAAc,EACd,QAAgB;IAEhB,6DAA6D;IAC7D,MAAM,KAAK,GAAG;QACZ,SAAS,EAAG,gBAAgB,CAAC,OAAO;QACpC,MAAM,EAAM,aAAa,CAAC,KAAK;QAC/B,QAAQ,EAAI,QAAQ;KACrB,CAAC;IAEF,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAE,KAAK,CAAE,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACrE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,WAAkC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,wCAAwC,EAAE,kBAAkB,CAAC,CAAC;AAChG,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,YAA0B,EAC1B,MAAc,EACd,QAAgB;IAEhB,MAAM,0BAA0B,GAAG,MAAM,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzG,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;IACnC,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvE,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,YAA0B,EAC1B,MAAc,EACd,QAAgB;IAEhB,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAwB,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { Cid } from '../utils/cid.js';
2
+ import { Encoder } from '../utils/encoder.js';
3
+ import { Encryption } from '../utils/encryption.js';
4
+ import { GeneralJwsBuilder } from '../jose/jws/general/builder.js';
5
+ import { Jws } from '../utils/jws.js';
6
+ import { KeyDerivationScheme } from '../utils/hd-key.js';
7
+ import { removeUndefinedProperties } from '../utils/object.js';
8
+ import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
9
+ /**
10
+ * Creates the JWE `encryption` property if encryption input is given. Else `undefined` is returned.
11
+ * Uses ECDH-ES+A256KW key agreement with X25519 and AEAD content encryption (A256GCM or XC20P).
12
+ * @param descriptor Descriptor of the `RecordsWrite` message which contains the information needed by key path derivation schemes.
13
+ * @param encryptionInput The encryption input containing CEK, IV, authentication tag, and recipient key encryption inputs.
14
+ */
15
+ export async function createEncryptionProperty(descriptor, encryptionInput) {
16
+ if (encryptionInput === undefined) {
17
+ return undefined;
18
+ }
19
+ // Validate derivation scheme prerequisites
20
+ for (const keyEncryptionInput of encryptionInput.keyEncryptionInputs) {
21
+ if (keyEncryptionInput.derivationScheme === KeyDerivationScheme.ProtocolPath && descriptor.protocol === undefined) {
22
+ throw new DwnError(DwnErrorCode.RecordsWriteMissingProtocol, '`protocols` encryption scheme cannot be applied to record without the `protocol` property.');
23
+ }
24
+ if (keyEncryptionInput.derivationScheme === KeyDerivationScheme.Schemas && descriptor.schema === undefined) {
25
+ throw new DwnError(DwnErrorCode.RecordsWriteMissingSchema, '`schemas` encryption scheme cannot be applied to record without the `schema` property.');
26
+ }
27
+ }
28
+ // Build the JWE structure. The authentication tag comes from the AEAD encryption of record data.
29
+ const jwe = await Encryption.buildJwe(encryptionInput, encryptionInput.authenticationTag);
30
+ return jwe;
31
+ }
32
+ /**
33
+ * Creates the `attestation` property of a RecordsWrite message if given signature inputs; returns `undefined` otherwise.
34
+ */
35
+ export async function createAttestation(descriptorCid, signers) {
36
+ if (signers === undefined || signers.length === 0) {
37
+ return undefined;
38
+ }
39
+ const attestationPayload = { descriptorCid };
40
+ const attestationPayloadBytes = Encoder.objectToBytes(attestationPayload);
41
+ const builder = await GeneralJwsBuilder.create(attestationPayloadBytes, signers);
42
+ return builder.getJws();
43
+ }
44
+ /**
45
+ * Creates the `signature` property in the `authorization` of a `RecordsWrite` message.
46
+ */
47
+ export async function createSignerSignature(input) {
48
+ const { recordId, contextId, descriptorCid, attestation, encryption, signer, delegatedGrantId, permissionGrantId, protocolRole } = input;
49
+ const attestationCid = attestation ? await Cid.computeCid(attestation) : undefined;
50
+ const encryptionCid = encryption ? await Cid.computeCid(encryption) : undefined;
51
+ const signaturePayload = {
52
+ recordId,
53
+ descriptorCid,
54
+ contextId,
55
+ attestationCid,
56
+ encryptionCid,
57
+ delegatedGrantId,
58
+ permissionGrantId,
59
+ protocolRole
60
+ };
61
+ removeUndefinedProperties(signaturePayload);
62
+ const signaturePayloadBytes = Encoder.objectToBytes(signaturePayload);
63
+ const builder = await GeneralJwsBuilder.create(signaturePayloadBytes, [signer]);
64
+ const signature = builder.getJws();
65
+ return signature;
66
+ }
67
+ /**
68
+ * Validates the structural integrity of the `attestation` property.
69
+ * NOTE: Cryptographic verification of attestation signatures is performed in `authenticate()`.
70
+ */
71
+ export async function validateAttestationIntegrity(message) {
72
+ if (message.attestation === undefined) {
73
+ return;
74
+ }
75
+ // TODO: support multiple attesters (https://github.com/enboxorg/enbox/issues/223)
76
+ if (message.attestation.signatures.length !== 1) {
77
+ throw new DwnError(DwnErrorCode.RecordsWriteAttestationIntegrityMoreThanOneSignature, `Currently implementation only supports 1 attester, but got ${message.attestation.signatures.length}`);
78
+ }
79
+ const payloadJson = Jws.decodePlainObjectPayload(message.attestation);
80
+ const { descriptorCid } = payloadJson;
81
+ // `descriptorCid` validation - ensure that the provided descriptorCid matches the CID of the actual message
82
+ const expectedDescriptorCid = await Cid.computeCid(message.descriptor);
83
+ if (descriptorCid !== expectedDescriptorCid) {
84
+ throw new DwnError(DwnErrorCode.RecordsWriteAttestationIntegrityDescriptorCidMismatch, `descriptorCid ${descriptorCid} does not match expected descriptorCid ${expectedDescriptorCid}`);
85
+ }
86
+ // check to ensure that no other unexpected properties exist in payload.
87
+ const propertyCount = Object.keys(payloadJson).length;
88
+ if (propertyCount > 1) {
89
+ throw new DwnError(DwnErrorCode.RecordsWriteAttestationIntegrityInvalidPayloadProperty, `Only 'descriptorCid' is allowed in attestation payload, but got ${propertyCount} properties.`);
90
+ }
91
+ }
92
+ //# sourceMappingURL=records-write-signing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records-write-signing.js","sourceRoot":"","sources":["../../../../src/interfaces/records-write-signing.ts"],"names":[],"mappings":"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"}