@enbox/dwn-sdk-js 0.4.5 → 0.4.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 (369) hide show
  1. package/README.md +3 -1
  2. package/dist/browser.mjs +19 -78
  3. package/dist/browser.mjs.map +4 -4
  4. package/dist/esm/generated/precompiled-validators.js +4465 -3861
  5. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  6. package/dist/esm/src/core/constants.js +50 -0
  7. package/dist/esm/src/core/constants.js.map +1 -1
  8. package/dist/esm/src/core/dwn-error.js +28 -11
  9. package/dist/esm/src/core/dwn-error.js.map +1 -1
  10. package/dist/esm/src/core/encryption-control.js +785 -0
  11. package/dist/esm/src/core/encryption-control.js.map +1 -0
  12. package/dist/esm/src/core/message.js +6 -0
  13. package/dist/esm/src/core/message.js.map +1 -1
  14. package/dist/esm/src/core/messages-grant-authorization.js +36 -5
  15. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  16. package/dist/esm/src/core/protocol-authorization-action.js +3 -12
  17. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -1
  18. package/dist/esm/src/core/protocol-authorization-validation.js +31 -30
  19. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
  20. package/dist/esm/src/core/protocol-authorization.js +6 -0
  21. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  22. package/dist/esm/src/core/recording-validation-state-reader.js +3 -3
  23. package/dist/esm/src/core/recording-validation-state-reader.js.map +1 -1
  24. package/dist/esm/src/core/replication-apply.js +62 -108
  25. package/dist/esm/src/core/replication-apply.js.map +1 -1
  26. package/dist/esm/src/core/validation-state-reader.js +5 -6
  27. package/dist/esm/src/core/validation-state-reader.js.map +1 -1
  28. package/dist/esm/src/dwn.js +1 -2
  29. package/dist/esm/src/dwn.js.map +1 -1
  30. package/dist/esm/src/event-stream/event-emitter-wake-publisher.js +11 -11
  31. package/dist/esm/src/event-stream/event-emitter-wake-publisher.js.map +1 -1
  32. package/dist/esm/src/handlers/messages-query.js +6 -16
  33. package/dist/esm/src/handlers/messages-query.js.map +1 -1
  34. package/dist/esm/src/handlers/messages-read.js +4 -3
  35. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  36. package/dist/esm/src/handlers/messages-subscribe.js +26 -30
  37. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  38. package/dist/esm/src/handlers/protocols-configure.js +6 -4
  39. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  40. package/dist/esm/src/handlers/records-count.js +85 -10
  41. package/dist/esm/src/handlers/records-count.js.map +1 -1
  42. package/dist/esm/src/handlers/records-delete.js +11 -0
  43. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  44. package/dist/esm/src/handlers/records-query.js +140 -18
  45. package/dist/esm/src/handlers/records-query.js.map +1 -1
  46. package/dist/esm/src/handlers/records-read.js +20 -4
  47. package/dist/esm/src/handlers/records-read.js.map +1 -1
  48. package/dist/esm/src/handlers/records-subscribe.js +127 -11
  49. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  50. package/dist/esm/src/handlers/records-write.js +15 -0
  51. package/dist/esm/src/handlers/records-write.js.map +1 -1
  52. package/dist/esm/src/index.js +7 -10
  53. package/dist/esm/src/index.js.map +1 -1
  54. package/dist/esm/src/interfaces/protocols-configure.js +66 -9
  55. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  56. package/dist/esm/src/interfaces/records-write.js +43 -36
  57. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  58. package/dist/esm/src/jose/algorithms/signing/ed25519.js +5 -5
  59. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  60. package/dist/esm/src/jose/jws/general/verifier.js +1 -1
  61. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  62. package/dist/esm/src/protocols/encryption.js +32 -274
  63. package/dist/esm/src/protocols/encryption.js.map +1 -1
  64. package/dist/esm/src/store/blockstore-level.js +14 -23
  65. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  66. package/dist/esm/src/store/blockstore-mock.js +10 -27
  67. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  68. package/dist/esm/src/store/blockstore-utils.js +45 -0
  69. package/dist/esm/src/store/blockstore-utils.js.map +1 -0
  70. package/dist/esm/src/store/blockstore.js +2 -0
  71. package/dist/esm/src/store/blockstore.js.map +1 -0
  72. package/dist/esm/src/store/data-store-level.js +4 -12
  73. package/dist/esm/src/store/data-store-level.js.map +1 -1
  74. package/dist/esm/src/store/level.js +7 -0
  75. package/dist/esm/src/store/level.js.map +1 -0
  76. package/dist/esm/src/types/encryption-types.js +4 -1
  77. package/dist/esm/src/types/encryption-types.js.map +1 -1
  78. package/dist/esm/src/utils/data-stream.js +25 -0
  79. package/dist/esm/src/utils/data-stream.js.map +1 -1
  80. package/dist/esm/src/utils/encryption.js +142 -34
  81. package/dist/esm/src/utils/encryption.js.map +1 -1
  82. package/dist/esm/src/utils/grant-key-coverage.js +180 -0
  83. package/dist/esm/src/utils/grant-key-coverage.js.map +1 -0
  84. package/dist/esm/src/utils/hd-key.js +1 -2
  85. package/dist/esm/src/utils/hd-key.js.map +1 -1
  86. package/dist/esm/src/utils/jws.js +7 -1
  87. package/dist/esm/src/utils/jws.js.map +1 -1
  88. package/dist/esm/src/utils/memory-cache.js +29 -8
  89. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  90. package/dist/esm/src/utils/protocols.js +27 -0
  91. package/dist/esm/src/utils/protocols.js.map +1 -1
  92. package/dist/esm/src/utils/record-limit-occupancy.js +23 -3
  93. package/dist/esm/src/utils/record-limit-occupancy.js.map +1 -1
  94. package/dist/esm/src/utils/records.js +29 -0
  95. package/dist/esm/src/utils/records.js.map +1 -1
  96. package/dist/esm/src/utils/secp256k1.js +12 -11
  97. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  98. package/dist/esm/src/utils/secp256r1.js +12 -20
  99. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  100. package/dist/esm/src/utils/time.js +103 -25
  101. package/dist/esm/src/utils/time.js.map +1 -1
  102. package/dist/esm/tests/core/constants.spec.js +35 -0
  103. package/dist/esm/tests/core/constants.spec.js.map +1 -0
  104. package/dist/esm/tests/core/encryption-control.spec.js +100 -0
  105. package/dist/esm/tests/core/encryption-control.spec.js.map +1 -0
  106. package/dist/esm/tests/core/message.spec.js +35 -0
  107. package/dist/esm/tests/core/message.spec.js.map +1 -1
  108. package/dist/esm/tests/core/protocol-authorization.spec.js +1 -1
  109. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  110. package/dist/esm/tests/core/replication-apply.spec.js +157 -74
  111. package/dist/esm/tests/core/replication-apply.spec.js.map +1 -1
  112. package/dist/esm/tests/core/replication-replay-property.spec.js +2 -1
  113. package/dist/esm/tests/core/replication-replay-property.spec.js.map +1 -1
  114. package/dist/esm/tests/core/validation-read-closure.spec.js +14 -28
  115. package/dist/esm/tests/core/validation-read-closure.spec.js.map +1 -1
  116. package/dist/esm/tests/core/validation-state-reader.spec.js +19 -23
  117. package/dist/esm/tests/core/validation-state-reader.spec.js.map +1 -1
  118. package/dist/esm/tests/dwn.spec.js +2 -1
  119. package/dist/esm/tests/dwn.spec.js.map +1 -1
  120. package/dist/esm/tests/event-emitter-wake-publisher.spec.js +51 -0
  121. package/dist/esm/tests/event-emitter-wake-publisher.spec.js.map +1 -0
  122. package/dist/esm/tests/features/protocol-composition.spec.js +1 -1
  123. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  124. package/dist/esm/tests/features/records-record-limit.spec.js +1 -1
  125. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
  126. package/dist/esm/tests/fuzz/encryption.fuzz.spec.js +9 -1
  127. package/dist/esm/tests/fuzz/encryption.fuzz.spec.js.map +1 -1
  128. package/dist/esm/tests/fuzz/process-message.fuzz.spec.js +1 -1
  129. package/dist/esm/tests/fuzz/process-message.fuzz.spec.js.map +1 -1
  130. package/dist/esm/tests/fuzz/protocols-utils.fuzz.spec.js +29 -1
  131. package/dist/esm/tests/fuzz/protocols-utils.fuzz.spec.js.map +1 -1
  132. package/dist/esm/tests/fuzz/secp256k1.fuzz.spec.js +2 -2
  133. package/dist/esm/tests/fuzz/secp256k1.fuzz.spec.js.map +1 -1
  134. package/dist/esm/tests/fuzz/time.fuzz.spec.js +7 -1
  135. package/dist/esm/tests/fuzz/time.fuzz.spec.js.map +1 -1
  136. package/dist/esm/tests/handlers/messages-query.spec.js +123 -11
  137. package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -1
  138. package/dist/esm/tests/handlers/messages-read.spec.js +95 -0
  139. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  140. package/dist/esm/tests/handlers/messages-subscribe.spec.js +90 -0
  141. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  142. package/dist/esm/tests/handlers/protocols-configure.spec.js +66 -0
  143. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  144. package/dist/esm/tests/handlers/records-count.spec.js +370 -0
  145. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  146. package/dist/esm/tests/handlers/records-delete.spec.js +70 -1
  147. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  148. package/dist/esm/tests/handlers/records-query.spec.js +562 -1
  149. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  150. package/dist/esm/tests/handlers/records-read.spec.js +140 -2
  151. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  152. package/dist/esm/tests/handlers/records-subscribe.spec.js +241 -1
  153. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  154. package/dist/esm/tests/handlers/records-write.spec.js +1187 -29
  155. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  156. package/dist/esm/tests/interfaces/protocols-configure.spec.js +290 -2
  157. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  158. package/dist/esm/tests/interfaces/records-write.spec.js +47 -5
  159. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  160. package/dist/esm/tests/protocols/encryption.spec.js +116 -472
  161. package/dist/esm/tests/protocols/encryption.spec.js.map +1 -1
  162. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +13 -27
  163. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  164. package/dist/esm/tests/store/blockstore-level.spec.js +33 -10
  165. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  166. package/dist/esm/tests/store/blockstore-mock.spec.js +31 -7
  167. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  168. package/dist/esm/tests/store/blockstore-utils.spec.js +115 -0
  169. package/dist/esm/tests/store/blockstore-utils.spec.js.map +1 -0
  170. package/dist/esm/tests/store/index-level.spec.js +3 -3
  171. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  172. package/dist/esm/tests/test-stores.js +2 -1
  173. package/dist/esm/tests/test-stores.js.map +1 -1
  174. package/dist/esm/tests/utils/cid.spec.js +15 -0
  175. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  176. package/dist/esm/tests/utils/data-stream.spec.js +30 -0
  177. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  178. package/dist/esm/tests/utils/encryption-control-test-utils.js +111 -0
  179. package/dist/esm/tests/utils/encryption-control-test-utils.js.map +1 -0
  180. package/dist/esm/tests/utils/encryption.spec.js +240 -67
  181. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  182. package/dist/esm/tests/utils/grant-key-coverage.spec.js +262 -0
  183. package/dist/esm/tests/utils/grant-key-coverage.spec.js.map +1 -0
  184. package/dist/esm/tests/utils/memory-cache.spec.js +12 -0
  185. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  186. package/dist/esm/tests/utils/secp256r1.spec.js +2 -2
  187. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  188. package/dist/esm/tests/utils/test-data-generator.js +2 -1
  189. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  190. package/dist/esm/tests/utils/test-validation-state-reader.js +1 -1
  191. package/dist/esm/tests/utils/test-validation-state-reader.js.map +1 -1
  192. package/dist/esm/tests/utils/time.spec.js +26 -0
  193. package/dist/esm/tests/utils/time.spec.js.map +1 -1
  194. package/dist/esm/tests/validation/json-schemas/encryption/audience.spec.js +45 -0
  195. package/dist/esm/tests/validation/json-schemas/encryption/audience.spec.js.map +1 -0
  196. package/dist/esm/tests/validation/json-schemas/encryption/delivery.spec.js +47 -0
  197. package/dist/esm/tests/validation/json-schemas/encryption/delivery.spec.js.map +1 -0
  198. package/dist/esm/tests/validation/json-schemas/encryption/grant-key.spec.js +25 -16
  199. package/dist/esm/tests/validation/json-schemas/encryption/grant-key.spec.js.map +1 -1
  200. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +152 -0
  201. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  202. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +46 -1
  203. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  204. package/dist/types/generated/precompiled-validators.d.ts +4 -4
  205. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  206. package/dist/types/src/core/constants.d.ts +39 -0
  207. package/dist/types/src/core/constants.d.ts.map +1 -1
  208. package/dist/types/src/core/dwn-error.d.ts +28 -11
  209. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  210. package/dist/types/src/core/encryption-control.d.ts +128 -0
  211. package/dist/types/src/core/encryption-control.d.ts.map +1 -0
  212. package/dist/types/src/core/message.d.ts +4 -0
  213. package/dist/types/src/core/message.d.ts.map +1 -1
  214. package/dist/types/src/core/messages-grant-authorization.d.ts +11 -0
  215. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  216. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -1
  217. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
  218. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  219. package/dist/types/src/core/recording-validation-state-reader.d.ts +2 -3
  220. package/dist/types/src/core/recording-validation-state-reader.d.ts.map +1 -1
  221. package/dist/types/src/core/replication-apply.d.ts +10 -1
  222. package/dist/types/src/core/replication-apply.d.ts.map +1 -1
  223. package/dist/types/src/core/validation-state-reader.d.ts +2 -3
  224. package/dist/types/src/core/validation-state-reader.d.ts.map +1 -1
  225. package/dist/types/src/dwn.d.ts.map +1 -1
  226. package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts +1 -1
  227. package/dist/types/src/event-stream/event-emitter-wake-publisher.d.ts.map +1 -1
  228. package/dist/types/src/handlers/messages-query.d.ts.map +1 -1
  229. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  230. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  231. package/dist/types/src/handlers/protocols-configure.d.ts +1 -0
  232. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  233. package/dist/types/src/handlers/records-count.d.ts +2 -0
  234. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  235. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  236. package/dist/types/src/handlers/records-query.d.ts +3 -0
  237. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  238. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  239. package/dist/types/src/handlers/records-subscribe.d.ts +2 -0
  240. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  241. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  242. package/dist/types/src/index.d.ts +10 -17
  243. package/dist/types/src/index.d.ts.map +1 -1
  244. package/dist/types/src/interfaces/protocols-configure.d.ts +13 -1
  245. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  246. package/dist/types/src/interfaces/records-write.d.ts +5 -1
  247. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  248. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -1
  249. package/dist/types/src/protocols/encryption.d.ts +2 -19
  250. package/dist/types/src/protocols/encryption.d.ts.map +1 -1
  251. package/dist/types/src/store/blockstore-level.d.ts +11 -11
  252. package/dist/types/src/store/blockstore-level.d.ts.map +1 -1
  253. package/dist/types/src/store/blockstore-mock.d.ts +12 -12
  254. package/dist/types/src/store/blockstore-mock.d.ts.map +1 -1
  255. package/dist/types/src/store/blockstore-utils.d.ts +23 -0
  256. package/dist/types/src/store/blockstore-utils.d.ts.map +1 -0
  257. package/dist/types/src/store/blockstore.d.ts +3 -0
  258. package/dist/types/src/store/blockstore.d.ts.map +1 -0
  259. package/dist/types/src/store/data-store-level.d.ts.map +1 -1
  260. package/dist/types/src/store/level.d.ts +13 -0
  261. package/dist/types/src/store/level.d.ts.map +1 -0
  262. package/dist/types/src/types/cache.d.ts +2 -2
  263. package/dist/types/src/types/cache.d.ts.map +1 -1
  264. package/dist/types/src/types/encryption-types.d.ts +31 -2
  265. package/dist/types/src/types/encryption-types.d.ts.map +1 -1
  266. package/dist/types/src/types/validation-state-reader.d.ts +3 -5
  267. package/dist/types/src/types/validation-state-reader.d.ts.map +1 -1
  268. package/dist/types/src/utils/data-stream.d.ts +5 -0
  269. package/dist/types/src/utils/data-stream.d.ts.map +1 -1
  270. package/dist/types/src/utils/encryption.d.ts +58 -22
  271. package/dist/types/src/utils/encryption.d.ts.map +1 -1
  272. package/dist/types/src/utils/grant-key-coverage.d.ts +36 -0
  273. package/dist/types/src/utils/grant-key-coverage.d.ts.map +1 -0
  274. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  275. package/dist/types/src/utils/jws.d.ts.map +1 -1
  276. package/dist/types/src/utils/memory-cache.d.ts +4 -2
  277. package/dist/types/src/utils/memory-cache.d.ts.map +1 -1
  278. package/dist/types/src/utils/protocols.d.ts +11 -0
  279. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  280. package/dist/types/src/utils/record-limit-occupancy.d.ts +7 -0
  281. package/dist/types/src/utils/record-limit-occupancy.d.ts.map +1 -1
  282. package/dist/types/src/utils/records.d.ts +2 -0
  283. package/dist/types/src/utils/records.d.ts.map +1 -1
  284. package/dist/types/src/utils/secp256k1.d.ts.map +1 -1
  285. package/dist/types/src/utils/secp256r1.d.ts.map +1 -1
  286. package/dist/types/src/utils/time.d.ts +21 -13
  287. package/dist/types/src/utils/time.d.ts.map +1 -1
  288. package/dist/types/tests/core/constants.spec.d.ts +2 -0
  289. package/dist/types/tests/core/constants.spec.d.ts.map +1 -0
  290. package/dist/types/tests/core/encryption-control.spec.d.ts +2 -0
  291. package/dist/types/tests/core/encryption-control.spec.d.ts.map +1 -0
  292. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  293. package/dist/types/tests/event-emitter-wake-publisher.spec.d.ts +2 -0
  294. package/dist/types/tests/event-emitter-wake-publisher.spec.d.ts.map +1 -0
  295. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
  296. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  297. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  298. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  299. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  300. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  301. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  302. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  303. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  304. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  305. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
  306. package/dist/types/tests/store/blockstore-utils.spec.d.ts +2 -0
  307. package/dist/types/tests/store/blockstore-utils.spec.d.ts.map +1 -0
  308. package/dist/types/tests/test-stores.d.ts.map +1 -1
  309. package/dist/types/tests/utils/encryption-control-test-utils.d.ts +46 -0
  310. package/dist/types/tests/utils/encryption-control-test-utils.d.ts.map +1 -0
  311. package/dist/types/tests/utils/grant-key-coverage.spec.d.ts +2 -0
  312. package/dist/types/tests/utils/grant-key-coverage.spec.d.ts.map +1 -0
  313. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  314. package/dist/types/tests/validation/json-schemas/encryption/audience.spec.d.ts +2 -0
  315. package/dist/types/tests/validation/json-schemas/encryption/audience.spec.d.ts.map +1 -0
  316. package/dist/types/tests/validation/json-schemas/encryption/delivery.spec.d.ts +2 -0
  317. package/dist/types/tests/validation/json-schemas/encryption/delivery.spec.d.ts.map +1 -0
  318. package/package.json +47 -28
  319. package/src/core/constants.ts +61 -0
  320. package/src/core/dwn-error.ts +28 -11
  321. package/src/core/encryption-control.ts +1249 -0
  322. package/src/core/message.ts +7 -0
  323. package/src/core/messages-grant-authorization.ts +60 -9
  324. package/src/core/protocol-authorization-action.ts +3 -13
  325. package/src/core/protocol-authorization-validation.ts +66 -46
  326. package/src/core/protocol-authorization.ts +7 -0
  327. package/src/core/recording-validation-state-reader.ts +4 -5
  328. package/src/core/replication-apply.ts +77 -133
  329. package/src/core/validation-state-reader.ts +6 -8
  330. package/src/dwn.ts +1 -2
  331. package/src/event-stream/event-emitter-wake-publisher.ts +10 -14
  332. package/src/handlers/messages-query.ts +6 -22
  333. package/src/handlers/messages-read.ts +4 -3
  334. package/src/handlers/messages-subscribe.ts +34 -30
  335. package/src/handlers/protocols-configure.ts +7 -4
  336. package/src/handlers/records-count.ts +111 -10
  337. package/src/handlers/records-delete.ts +15 -0
  338. package/src/handlers/records-query.ts +176 -20
  339. package/src/handlers/records-read.ts +19 -6
  340. package/src/handlers/records-subscribe.ts +158 -8
  341. package/src/handlers/records-write.ts +19 -0
  342. package/src/index.ts +48 -21
  343. package/src/interfaces/protocols-configure.ts +102 -11
  344. package/src/interfaces/records-write.ts +49 -43
  345. package/src/jose/algorithms/signing/ed25519.ts +7 -6
  346. package/src/jose/jws/general/verifier.ts +3 -3
  347. package/src/protocols/encryption.ts +50 -420
  348. package/src/store/blockstore-level.ts +33 -37
  349. package/src/store/blockstore-mock.ts +24 -38
  350. package/src/store/blockstore-utils.ts +85 -0
  351. package/src/store/blockstore.ts +8 -0
  352. package/src/store/data-store-level.ts +5 -12
  353. package/src/store/level.ts +19 -0
  354. package/src/types/cache.ts +3 -3
  355. package/src/types/encryption-types.ts +39 -2
  356. package/src/types/validation-state-reader.ts +3 -5
  357. package/src/utils/data-stream.ts +29 -1
  358. package/src/utils/encryption.ts +247 -69
  359. package/src/utils/grant-key-coverage.ts +303 -0
  360. package/src/utils/hd-key.ts +1 -2
  361. package/src/utils/jws.ts +8 -2
  362. package/src/utils/memory-cache.ts +42 -11
  363. package/src/utils/protocols.ts +32 -0
  364. package/src/utils/record-limit-occupancy.ts +34 -5
  365. package/src/utils/records.ts +36 -2
  366. package/src/utils/secp256k1.ts +12 -12
  367. package/src/utils/secp256r1.ts +12 -22
  368. package/src/utils/time.ts +145 -27
  369. package/src/types/mitt.d.ts +0 -28
@@ -1,4 +1,4 @@
1
- import * as Ed25519 from '@noble/ed25519';
1
+ import { ed25519 as Ed25519 } from '@noble/curves/ed25519.js';
2
2
  import { Encoder } from '../../../utils/encoder.js';
3
3
  import { DwnError, DwnErrorCode } from '../../../core/dwn-error.js';
4
4
  function validateKey(jwk) {
@@ -20,16 +20,16 @@ export const ed25519 = {
20
20
  sign: async (content, privateJwk) => {
21
21
  validateKey(privateJwk);
22
22
  const privateKeyBytes = Encoder.base64UrlToBytes(privateJwk.d);
23
- return Ed25519.signAsync(content, privateKeyBytes);
23
+ return Ed25519.sign(content, privateKeyBytes);
24
24
  },
25
25
  verify: async (content, signature, publicJwk) => {
26
26
  validateKey(publicJwk);
27
27
  const publicKeyBytes = Encoder.base64UrlToBytes(publicJwk.x);
28
- return Ed25519.verifyAsync(signature, content, publicKeyBytes);
28
+ return Ed25519.verify(signature, content, publicKeyBytes);
29
29
  },
30
30
  generateKeyPair: async () => {
31
- const privateKeyBytes = Ed25519.utils.randomPrivateKey();
32
- const publicKeyBytes = await Ed25519.getPublicKeyAsync(privateKeyBytes);
31
+ const privateKeyBytes = Ed25519.utils.randomSecretKey();
32
+ const publicKeyBytes = Ed25519.getPublicKey(privateKeyBytes);
33
33
  const d = Encoder.bytesToBase64Url(privateKeyBytes);
34
34
  const publicJwk = publicKeyToJwk(publicKeyBytes);
35
35
  const privateJwk = { ...publicJwk, d };
@@ -1 +1 @@
1
- {"version":3,"file":"ed25519.js","sourceRoot":"","sources":["../../../../../../src/jose/algorithms/signing/ed25519.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAI1C,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEpE,SAAS,WAAW,CAAC,GAAiC;IACpD,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,IAAK,GAA0B,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,mDAAmD,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,cAA0B;IAChD,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAiB;QAC9B,GAAG,EAAG,OAAO;QACb,GAAG,EAAG,KAAK;QACX,GAAG,EAAG,SAAS;QACf,CAAC;KACF,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,IAAI,EAAE,KAAK,EAAE,OAAmB,EAAE,UAAyB,EAAuB,EAAE;QAClF,WAAW,CAAC,UAAU,CAAC,CAAC;QAExB,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAE,UAAkC,CAAC,CAAC,CAAC,CAAC;QAExF,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,OAAmB,EAAE,SAAqB,EAAE,SAAuB,EAAoB,EAAE;QACtG,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvB,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAE,SAAgC,CAAC,CAAC,CAAC,CAAC;QAErF,OAAO,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACjE,CAAC;IAED,eAAe,EAAE,KAAK,IAAmE,EAAE;QACzF,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAExE,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,UAAU,GAAkB,EAAE,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;QAEtD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,cAAc,EAAE,KAAK,EAAE,cAA0B,EAAyB,EAAE;QAC1E,OAAO,cAAc,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"ed25519.js","sourceRoot":"","sources":["../../../../../../src/jose/algorithms/signing/ed25519.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEpE,SAAS,WAAW,CAAC,GAAiC;IACpD,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,IAAK,GAA0B,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,mDAAmD,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,cAA0B;IAChD,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAiB;QAC9B,GAAG,EAAG,OAAO;QACb,GAAG,EAAG,KAAK;QACX,GAAG,EAAG,SAAS;QACf,CAAC;KACF,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAuB;IACzC,IAAI,EAAE,KAAK,EAAE,OAAmB,EAAE,UAAyB,EAAuB,EAAE;QAClF,WAAW,CAAC,UAAU,CAAC,CAAC;QAExB,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAE,UAAkC,CAAC,CAAC,CAAC,CAAC;QAExF,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,OAAmB,EAAE,SAAqB,EAAE,SAAuB,EAAoB,EAAE;QACtG,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvB,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAE,SAAgC,CAAC,CAAC,CAAC,CAAC;QAErF,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,eAAe,EAAE,KAAK,IAAmE,EAAE;QACzF,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxD,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAE7D,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,UAAU,GAAkB,EAAE,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;QAEtD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,cAAc,EAAE,KAAK,EAAE,cAA0B,EAAyB,EAAE;QAC1E,OAAO,cAAc,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -82,7 +82,7 @@ export class GeneralJwsVerifier {
82
82
  for (const method of verificationMethods) {
83
83
  // consider optimizing using a set for O(1) lookups if needed
84
84
  // key ID in DID Document may or may not be fully qualified. e.g.
85
- // `did:ion:alice#key1` or `#key1`
85
+ // `did:example:alice#key1` or `#key1`
86
86
  if (kid.endsWith(method.id)) {
87
87
  verificationMethod = method;
88
88
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../../../src/jose/jws/general/verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../../../src/jose/jws/general/verifier.ts"],"names":[],"mappings":"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"}
@@ -1,70 +1,22 @@
1
- import { checkActor } from '../core/protocol-authorization-action.js';
2
- import { Encoder } from '../utils/encoder.js';
3
- import { Encryption } from '../utils/encryption.js';
4
1
  import { ENCRYPTION_PROTOCOL_URI } from '../core/constants.js';
5
2
  import { FilterUtility } from '../utils/filter.js';
6
- import { Jws } from '../utils/jws.js';
7
3
  import { Message } from '../core/message.js';
8
4
  import { Records } from '../utils/records.js';
9
- import { validateJsonSchema } from '../schema-validator.js';
10
5
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
11
- import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
12
- import { getRuleSetAtPath, isCrossProtocolRef, parseCrossProtocolRef } from '../utils/protocols.js';
13
- import { ProtocolAction, ProtocolActor } from '../types/protocols-types.js';
6
+ import { grantKeyScopeCoversDeliveredScope, isGrantKeyEligibleRecordsScope, isGrantKeyRecordsScope } from '../utils/grant-key-coverage.js';
14
7
  export class EncryptionProtocol {
15
8
  static uri = ENCRYPTION_PROTOCOL_URI;
16
- static audienceEpochPath = 'audienceEpoch';
17
- static audienceKeyPath = 'audienceKey';
18
9
  static grantKeyPath = 'grantKey';
19
10
  static definition = {
20
11
  published: true,
21
12
  protocol: EncryptionProtocol.uri,
22
13
  types: {
23
- audienceEpoch: {
24
- dataFormats: ['application/json'],
25
- schema: 'https://identity.foundation/dwn/json-schemas/encryption/audience-epoch.json',
26
- },
27
- audienceKey: {
28
- dataFormats: ['application/json'],
29
- schema: 'https://identity.foundation/dwn/json-schemas/encryption/audience-key.json',
30
- },
31
14
  grantKey: {
32
15
  dataFormats: ['application/json'],
33
16
  schema: 'https://identity.foundation/dwn/json-schemas/encryption/grant-key.json',
34
17
  },
35
18
  },
36
19
  structure: {
37
- audienceEpoch: {
38
- $actions: [
39
- { can: ['create', 'read'], who: 'anyone' },
40
- ],
41
- $immutable: true,
42
- $tags: {
43
- $allowUndefinedTags: false,
44
- $requiredTags: ['protocol', 'contextId', 'role', 'epoch', 'keyId'],
45
- contextId: { type: 'string' },
46
- epoch: { minimum: 1, type: 'integer' },
47
- keyId: { pattern: '^[A-Za-z0-9_-]{43}$', type: 'string' },
48
- protocol: { type: 'string' },
49
- role: { type: 'string' },
50
- },
51
- },
52
- audienceKey: {
53
- $actions: [
54
- { can: ['create'], who: 'anyone' },
55
- { can: ['read'], of: 'audienceKey', who: 'recipient' },
56
- ],
57
- $immutable: true,
58
- $tags: {
59
- $allowUndefinedTags: false,
60
- $requiredTags: ['protocol', 'contextId', 'role', 'epoch', 'keyId'],
61
- contextId: { type: 'string' },
62
- epoch: { minimum: 1, type: 'integer' },
63
- keyId: { pattern: '^[A-Za-z0-9_-]{43}$', type: 'string' },
64
- protocol: { type: 'string' },
65
- role: { type: 'string' },
66
- },
67
- },
68
20
  grantKey: {
69
21
  $actions: [
70
22
  { can: ['create'], who: 'anyone' },
@@ -89,85 +41,16 @@ export class EncryptionProtocol {
89
41
  return EncryptionProtocol.definition;
90
42
  }
91
43
  async preProcessWrite(tenant, message, validationStateReader) {
92
- switch (message.descriptor.protocolPath) {
93
- case EncryptionProtocol.audienceEpochPath:
94
- await EncryptionProtocol.preProcessAudienceEpoch(tenant, message, validationStateReader);
95
- return;
96
- case EncryptionProtocol.audienceKeyPath:
97
- await EncryptionProtocol.preProcessAudienceKey(tenant, message, validationStateReader);
98
- return;
99
- case EncryptionProtocol.grantKeyPath:
100
- await EncryptionProtocol.preProcessGrantKey(tenant, message, validationStateReader);
101
- return;
102
- default:
103
- return;
104
- }
105
- }
106
- async validateRecord(message, dataBytes) {
107
- switch (message.descriptor.protocolPath) {
108
- case EncryptionProtocol.audienceEpochPath:
109
- await EncryptionProtocol.validateAudienceEpoch(message, dataBytes);
110
- return;
111
- case EncryptionProtocol.audienceKeyPath:
112
- case EncryptionProtocol.grantKeyPath:
113
- EncryptionProtocol.verifyEncryptedDelivery(message);
114
- return;
115
- default:
116
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateSchemaUnexpectedRecord, `Unexpected encryption record: ${message.descriptor.protocolPath}`);
44
+ if (message.descriptor.protocolPath === EncryptionProtocol.grantKeyPath) {
45
+ await EncryptionProtocol.preProcessGrantKey(tenant, message, validationStateReader);
117
46
  }
118
47
  }
119
- static async preProcessAudienceEpoch(tenant, message, validationStateReader) {
120
- if (message.encryption !== undefined) {
121
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceEpochEncrypted, 'audienceEpoch records must be plaintext.');
122
- }
123
- const tags = EncryptionProtocol.getAudienceTags(message, 'audienceEpoch');
124
- const { ruleSet, protocolDefinition } = await EncryptionProtocol.verifyRoleAudienceDefinition(tenant, tags, message, validationStateReader);
125
- await EncryptionProtocol.verifyWriterCanCreateRole({
126
- tenant,
127
- message,
128
- tags,
129
- ruleSet,
130
- protocolDefinition,
131
- validationStateReader,
132
- });
133
- }
134
- static async preProcessAudienceKey(tenant, message, validationStateReader) {
135
- EncryptionProtocol.verifyEncryptedDelivery(message);
136
- const recipient = message.descriptor.recipient;
137
- if (recipient === undefined) {
138
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceKeyRecipientMissing, 'audienceKey records must have a recipient.');
139
- }
140
- const tags = EncryptionProtocol.getAudienceTags(message, 'audienceKey');
141
- const { ruleSet, protocolDefinition } = await EncryptionProtocol.verifyRoleAudienceDefinition(tenant, tags, message, validationStateReader);
142
- await EncryptionProtocol.verifyWriterCanCreateRole({
143
- tenant,
144
- message,
145
- tags,
146
- ruleSet,
147
- protocolDefinition,
148
- validationStateReader,
149
- });
150
- const matchingEpochs = await validationStateReader.queryAudienceEpochs({
151
- tenant,
152
- protocol: tags.protocol,
153
- contextId: tags.contextId,
154
- role: tags.role,
155
- epoch: tags.epoch,
156
- keyId: tags.keyId,
157
- });
158
- if (matchingEpochs.length === 0) {
159
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceEpochMissing, 'audienceKey references a missing audienceEpoch.');
160
- }
161
- const hasRoleRecord = await validationStateReader.hasMatchingRoleRecord({
162
- tenant,
163
- protocol: tags.protocol,
164
- protocolPath: tags.role,
165
- recipient,
166
- contextIdPrefix: tags.contextId === '' ? undefined : tags.contextId,
167
- });
168
- if (!hasRoleRecord) {
169
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceKeyRoleRecordMissing, 'audienceKey recipient is not an active holder of the referenced role.');
48
+ async validateRecord(message, _dataBytes) {
49
+ if (message.descriptor.protocolPath === EncryptionProtocol.grantKeyPath) {
50
+ EncryptionProtocol.verifyEncryptedDelivery(message);
51
+ return;
170
52
  }
53
+ throw new DwnError(DwnErrorCode.EncryptionProtocolValidateSchemaUnexpectedRecord, `Unexpected encryption record: ${message.descriptor.protocolPath}`);
171
54
  }
172
55
  static async preProcessGrantKey(tenant, message, validationStateReader) {
173
56
  EncryptionProtocol.verifyEncryptedDelivery(message);
@@ -179,61 +62,27 @@ export class EncryptionProtocol {
179
62
  await EncryptionProtocol.verifyGrantActive(tenant, message, grant, validationStateReader);
180
63
  EncryptionProtocol.verifyGrantKeyAuthor(message, grant);
181
64
  EncryptionProtocol.verifyGrantKeyRecipient(message, grant);
182
- EncryptionProtocol.verifyGrantKeyScope(grant.scope, protocol, protocolPath);
65
+ await EncryptionProtocol.verifyGrantKeyScope({
66
+ tenant,
67
+ message,
68
+ grantScope: grant.scope,
69
+ protocol,
70
+ protocolPath,
71
+ validationStateReader,
72
+ });
183
73
  }
184
74
  static verifyEncryptedDelivery(message) {
185
75
  if (message.encryption === undefined) {
186
76
  throw new DwnError(DwnErrorCode.EncryptionProtocolValidateEncryptedDeliveryMissingEncryption, `${message.descriptor.protocolPath} records must be encrypted.`);
187
77
  }
188
78
  }
189
- static async validateAudienceEpoch(message, dataBytes) {
190
- if (message.encryption !== undefined) {
191
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceEpochEncrypted, 'audienceEpoch records must be plaintext.');
192
- }
193
- const dataObject = JSON.parse(Encoder.bytesToString(dataBytes));
194
- validateJsonSchema('AudienceEpoch', dataObject);
195
- const tags = EncryptionProtocol.getAudienceTags(message, 'audienceEpoch');
196
- EncryptionProtocol.verifyAudiencePayloadMatchesTags(dataObject, tags);
197
- const keyId = await Encryption.getKeyId(dataObject.publicKeyJwk);
198
- if (keyId !== dataObject.keyId) {
199
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceEpochKeyIdMismatch, 'audienceEpoch keyId must match publicKeyJwk thumbprint.');
200
- }
201
- }
202
- static verifyAudiencePayloadMatchesTags(payload, tags) {
203
- if (payload.protocol !== tags.protocol ||
204
- payload.contextId !== tags.contextId ||
205
- payload.role !== tags.role ||
206
- payload.epoch !== tags.epoch ||
207
- payload.keyId !== tags.keyId) {
208
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceTagsMismatch, 'audienceEpoch tags must match payload fields.');
209
- }
210
- }
211
- static getRequiredStringTag(message, tag, recordType = 'grantKey') {
79
+ static getRequiredStringTag(message, tag) {
212
80
  const value = message.descriptor.tags?.[tag];
213
81
  if (typeof value !== 'string') {
214
- const errorCode = recordType === 'grantKey'
215
- ? DwnErrorCode.EncryptionProtocolValidateGrantKeyMissingRequiredTag
216
- : DwnErrorCode.EncryptionProtocolValidateAudienceMissingRequiredTag;
217
- throw new DwnError(errorCode, `${recordType} records must include string tag '${tag}'.`);
82
+ throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyMissingRequiredTag, `grantKey records must include string tag '${tag}'.`);
218
83
  }
219
84
  return value;
220
85
  }
221
- static getRequiredIntegerTag(message, tag, recordType) {
222
- const value = message.descriptor.tags?.[tag];
223
- if (!Number.isInteger(value)) {
224
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceMissingRequiredTag, `${recordType} records must include integer tag '${tag}'.`);
225
- }
226
- return value;
227
- }
228
- static getAudienceTags(message, recordType) {
229
- return {
230
- protocol: EncryptionProtocol.getRequiredStringTag(message, 'protocol', recordType),
231
- contextId: EncryptionProtocol.getRequiredStringTag(message, 'contextId', recordType),
232
- role: EncryptionProtocol.getRequiredStringTag(message, 'role', recordType),
233
- epoch: EncryptionProtocol.getRequiredIntegerTag(message, 'epoch', recordType),
234
- keyId: EncryptionProtocol.getRequiredStringTag(message, 'keyId', recordType),
235
- };
236
- }
237
86
  static getOptionalStringTag(message, tag) {
238
87
  const value = message.descriptor.tags?.[tag];
239
88
  if (value === undefined) {
@@ -269,120 +118,29 @@ export class EncryptionProtocol {
269
118
  }
270
119
  throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyRecipientMismatch, `grantKey recipient must be permission grantee ${grant.grantee}.`);
271
120
  }
272
- static verifyGrantKeyScope(grantScope, protocol, protocolPath) {
273
- if (!EncryptionProtocol.isReadScope(grantScope)) {
274
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyGrantScopeMismatch, 'grantKey must reference a read permission grant.');
121
+ static async verifyGrantKeyScope(params) {
122
+ const { grantScope, protocol, protocolPath } = params;
123
+ if (!isGrantKeyRecordsScope(grantScope)) {
124
+ throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyGrantScopeMismatch, 'grantKey must reference a Records.Read or Records.Write permission grant.');
125
+ }
126
+ if (!isGrantKeyEligibleRecordsScope(grantScope)) {
127
+ throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyGrantScopeMismatch, 'grantKey must not reference a context-scoped permission grant.');
275
128
  }
276
- if ('protocol' in grantScope && grantScope.protocol !== undefined && grantScope.protocol !== protocol) {
129
+ if (grantScope.protocol !== protocol) {
277
130
  throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyGrantScopeMismatch, `grantKey protocol ${protocol} is outside the permission grant scope.`);
278
131
  }
279
- if (!('protocolPath' in grantScope) || grantScope.protocolPath === undefined) {
132
+ const deliveredScope = { protocol, protocolPath };
133
+ if (grantKeyScopeCoversDeliveredScope({ grantScope, deliveredScope })) {
280
134
  return;
281
135
  }
282
- if (protocolPath === undefined || !EncryptionProtocol.isBoundaryAwareSubtree(grantScope.protocolPath, protocolPath)) {
136
+ if (protocolPath === undefined) {
283
137
  throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyGrantScopeMismatch, `grantKey protocolPath ${protocolPath ?? '<protocol>'} is outside the permission grant scope.`);
284
138
  }
285
- }
286
- static isReadScope(scope) {
287
- return (scope.interface === DwnInterfaceName.Records || scope.interface === DwnInterfaceName.Messages) &&
288
- scope.method === DwnMethodName.Read;
289
- }
290
- static isBoundaryAwareSubtree(scopePath, candidatePath) {
291
- return candidatePath === scopePath || candidatePath.startsWith(scopePath + '/');
292
- }
293
- static async verifyRoleAudienceDefinition(tenant, tags, message, validationStateReader) {
294
- EncryptionProtocol.verifyRoleAudienceContext(tags.role, tags.contextId);
295
- const protocolDefinition = await validationStateReader.fetchProtocolDefinition(tenant, tags.protocol, message.descriptor.messageTimestamp);
296
- const ruleSet = getRuleSetAtPath(tags.role, protocolDefinition.structure);
297
- if (ruleSet?.$role !== true || ruleSet.$keyAgreement === undefined) {
298
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateRoleAudienceInvalid, `role audience path '${tags.role}' must be a role path with $keyAgreement.`);
299
- }
300
- return { protocolDefinition, ruleSet };
301
- }
302
- static verifyRoleAudienceContext(rolePath, contextId) {
303
- const parentDepth = rolePath.split('/').length - 1;
304
- if ((parentDepth === 0 && contextId !== '') || (parentDepth > 0 && contextId === '')) {
305
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateRoleAudienceContextInvalid, 'role audience contextId is inconsistent with role path depth.');
306
- }
307
- }
308
- static async verifyWriterCanCreateRole(input) {
309
- const author = Message.getAuthor(input.message);
310
- if (author === input.tenant) {
139
+ const protocolDefinition = await params.validationStateReader.fetchProtocolDefinition(params.tenant, params.protocol, params.message.descriptor.messageTimestamp);
140
+ if (grantKeyScopeCoversDeliveredScope({ grantScope, deliveredScope, protocolDefinition })) {
311
141
  return;
312
142
  }
313
- if (author === undefined) {
314
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceWriterUnauthorized, 'audience key records must be authored by a DID authorized to create role records.');
315
- }
316
- const actionRules = input.ruleSet.$actions ?? [];
317
- const recordChain = await EncryptionProtocol.constructRoleParentChain(input.tenant, input.tags, input.validationStateReader);
318
- const signaturePayload = Jws.decodePlainObjectPayload(input.message.authorization.signature);
319
- for (const actionRule of actionRules) {
320
- if (!actionRule.can.includes(ProtocolAction.Create)) {
321
- continue;
322
- }
323
- if (actionRule.who === ProtocolActor.Anyone) {
324
- return;
325
- }
326
- if (await EncryptionProtocol.roleRuleAllowsAuthor(input.tenant, author, actionRule, input.tags, input.protocolDefinition, input.validationStateReader, signaturePayload.protocolRole)) {
327
- return;
328
- }
329
- if (await checkActor(author, actionRule, recordChain, input.protocolDefinition)) {
330
- return;
331
- }
332
- }
333
- throw new DwnError(DwnErrorCode.EncryptionProtocolValidateAudienceWriterUnauthorized, 'audience key records must be authored by a DID authorized to create role records.');
334
- }
335
- static async constructRoleParentChain(tenant, tags, validationStateReader) {
336
- if (tags.contextId === '') {
337
- return [];
338
- }
339
- const parentRecordId = tags.contextId.split('/').pop();
340
- if (parentRecordId === undefined || parentRecordId === '') {
341
- return [];
342
- }
343
- return validationStateReader.constructRecordChain(tenant, parentRecordId);
344
- }
345
- static async roleRuleAllowsAuthor(tenant, author, actionRule, tags, protocolDefinition, validationStateReader, invokedRole) {
346
- if (actionRule.role === undefined || invokedRole !== actionRule.role) {
347
- return false;
348
- }
349
- const roleRef = actionRule.role;
350
- return EncryptionProtocol.hasInvokedRole(tenant, author, roleRef, tags, protocolDefinition, validationStateReader);
351
- }
352
- static async hasInvokedRole(tenant, author, roleRef, tags, protocolDefinition, validationStateReader) {
353
- const resolved = EncryptionProtocol.resolveRoleReference(roleRef, tags.protocol, protocolDefinition);
354
- if (resolved === undefined) {
355
- return false;
356
- }
357
- const ancestorDepth = resolved.protocolPath.split('/').length - 1;
358
- let contextIdPrefix;
359
- if (ancestorDepth > 0) {
360
- contextIdPrefix = tags.contextId.split('/').slice(0, ancestorDepth).join('/');
361
- if (contextIdPrefix === '') {
362
- return false;
363
- }
364
- }
365
- return validationStateReader.hasMatchingRoleRecord({
366
- tenant,
367
- protocol: resolved.protocol,
368
- protocolPath: resolved.protocolPath,
369
- recipient: author,
370
- contextIdPrefix,
371
- });
372
- }
373
- static resolveRoleReference(roleRef, currentProtocol, protocolDefinition) {
374
- if (!isCrossProtocolRef(roleRef)) {
375
- return { protocol: currentProtocol, protocolPath: roleRef };
376
- }
377
- const parsed = parseCrossProtocolRef(roleRef);
378
- if (parsed === undefined) {
379
- return undefined;
380
- }
381
- const protocol = protocolDefinition.uses?.[parsed.alias];
382
- if (protocol === undefined) {
383
- return undefined;
384
- }
385
- return { protocol, protocolPath: parsed.protocolPath };
143
+ throw new DwnError(DwnErrorCode.EncryptionProtocolValidateGrantKeyGrantScopeMismatch, `grantKey protocolPath ${protocolPath ?? '<protocol>'} is outside the permission grant scope.`);
386
144
  }
387
145
  mapErrorToStatusCode(errorCode) {
388
146
  if (errorCode.startsWith('EncryptionProtocolValidate')) {
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/protocols/encryption.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/protocols/encryption.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iCAAiC,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE3I,MAAM,OAAO,kBAAkB;IACtB,MAAM,CAAU,GAAG,GAAG,uBAAuB,CAAC;IAC9C,MAAM,CAAU,YAAY,GAAG,UAAU,CAAC;IAE1C,MAAM,CAAU,UAAU,GAAuB;QACtD,SAAS,EAAG,IAAI;QAChB,QAAQ,EAAI,kBAAkB,CAAC,GAAG;QAClC,KAAK,EAAO;YACV,QAAQ,EAAE;gBACR,WAAW,EAAG,CAAC,kBAAkB,CAAC;gBAClC,MAAM,EAAQ,wEAAwE;aACvF;SACF;QACD,SAAS,EAAE;YACT,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE;oBAClC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE;iBACpD;gBACD,UAAU,EAAG,IAAI;gBACjB,KAAK,EAAQ;oBACX,mBAAmB,EAAG,KAAK;oBAC3B,aAAa,EAAS,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC;oBACtD,OAAO,EAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxC,KAAK,EAAiB,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtG,QAAQ,EAAc,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxC,YAAY,EAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzC;aACF;SACF;KACF,CAAC;IAEF,IAAW,GAAG;QACZ,OAAO,kBAAkB,CAAC,GAAG,CAAC;IAChC,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,kBAAkB,CAAC,UAAU,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,MAAc,EACd,OAA4B,EAC5B,qBAA4C;QAE5C,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,KAAK,kBAAkB,CAAC,YAAY,EAAE,CAAC;YACxE,MAAM,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAA4B,EAAE,UAAsB;QAC9E,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,KAAK,kBAAkB,CAAC,YAAY,EAAE,CAAC;YACxE,kBAAkB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,gDAAgD,EAC7D,iCAAiC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CACnE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,MAAc,EACd,OAA4B,EAC5B,qBAA4C;QAE5C,kBAAkB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACtF,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAC1F,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxD,kBAAkB,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,kBAAkB,CAAC,mBAAmB,CAAC;YAC3C,MAAM;YACN,OAAO;YACP,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,QAAQ;YACR,YAAY;YACZ,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,OAA4B;QACjE,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,4DAA4D,EACzE,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,6BAA6B,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,OAA4B,EAAE,GAAW;QAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,6CAA6C,GAAG,IAAI,CACrD,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,OAA4B,EAAE,GAAW;QAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,iBAAiB,GAAG,qBAAqB,CAC1C,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACpC,MAAc,EACd,OAA4B,EAC5B,KAAsB,EACtB,qBAA4C;QAE5C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACtD,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,mCAAmC,EAChD,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,8BAA8B,EAC3C,kDAAkD,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAClG,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,IAAI,SAAS,EAAE,CAAC;YAChG,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,8BAA8B,EAC3C,gDAAgD,KAAK,CAAC,EAAE,GAAG,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,OAA4B,EAAE,KAAsB;QACtF,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,gDAAgD,EAC7D,8CAA8C,KAAK,CAAC,OAAO,GAAG,CAC/D,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,OAA4B,EAAE,KAAsB;QACzF,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,mDAAmD,EAChE,iDAAiD,KAAK,CAAC,OAAO,GAAG,CAClE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAOxC;QACC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAEtD,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,qBAAqB,QAAQ,yCAAyC,CACvE,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAClD,IAAI,iCAAiC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;YACtE,OAAO;QACT,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,yBAAyB,YAAY,IAAI,YAAY,yCAAyC,CAC/F,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,uBAAuB,CACnF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAC3C,CAAC;QACF,IAAI,iCAAiC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,oDAAoD,EACjE,yBAAyB,YAAY,IAAI,YAAY,yCAAyC,CAC/F,CAAC;IACJ,CAAC;IAEM,oBAAoB,CAAC,SAAiB;QAC3C,IAAI,SAAS,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,gCAAgC,CAAC,MAAsB;QAC5D,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG;YACnB,QAAQ,EAAE,kBAAkB,CAAC,GAAG;YAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;SACjC,CAAC;QAEZ,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,sBAAsB,GAAG,aAAa,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YACrF,IAAI,sBAAsB,EAAE,CAAC;gBAC3B,YAAY,CAAC,gBAAgB,GAAG,sBAAsB,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { CID } from 'multiformats';
2
+ import { NotFoundError } from 'interface-store';
3
+ import { collectBlockstoreBytes, deleteManyBlockstoreItems, getManyBlockstoreItems, putManyBlockstoreItems, yieldBlockstoreBytes, } from './blockstore-utils.js';
2
4
  import { createLevelDatabase, LevelWrapper } from './level-wrapper.js';
3
5
  // `level` works in Node.js 12+ and Electron 5+ on Linux, Mac OS, Windows and
4
6
  // FreeBSD, including any future Node.js and Electron release thanks to Node-API, including ARM
@@ -29,12 +31,16 @@ export class BlockstoreLevel {
29
31
  return new BlockstoreLevel({ ...this.config, location: '' }, db);
30
32
  }
31
33
  async put(key, val, options) {
32
- await this.db.put(String(key), val, options);
34
+ const bytes = await collectBlockstoreBytes(val);
35
+ await this.db.put(String(key), bytes, options);
33
36
  return CID.parse(key.toString());
34
37
  }
35
- async get(key, options) {
38
+ async *get(key, options) {
36
39
  const result = await this.db.get(String(key), options);
37
- return result;
40
+ if (result === undefined) {
41
+ throw new NotFoundError();
42
+ }
43
+ yield result;
38
44
  }
39
45
  async has(key, options) {
40
46
  return this.db.has(String(key), options);
@@ -46,34 +52,19 @@ export class BlockstoreLevel {
46
52
  return this.db.isEmpty(options);
47
53
  }
48
54
  async *putMany(source, options) {
49
- for await (const entry of source) {
50
- await this.put(entry.cid, entry.block, options);
51
- yield entry.cid;
52
- }
55
+ yield* putManyBlockstoreItems(this, source, options);
53
56
  }
54
57
  async *getMany(source, options) {
55
- for await (const key of source) {
56
- yield {
57
- cid: key,
58
- block: await this.get(key, options)
59
- };
60
- }
58
+ yield* getManyBlockstoreItems(this, source, options);
61
59
  }
62
60
  async *getAll(options) {
63
- // @ts-expect-error keyEncoding is 'buffer' but types for db.iterator always return the key type as 'string'
64
- const li = this.db.iterator({
65
- keys: true,
66
- keyEncoding: 'buffer'
67
- }, options);
61
+ const li = this.db.iterator({ keys: true }, options);
68
62
  for await (const [key, value] of li) {
69
- yield { cid: CID.decode(key), block: value };
63
+ yield { cid: CID.parse(key), bytes: yieldBlockstoreBytes(value) };
70
64
  }
71
65
  }
72
66
  async *deleteMany(source, options) {
73
- for await (const key of source) {
74
- await this.delete(key, options);
75
- yield key;
76
- }
67
+ yield* deleteManyBlockstoreItems(this, source, options);
77
68
  }
78
69
  /**
79
70
  * deletes all entries
@@ -1 +1 @@
1
- {"version":3,"file":"blockstore-level.js","sourceRoot":"","sources":["../../../../src/store/blockstore-level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blockstore-level.js","sourceRoot":"","sources":["../../../../src/store/blockstore-level.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CID } from 'multiformats';
1
+ import { deleteManyBlockstoreItems, getManyBlockstoreItems, putManyBlockstoreItems, } from './blockstore-utils.js';
2
2
  /**
3
3
  * Mock implementation for the Blockstore interface.
4
4
  *
@@ -13,46 +13,29 @@ export class BlockstoreMock {
13
13
  async put(key, _val, _options) {
14
14
  return key;
15
15
  }
16
- async get(_key, _options) {
17
- return new Uint8Array();
16
+ async *get(_key, _options) {
17
+ yield new Uint8Array();
18
18
  }
19
19
  async has(_key, _options) {
20
20
  return false;
21
21
  }
22
22
  async delete(_key, _options) {
23
+ return;
23
24
  }
24
25
  async isEmpty(_options) {
25
26
  return true;
26
27
  }
27
28
  async *putMany(source, options) {
28
- for await (const entry of source) {
29
- await this.put(entry.cid, entry.block, options);
30
- yield entry.cid;
31
- }
29
+ yield* putManyBlockstoreItems(this, source, options);
32
30
  }
33
31
  async *getMany(source, options) {
34
- for await (const key of source) {
35
- yield {
36
- cid: key,
37
- block: await this.get(key, options)
38
- };
39
- }
40
- }
41
- async *getAll(options) {
42
- // @ts-expect-error keyEncoding is 'buffer' but types for db.iterator always return the key type as 'string'
43
- const li = this.db.iterator({
44
- keys: true,
45
- keyEncoding: 'buffer'
46
- }, options);
47
- for await (const [key, value] of li) {
48
- yield { cid: CID.decode(key), block: value };
49
- }
32
+ yield* getManyBlockstoreItems(this, source, options);
33
+ }
34
+ async *getAll(_options) {
35
+ yield* [];
50
36
  }
51
37
  async *deleteMany(source, options) {
52
- for await (const key of source) {
53
- await this.delete(key, options);
54
- yield key;
55
- }
38
+ yield* deleteManyBlockstoreItems(this, source, options);
56
39
  }
57
40
  /**
58
41
  * deletes all entries