@enbox/dwn-sdk-js 0.0.1

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 (810) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +352 -0
  3. package/dist/bundles/dwn.js +153 -0
  4. package/dist/cjs/index.js +36749 -0
  5. package/dist/cjs/package.json +1 -0
  6. package/dist/esm/generated/precompiled-validators.js +11973 -0
  7. package/dist/esm/generated/precompiled-validators.js.map +1 -0
  8. package/dist/esm/json-schemas/definitions.json +23 -0
  9. package/dist/esm/src/core/abstract-message.js +47 -0
  10. package/dist/esm/src/core/abstract-message.js.map +1 -0
  11. package/dist/esm/src/core/auth.js +39 -0
  12. package/dist/esm/src/core/auth.js.map +1 -0
  13. package/dist/esm/src/core/dwn-constant.js +10 -0
  14. package/dist/esm/src/core/dwn-constant.js.map +1 -0
  15. package/dist/esm/src/core/dwn-error.js +169 -0
  16. package/dist/esm/src/core/dwn-error.js.map +1 -0
  17. package/dist/esm/src/core/grant-authorization.js +97 -0
  18. package/dist/esm/src/core/grant-authorization.js.map +1 -0
  19. package/dist/esm/src/core/message-reply.js +5 -0
  20. package/dist/esm/src/core/message-reply.js.map +1 -0
  21. package/dist/esm/src/core/message.js +233 -0
  22. package/dist/esm/src/core/message.js.map +1 -0
  23. package/dist/esm/src/core/messages-grant-authorization.js +101 -0
  24. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -0
  25. package/dist/esm/src/core/protocol-authorization.js +608 -0
  26. package/dist/esm/src/core/protocol-authorization.js.map +1 -0
  27. package/dist/esm/src/core/protocols-grant-authorization.js +66 -0
  28. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -0
  29. package/dist/esm/src/core/records-grant-authorization.js +132 -0
  30. package/dist/esm/src/core/records-grant-authorization.js.map +1 -0
  31. package/dist/esm/src/core/resumable-task-manager.js +109 -0
  32. package/dist/esm/src/core/resumable-task-manager.js.map +1 -0
  33. package/dist/esm/src/core/tenant-gate.js +20 -0
  34. package/dist/esm/src/core/tenant-gate.js.map +1 -0
  35. package/dist/esm/src/dwn.js +164 -0
  36. package/dist/esm/src/dwn.js.map +1 -0
  37. package/dist/esm/src/enums/dwn-interface-method.js +16 -0
  38. package/dist/esm/src/enums/dwn-interface-method.js.map +1 -0
  39. package/dist/esm/src/event-log/event-emitter-stream.js +60 -0
  40. package/dist/esm/src/event-log/event-emitter-stream.js.map +1 -0
  41. package/dist/esm/src/event-log/event-log-level.js +63 -0
  42. package/dist/esm/src/event-log/event-log-level.js.map +1 -0
  43. package/dist/esm/src/handlers/messages-query.js +71 -0
  44. package/dist/esm/src/handlers/messages-query.js.map +1 -0
  45. package/dist/esm/src/handlers/messages-read.js +102 -0
  46. package/dist/esm/src/handlers/messages-read.js.map +1 -0
  47. package/dist/esm/src/handlers/messages-subscribe.js +81 -0
  48. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -0
  49. package/dist/esm/src/handlers/protocols-configure.js +133 -0
  50. package/dist/esm/src/handlers/protocols-configure.js.map +1 -0
  51. package/dist/esm/src/handlers/protocols-query.js +73 -0
  52. package/dist/esm/src/handlers/protocols-query.js.map +1 -0
  53. package/dist/esm/src/handlers/records-delete.js +107 -0
  54. package/dist/esm/src/handlers/records-delete.js.map +1 -0
  55. package/dist/esm/src/handlers/records-query.js +210 -0
  56. package/dist/esm/src/handlers/records-query.js.map +1 -0
  57. package/dist/esm/src/handlers/records-read.js +169 -0
  58. package/dist/esm/src/handlers/records-read.js.map +1 -0
  59. package/dist/esm/src/handlers/records-subscribe.js +172 -0
  60. package/dist/esm/src/handlers/records-subscribe.js.map +1 -0
  61. package/dist/esm/src/handlers/records-write.js +344 -0
  62. package/dist/esm/src/handlers/records-write.js.map +1 -0
  63. package/dist/esm/src/index.js +49 -0
  64. package/dist/esm/src/index.js.map +1 -0
  65. package/dist/esm/src/interfaces/messages-query.js +53 -0
  66. package/dist/esm/src/interfaces/messages-query.js.map +1 -0
  67. package/dist/esm/src/interfaces/messages-read.js +61 -0
  68. package/dist/esm/src/interfaces/messages-read.js.map +1 -0
  69. package/dist/esm/src/interfaces/messages-subscribe.js +58 -0
  70. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -0
  71. package/dist/esm/src/interfaces/protocols-configure.js +271 -0
  72. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -0
  73. package/dist/esm/src/interfaces/protocols-query.js +84 -0
  74. package/dist/esm/src/interfaces/protocols-query.js.map +1 -0
  75. package/dist/esm/src/interfaces/records-delete.js +89 -0
  76. package/dist/esm/src/interfaces/records-delete.js.map +1 -0
  77. package/dist/esm/src/interfaces/records-query.js +104 -0
  78. package/dist/esm/src/interfaces/records-query.js.map +1 -0
  79. package/dist/esm/src/interfaces/records-read.js +84 -0
  80. package/dist/esm/src/interfaces/records-read.js.map +1 -0
  81. package/dist/esm/src/interfaces/records-subscribe.js +91 -0
  82. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -0
  83. package/dist/esm/src/interfaces/records-write.js +795 -0
  84. package/dist/esm/src/interfaces/records-write.js.map +1 -0
  85. package/dist/esm/src/jose/algorithms/signing/ed25519.js +51 -0
  86. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -0
  87. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js +20 -0
  88. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -0
  89. package/dist/esm/src/jose/jws/general/builder.js +47 -0
  90. package/dist/esm/src/jose/jws/general/builder.js.map +1 -0
  91. package/dist/esm/src/jose/jws/general/verifier.js +97 -0
  92. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -0
  93. package/dist/esm/src/protocols/permission-grant.js +39 -0
  94. package/dist/esm/src/protocols/permission-grant.js.map +1 -0
  95. package/dist/esm/src/protocols/permission-request.js +35 -0
  96. package/dist/esm/src/protocols/permission-request.js.map +1 -0
  97. package/dist/esm/src/protocols/permissions.js +357 -0
  98. package/dist/esm/src/protocols/permissions.js.map +1 -0
  99. package/dist/esm/src/schema-validator.js +37 -0
  100. package/dist/esm/src/schema-validator.js.map +1 -0
  101. package/dist/esm/src/store/blockstore-level.js +187 -0
  102. package/dist/esm/src/store/blockstore-level.js.map +1 -0
  103. package/dist/esm/src/store/blockstore-mock.js +168 -0
  104. package/dist/esm/src/store/blockstore-mock.js.map +1 -0
  105. package/dist/esm/src/store/data-store-level.js +136 -0
  106. package/dist/esm/src/store/data-store-level.js.map +1 -0
  107. package/dist/esm/src/store/index-level.js +660 -0
  108. package/dist/esm/src/store/index-level.js.map +1 -0
  109. package/dist/esm/src/store/level-wrapper.js +305 -0
  110. package/dist/esm/src/store/level-wrapper.js.map +1 -0
  111. package/dist/esm/src/store/message-store-level.js +159 -0
  112. package/dist/esm/src/store/message-store-level.js.map +1 -0
  113. package/dist/esm/src/store/resumable-task-store-level.js +131 -0
  114. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -0
  115. package/dist/esm/src/store/storage-controller.js +184 -0
  116. package/dist/esm/src/store/storage-controller.js.map +1 -0
  117. package/dist/esm/src/types/cache.js +2 -0
  118. package/dist/esm/src/types/cache.js.map +1 -0
  119. package/dist/esm/src/types/data-store.js +2 -0
  120. package/dist/esm/src/types/data-store.js.map +1 -0
  121. package/dist/esm/src/types/event-log.js +2 -0
  122. package/dist/esm/src/types/event-log.js.map +1 -0
  123. package/dist/esm/src/types/jose-types.js +2 -0
  124. package/dist/esm/src/types/jose-types.js.map +1 -0
  125. package/dist/esm/src/types/jws-types.js +2 -0
  126. package/dist/esm/src/types/jws-types.js.map +1 -0
  127. package/dist/esm/src/types/message-interface.js +2 -0
  128. package/dist/esm/src/types/message-interface.js.map +1 -0
  129. package/dist/esm/src/types/message-store.js +2 -0
  130. package/dist/esm/src/types/message-store.js.map +1 -0
  131. package/dist/esm/src/types/message-types.js +3 -0
  132. package/dist/esm/src/types/message-types.js.map +1 -0
  133. package/dist/esm/src/types/messages-types.js +2 -0
  134. package/dist/esm/src/types/messages-types.js.map +1 -0
  135. package/dist/esm/src/types/method-handler.js +2 -0
  136. package/dist/esm/src/types/method-handler.js.map +1 -0
  137. package/dist/esm/src/types/permission-types.js +6 -0
  138. package/dist/esm/src/types/permission-types.js.map +1 -0
  139. package/dist/esm/src/types/protocols-types.js +20 -0
  140. package/dist/esm/src/types/protocols-types.js.map +1 -0
  141. package/dist/esm/src/types/query-types.js +6 -0
  142. package/dist/esm/src/types/query-types.js.map +1 -0
  143. package/dist/esm/src/types/records-types.js +8 -0
  144. package/dist/esm/src/types/records-types.js.map +1 -0
  145. package/dist/esm/src/types/resumable-task-store.js +2 -0
  146. package/dist/esm/src/types/resumable-task-store.js.map +1 -0
  147. package/dist/esm/src/types/signer.js +2 -0
  148. package/dist/esm/src/types/signer.js.map +1 -0
  149. package/dist/esm/src/types/subscriptions.js +2 -0
  150. package/dist/esm/src/types/subscriptions.js.map +1 -0
  151. package/dist/esm/src/utils/abort.js +40 -0
  152. package/dist/esm/src/utils/abort.js.map +1 -0
  153. package/dist/esm/src/utils/array.js +72 -0
  154. package/dist/esm/src/utils/array.js.map +1 -0
  155. package/dist/esm/src/utils/cid.js +130 -0
  156. package/dist/esm/src/utils/cid.js.map +1 -0
  157. package/dist/esm/src/utils/data-stream.js +100 -0
  158. package/dist/esm/src/utils/data-stream.js.map +1 -0
  159. package/dist/esm/src/utils/encoder.js +45 -0
  160. package/dist/esm/src/utils/encoder.js.map +1 -0
  161. package/dist/esm/src/utils/encryption.js +128 -0
  162. package/dist/esm/src/utils/encryption.js.map +1 -0
  163. package/dist/esm/src/utils/filter.js +229 -0
  164. package/dist/esm/src/utils/filter.js.map +1 -0
  165. package/dist/esm/src/utils/hd-key.js +114 -0
  166. package/dist/esm/src/utils/hd-key.js.map +1 -0
  167. package/dist/esm/src/utils/jws.js +89 -0
  168. package/dist/esm/src/utils/jws.js.map +1 -0
  169. package/dist/esm/src/utils/memory-cache.js +41 -0
  170. package/dist/esm/src/utils/memory-cache.js.map +1 -0
  171. package/dist/esm/src/utils/messages.js +84 -0
  172. package/dist/esm/src/utils/messages.js.map +1 -0
  173. package/dist/esm/src/utils/object.js +40 -0
  174. package/dist/esm/src/utils/object.js.map +1 -0
  175. package/dist/esm/src/utils/private-key-signer.js +43 -0
  176. package/dist/esm/src/utils/private-key-signer.js.map +1 -0
  177. package/dist/esm/src/utils/protocols.js +51 -0
  178. package/dist/esm/src/utils/protocols.js.map +1 -0
  179. package/dist/esm/src/utils/records.js +454 -0
  180. package/dist/esm/src/utils/records.js.map +1 -0
  181. package/dist/esm/src/utils/secp256k1.js +166 -0
  182. package/dist/esm/src/utils/secp256k1.js.map +1 -0
  183. package/dist/esm/src/utils/secp256r1.js +120 -0
  184. package/dist/esm/src/utils/secp256r1.js.map +1 -0
  185. package/dist/esm/src/utils/string.js +16 -0
  186. package/dist/esm/src/utils/string.js.map +1 -0
  187. package/dist/esm/src/utils/time.js +85 -0
  188. package/dist/esm/src/utils/time.js.map +1 -0
  189. package/dist/esm/src/utils/url.js +62 -0
  190. package/dist/esm/src/utils/url.js.map +1 -0
  191. package/dist/esm/tests/core/auth.spec.js +22 -0
  192. package/dist/esm/tests/core/auth.spec.js.map +1 -0
  193. package/dist/esm/tests/core/message-reply.spec.js +16 -0
  194. package/dist/esm/tests/core/message-reply.spec.js.map +1 -0
  195. package/dist/esm/tests/core/message.spec.js +146 -0
  196. package/dist/esm/tests/core/message.spec.js.map +1 -0
  197. package/dist/esm/tests/core/protocol-authorization.spec.js +48 -0
  198. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -0
  199. package/dist/esm/tests/dwn.spec.js +166 -0
  200. package/dist/esm/tests/dwn.spec.js.map +1 -0
  201. package/dist/esm/tests/event-log/event-emitter-stream.spec.js +78 -0
  202. package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +1 -0
  203. package/dist/esm/tests/event-log/event-log-level.spec.js +44 -0
  204. package/dist/esm/tests/event-log/event-log-level.spec.js.map +1 -0
  205. package/dist/esm/tests/event-log/event-log.spec.js +236 -0
  206. package/dist/esm/tests/event-log/event-log.spec.js.map +1 -0
  207. package/dist/esm/tests/event-log/event-stream.spec.js +125 -0
  208. package/dist/esm/tests/event-log/event-stream.spec.js.map +1 -0
  209. package/dist/esm/tests/features/author-delegated-grant.spec.js +1273 -0
  210. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -0
  211. package/dist/esm/tests/features/owner-delegated-grant.spec.js +584 -0
  212. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -0
  213. package/dist/esm/tests/features/owner-signature.spec.js +192 -0
  214. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -0
  215. package/dist/esm/tests/features/permissions.spec.js +815 -0
  216. package/dist/esm/tests/features/permissions.spec.js.map +1 -0
  217. package/dist/esm/tests/features/protocol-create-action.spec.js +248 -0
  218. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -0
  219. package/dist/esm/tests/features/protocol-delete-action.spec.js +492 -0
  220. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -0
  221. package/dist/esm/tests/features/protocol-update-action.spec.js +572 -0
  222. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -0
  223. package/dist/esm/tests/features/records-prune.spec.js +812 -0
  224. package/dist/esm/tests/features/records-prune.spec.js.map +1 -0
  225. package/dist/esm/tests/features/records-tags.spec.js +2516 -0
  226. package/dist/esm/tests/features/records-tags.spec.js.map +1 -0
  227. package/dist/esm/tests/features/resumable-tasks.spec.js +349 -0
  228. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -0
  229. package/dist/esm/tests/handlers/messages-query.spec.js +349 -0
  230. package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -0
  231. package/dist/esm/tests/handlers/messages-read.spec.js +647 -0
  232. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -0
  233. package/dist/esm/tests/handlers/messages-subscribe.spec.js +432 -0
  234. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -0
  235. package/dist/esm/tests/handlers/protocols-configure.spec.js +608 -0
  236. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -0
  237. package/dist/esm/tests/handlers/protocols-query.spec.js +454 -0
  238. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -0
  239. package/dist/esm/tests/handlers/records-delete.spec.js +662 -0
  240. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -0
  241. package/dist/esm/tests/handlers/records-query.spec.js +2695 -0
  242. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -0
  243. package/dist/esm/tests/handlers/records-read.spec.js +1724 -0
  244. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -0
  245. package/dist/esm/tests/handlers/records-subscribe.spec.js +684 -0
  246. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -0
  247. package/dist/esm/tests/handlers/records-write.spec.js +3637 -0
  248. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -0
  249. package/dist/esm/tests/interfaces/messages-get.spec.js +78 -0
  250. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -0
  251. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +30 -0
  252. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -0
  253. package/dist/esm/tests/interfaces/messagess-query.spec.js +127 -0
  254. package/dist/esm/tests/interfaces/messagess-query.spec.js.map +1 -0
  255. package/dist/esm/tests/interfaces/protocols-configure.spec.js +489 -0
  256. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -0
  257. package/dist/esm/tests/interfaces/protocols-query.spec.js +46 -0
  258. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -0
  259. package/dist/esm/tests/interfaces/records-delete.spec.js +39 -0
  260. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -0
  261. package/dist/esm/tests/interfaces/records-query.spec.js +85 -0
  262. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -0
  263. package/dist/esm/tests/interfaces/records-read.spec.js +62 -0
  264. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -0
  265. package/dist/esm/tests/interfaces/records-subscribe.spec.js +72 -0
  266. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -0
  267. package/dist/esm/tests/interfaces/records-write.spec.js +423 -0
  268. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -0
  269. package/dist/esm/tests/jose/jws/general.spec.js +243 -0
  270. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -0
  271. package/dist/esm/tests/protocols/permission-request.spec.js +40 -0
  272. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -0
  273. package/dist/esm/tests/protocols/permissions.spec.js +123 -0
  274. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -0
  275. package/dist/esm/tests/scenarios/aggregator.spec.js +670 -0
  276. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -0
  277. package/dist/esm/tests/scenarios/deleted-record.spec.js +102 -0
  278. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -0
  279. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +220 -0
  280. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -0
  281. package/dist/esm/tests/scenarios/messages-query.spec.js +395 -0
  282. package/dist/esm/tests/scenarios/messages-query.spec.js.map +1 -0
  283. package/dist/esm/tests/scenarios/nested-roles.spec.js +300 -0
  284. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -0
  285. package/dist/esm/tests/scenarios/subscriptions.spec.js +886 -0
  286. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -0
  287. package/dist/esm/tests/store/blockstore-mock.spec.js +192 -0
  288. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -0
  289. package/dist/esm/tests/store/data-store-level.spec.js +146 -0
  290. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -0
  291. package/dist/esm/tests/store/index-level.spec.js +1208 -0
  292. package/dist/esm/tests/store/index-level.spec.js.map +1 -0
  293. package/dist/esm/tests/store/message-store-level.spec.js +48 -0
  294. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -0
  295. package/dist/esm/tests/store/message-store.spec.js +404 -0
  296. package/dist/esm/tests/store/message-store.spec.js.map +1 -0
  297. package/dist/esm/tests/store-dependent-tests.spec.js +5 -0
  298. package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -0
  299. package/dist/esm/tests/test-event-stream.js +25 -0
  300. package/dist/esm/tests/test-event-stream.js.map +1 -0
  301. package/dist/esm/tests/test-stores.js +45 -0
  302. package/dist/esm/tests/test-stores.js.map +1 -0
  303. package/dist/esm/tests/test-suite.js +88 -0
  304. package/dist/esm/tests/test-suite.js.map +1 -0
  305. package/dist/esm/tests/utils/cid.spec.js +80 -0
  306. package/dist/esm/tests/utils/cid.spec.js.map +1 -0
  307. package/dist/esm/tests/utils/data-stream.spec.js +27 -0
  308. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -0
  309. package/dist/esm/tests/utils/encryption.spec.js +148 -0
  310. package/dist/esm/tests/utils/encryption.spec.js.map +1 -0
  311. package/dist/esm/tests/utils/filters.spec.js +295 -0
  312. package/dist/esm/tests/utils/filters.spec.js.map +1 -0
  313. package/dist/esm/tests/utils/hd-key.spec.js +35 -0
  314. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -0
  315. package/dist/esm/tests/utils/jws.spec.js +8 -0
  316. package/dist/esm/tests/utils/jws.spec.js.map +1 -0
  317. package/dist/esm/tests/utils/memory-cache.spec.js +35 -0
  318. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -0
  319. package/dist/esm/tests/utils/messages.spec.js +101 -0
  320. package/dist/esm/tests/utils/messages.spec.js.map +1 -0
  321. package/dist/esm/tests/utils/object.spec.js +36 -0
  322. package/dist/esm/tests/utils/object.spec.js.map +1 -0
  323. package/dist/esm/tests/utils/poller.js +49 -0
  324. package/dist/esm/tests/utils/poller.js.map +1 -0
  325. package/dist/esm/tests/utils/private-key-signer.spec.js +44 -0
  326. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -0
  327. package/dist/esm/tests/utils/records.spec.js +53 -0
  328. package/dist/esm/tests/utils/records.spec.js.map +1 -0
  329. package/dist/esm/tests/utils/secp256k1.spec.js +50 -0
  330. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -0
  331. package/dist/esm/tests/utils/secp256r1.spec.js +56 -0
  332. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -0
  333. package/dist/esm/tests/utils/test-data-generator.js +643 -0
  334. package/dist/esm/tests/utils/test-data-generator.js.map +1 -0
  335. package/dist/esm/tests/utils/test-stub-generator.js +39 -0
  336. package/dist/esm/tests/utils/test-stub-generator.js.map +1 -0
  337. package/dist/esm/tests/utils/time.spec.js +64 -0
  338. package/dist/esm/tests/utils/time.spec.js.map +1 -0
  339. package/dist/esm/tests/utils/url.spec.js +43 -0
  340. package/dist/esm/tests/utils/url.spec.js.map +1 -0
  341. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +33 -0
  342. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -0
  343. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +50 -0
  344. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -0
  345. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +36 -0
  346. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -0
  347. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +82 -0
  348. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -0
  349. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +75 -0
  350. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -0
  351. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +148 -0
  352. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -0
  353. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +421 -0
  354. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -0
  355. package/dist/esm/tests/vectors/protocol-definitions/anyone-collaborate.json +21 -0
  356. package/dist/esm/tests/vectors/protocol-definitions/author-can.json +33 -0
  357. package/dist/esm/tests/vectors/protocol-definitions/chat.json +70 -0
  358. package/dist/esm/tests/vectors/protocol-definitions/credential-issuance.json +41 -0
  359. package/dist/esm/tests/vectors/protocol-definitions/dex.json +58 -0
  360. package/dist/esm/tests/vectors/protocol-definitions/email.json +62 -0
  361. package/dist/esm/tests/vectors/protocol-definitions/free-for-all.json +45 -0
  362. package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +48 -0
  363. package/dist/esm/tests/vectors/protocol-definitions/message.json +37 -0
  364. package/dist/esm/tests/vectors/protocol-definitions/minimal.json +10 -0
  365. package/dist/esm/tests/vectors/protocol-definitions/nested.json +31 -0
  366. package/dist/esm/tests/vectors/protocol-definitions/private-protocol.json +15 -0
  367. package/dist/esm/tests/vectors/protocol-definitions/recipient-can.json +33 -0
  368. package/dist/esm/tests/vectors/protocol-definitions/slack.json +242 -0
  369. package/dist/esm/tests/vectors/protocol-definitions/social-media.json +106 -0
  370. package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +70 -0
  371. package/dist/types/generated/precompiled-validators.d.ts +597 -0
  372. package/dist/types/generated/precompiled-validators.d.ts.map +1 -0
  373. package/dist/types/src/core/abstract-message.d.ts +25 -0
  374. package/dist/types/src/core/abstract-message.d.ts.map +1 -0
  375. package/dist/types/src/core/auth.d.ts +9 -0
  376. package/dist/types/src/core/auth.d.ts.map +1 -0
  377. package/dist/types/src/core/dwn-constant.d.ts +10 -0
  378. package/dist/types/src/core/dwn-constant.d.ts.map +1 -0
  379. package/dist/types/src/core/dwn-error.d.ts +164 -0
  380. package/dist/types/src/core/dwn-error.d.ts.map +1 -0
  381. package/dist/types/src/core/grant-authorization.d.ts +43 -0
  382. package/dist/types/src/core/grant-authorization.d.ts.map +1 -0
  383. package/dist/types/src/core/message-reply.d.ts +32 -0
  384. package/dist/types/src/core/message-reply.d.ts.map +1 -0
  385. package/dist/types/src/core/message.d.ts +94 -0
  386. package/dist/types/src/core/message.d.ts.map +1 -0
  387. package/dist/types/src/core/messages-grant-authorization.d.ts +34 -0
  388. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -0
  389. package/dist/types/src/core/protocol-authorization.d.ts +103 -0
  390. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -0
  391. package/dist/types/src/core/protocols-grant-authorization.d.ts +31 -0
  392. package/dist/types/src/core/protocols-grant-authorization.d.ts.map +1 -0
  393. package/dist/types/src/core/records-grant-authorization.d.ts +60 -0
  394. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -0
  395. package/dist/types/src/core/resumable-task-manager.d.ts +43 -0
  396. package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -0
  397. package/dist/types/src/core/tenant-gate.d.ts +29 -0
  398. package/dist/types/src/core/tenant-gate.d.ts.map +1 -0
  399. package/dist/types/src/dwn.d.ts +85 -0
  400. package/dist/types/src/dwn.d.ts.map +1 -0
  401. package/dist/types/src/enums/dwn-interface-method.d.ts +14 -0
  402. package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -0
  403. package/dist/types/src/event-log/event-emitter-stream.d.ts +23 -0
  404. package/dist/types/src/event-log/event-emitter-stream.d.ts.map +1 -0
  405. package/dist/types/src/event-log/event-log-level.d.ts +35 -0
  406. package/dist/types/src/event-log/event-log-level.d.ts.map +1 -0
  407. package/dist/types/src/handlers/messages-query.d.ts +17 -0
  408. package/dist/types/src/handlers/messages-query.d.ts.map +1 -0
  409. package/dist/types/src/handlers/messages-read.d.ts +22 -0
  410. package/dist/types/src/handlers/messages-read.d.ts.map +1 -0
  411. package/dist/types/src/handlers/messages-subscribe.d.ts +18 -0
  412. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -0
  413. package/dist/types/src/handlers/protocols-configure.d.ts +24 -0
  414. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -0
  415. package/dist/types/src/handlers/protocols-query.d.ts +20 -0
  416. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -0
  417. package/dist/types/src/handlers/records-delete.d.ts +23 -0
  418. package/dist/types/src/handlers/records-delete.d.ts.map +1 -0
  419. package/dist/types/src/handlers/records-query.d.ts +70 -0
  420. package/dist/types/src/handlers/records-query.d.ts.map +1 -0
  421. package/dist/types/src/handlers/records-read.d.ts +20 -0
  422. package/dist/types/src/handlers/records-read.d.ts.map +1 -0
  423. package/dist/types/src/handlers/records-subscribe.d.ts +62 -0
  424. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -0
  425. package/dist/types/src/handlers/records-write.d.ts +51 -0
  426. package/dist/types/src/handlers/records-write.d.ts.map +1 -0
  427. package/dist/types/src/index.d.ts +63 -0
  428. package/dist/types/src/index.d.ts.map +1 -0
  429. package/dist/types/src/interfaces/messages-query.d.ts +16 -0
  430. package/dist/types/src/interfaces/messages-query.d.ts.map +1 -0
  431. package/dist/types/src/interfaces/messages-read.d.ts +20 -0
  432. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -0
  433. package/dist/types/src/interfaces/messages-subscribe.d.ts +20 -0
  434. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -0
  435. package/dist/types/src/interfaces/protocols-configure.d.ts +40 -0
  436. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -0
  437. package/dist/types/src/interfaces/protocols-query.d.ts +17 -0
  438. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -0
  439. package/dist/types/src/interfaces/records-delete.d.ts +34 -0
  440. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -0
  441. package/dist/types/src/interfaces/records-query.d.ts +31 -0
  442. package/dist/types/src/interfaces/records-query.d.ts.map +1 -0
  443. package/dist/types/src/interfaces/records-read.d.ts +36 -0
  444. package/dist/types/src/interfaces/records-read.d.ts.map +1 -0
  445. package/dist/types/src/interfaces/records-subscribe.d.ts +27 -0
  446. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -0
  447. package/dist/types/src/interfaces/records-write.d.ts +309 -0
  448. package/dist/types/src/interfaces/records-write.d.ts.map +1 -0
  449. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts +3 -0
  450. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -0
  451. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +3 -0
  452. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -0
  453. package/dist/types/src/jose/jws/general/builder.d.ts +10 -0
  454. package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -0
  455. package/dist/types/src/jose/jws/general/verifier.d.ts +32 -0
  456. package/dist/types/src/jose/jws/general/verifier.d.ts.map +1 -0
  457. package/dist/types/src/protocols/permission-grant.d.ts +50 -0
  458. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -0
  459. package/dist/types/src/protocols/permission-request.d.ts +35 -0
  460. package/dist/types/src/protocols/permission-request.d.ts.map +1 -0
  461. package/dist/types/src/protocols/permissions.d.ts +150 -0
  462. package/dist/types/src/protocols/permissions.d.ts.map +1 -0
  463. package/dist/types/src/schema-validator.d.ts +8 -0
  464. package/dist/types/src/schema-validator.d.ts.map +1 -0
  465. package/dist/types/src/store/blockstore-level.d.ts +34 -0
  466. package/dist/types/src/store/blockstore-level.d.ts.map +1 -0
  467. package/dist/types/src/store/blockstore-mock.d.ts +27 -0
  468. package/dist/types/src/store/blockstore-mock.d.ts.map +1 -0
  469. package/dist/types/src/store/data-store-level.d.ts +34 -0
  470. package/dist/types/src/store/data-store-level.d.ts.map +1 -0
  471. package/dist/types/src/store/index-level.d.ts +171 -0
  472. package/dist/types/src/store/index-level.d.ts.map +1 -0
  473. package/dist/types/src/store/level-wrapper.d.ts +48 -0
  474. package/dist/types/src/store/level-wrapper.d.ts.map +1 -0
  475. package/dist/types/src/store/message-store-level.d.ts +46 -0
  476. package/dist/types/src/store/message-store-level.d.ts.map +1 -0
  477. package/dist/types/src/store/resumable-task-store-level.d.ts +28 -0
  478. package/dist/types/src/store/resumable-task-store-level.d.ts.map +1 -0
  479. package/dist/types/src/store/storage-controller.d.ts +46 -0
  480. package/dist/types/src/store/storage-controller.d.ts.map +1 -0
  481. package/dist/types/src/types/cache.d.ts +16 -0
  482. package/dist/types/src/types/cache.d.ts.map +1 -0
  483. package/dist/types/src/types/data-store.d.ts +57 -0
  484. package/dist/types/src/types/data-store.d.ts.map +1 -0
  485. package/dist/types/src/types/event-log.d.ts +52 -0
  486. package/dist/types/src/types/event-log.d.ts.map +1 -0
  487. package/dist/types/src/types/jose-types.d.ts +75 -0
  488. package/dist/types/src/types/jose-types.d.ts.map +1 -0
  489. package/dist/types/src/types/jws-types.d.ts +27 -0
  490. package/dist/types/src/types/jws-types.d.ts.map +1 -0
  491. package/dist/types/src/types/message-interface.d.ts +27 -0
  492. package/dist/types/src/types/message-interface.d.ts.map +1 -0
  493. package/dist/types/src/types/message-store.d.ts +42 -0
  494. package/dist/types/src/types/message-store.d.ts.map +1 -0
  495. package/dist/types/src/types/message-types.d.ts +116 -0
  496. package/dist/types/src/types/message-types.d.ts.map +1 -0
  497. package/dist/types/src/types/messages-types.d.ts +65 -0
  498. package/dist/types/src/types/messages-types.d.ts.map +1 -0
  499. package/dist/types/src/types/method-handler.d.ts +19 -0
  500. package/dist/types/src/types/method-handler.d.ts.map +1 -0
  501. package/dist/types/src/types/permission-types.d.ts +93 -0
  502. package/dist/types/src/types/permission-types.d.ts.map +1 -0
  503. package/dist/types/src/types/protocols-types.d.ts +154 -0
  504. package/dist/types/src/types/protocols-types.d.ts.map +1 -0
  505. package/dist/types/src/types/query-types.d.ts +66 -0
  506. package/dist/types/src/types/query-types.d.ts.map +1 -0
  507. package/dist/types/src/types/records-types.d.ts +230 -0
  508. package/dist/types/src/types/records-types.d.ts.map +1 -0
  509. package/dist/types/src/types/resumable-task-store.d.ts +89 -0
  510. package/dist/types/src/types/resumable-task-store.d.ts.map +1 -0
  511. package/dist/types/src/types/signer.d.ts +26 -0
  512. package/dist/types/src/types/signer.d.ts.map +1 -0
  513. package/dist/types/src/types/subscriptions.d.ts +30 -0
  514. package/dist/types/src/types/subscriptions.d.ts.map +1 -0
  515. package/dist/types/src/utils/abort.d.ts +5 -0
  516. package/dist/types/src/utils/abort.d.ts.map +1 -0
  517. package/dist/types/src/utils/array.d.ts +18 -0
  518. package/dist/types/src/utils/array.d.ts.map +1 -0
  519. package/dist/types/src/utils/cid.d.ts +30 -0
  520. package/dist/types/src/utils/cid.d.ts.map +1 -0
  521. package/dist/types/src/utils/data-stream.d.ts +31 -0
  522. package/dist/types/src/utils/data-stream.d.ts.map +1 -0
  523. package/dist/types/src/utils/encoder.d.ts +14 -0
  524. package/dist/types/src/utils/encoder.d.ts.map +1 -0
  525. package/dist/types/src/utils/encryption.d.ts +44 -0
  526. package/dist/types/src/utils/encryption.d.ts.map +1 -0
  527. package/dist/types/src/utils/filter.d.ts +60 -0
  528. package/dist/types/src/utils/filter.d.ts.map +1 -0
  529. package/dist/types/src/utils/hd-key.d.ts +54 -0
  530. package/dist/types/src/utils/hd-key.d.ts.map +1 -0
  531. package/dist/types/src/utils/jws.d.ts +39 -0
  532. package/dist/types/src/utils/jws.d.ts.map +1 -0
  533. package/dist/types/src/utils/memory-cache.d.ts +15 -0
  534. package/dist/types/src/utils/memory-cache.d.ts.map +1 -0
  535. package/dist/types/src/utils/messages.d.ts +27 -0
  536. package/dist/types/src/utils/messages.d.ts.map +1 -0
  537. package/dist/types/src/utils/object.d.ts +13 -0
  538. package/dist/types/src/utils/object.d.ts.map +1 -0
  539. package/dist/types/src/utils/private-key-signer.d.ts +34 -0
  540. package/dist/types/src/utils/private-key-signer.d.ts.map +1 -0
  541. package/dist/types/src/utils/protocols.d.ts +14 -0
  542. package/dist/types/src/utils/protocols.d.ts.map +1 -0
  543. package/dist/types/src/utils/records.d.ts +122 -0
  544. package/dist/types/src/utils/records.d.ts.map +1 -0
  545. package/dist/types/src/utils/secp256k1.d.ts +59 -0
  546. package/dist/types/src/utils/secp256k1.d.ts.map +1 -0
  547. package/dist/types/src/utils/secp256r1.d.ts +39 -0
  548. package/dist/types/src/utils/secp256r1.d.ts.map +1 -0
  549. package/dist/types/src/utils/string.d.ts +6 -0
  550. package/dist/types/src/utils/string.d.ts.map +1 -0
  551. package/dist/types/src/utils/time.d.ts +50 -0
  552. package/dist/types/src/utils/time.d.ts.map +1 -0
  553. package/dist/types/src/utils/url.d.ts +5 -0
  554. package/dist/types/src/utils/url.d.ts.map +1 -0
  555. package/dist/types/tests/core/auth.spec.d.ts +2 -0
  556. package/dist/types/tests/core/auth.spec.d.ts.map +1 -0
  557. package/dist/types/tests/core/message-reply.spec.d.ts +2 -0
  558. package/dist/types/tests/core/message-reply.spec.d.ts.map +1 -0
  559. package/dist/types/tests/core/message.spec.d.ts +2 -0
  560. package/dist/types/tests/core/message.spec.d.ts.map +1 -0
  561. package/dist/types/tests/core/protocol-authorization.spec.d.ts +2 -0
  562. package/dist/types/tests/core/protocol-authorization.spec.d.ts.map +1 -0
  563. package/dist/types/tests/dwn.spec.d.ts +2 -0
  564. package/dist/types/tests/dwn.spec.d.ts.map +1 -0
  565. package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts +2 -0
  566. package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +1 -0
  567. package/dist/types/tests/event-log/event-log-level.spec.d.ts +2 -0
  568. package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +1 -0
  569. package/dist/types/tests/event-log/event-log.spec.d.ts +2 -0
  570. package/dist/types/tests/event-log/event-log.spec.d.ts.map +1 -0
  571. package/dist/types/tests/event-log/event-stream.spec.d.ts +2 -0
  572. package/dist/types/tests/event-log/event-stream.spec.d.ts.map +1 -0
  573. package/dist/types/tests/features/author-delegated-grant.spec.d.ts +2 -0
  574. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -0
  575. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts +2 -0
  576. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -0
  577. package/dist/types/tests/features/owner-signature.spec.d.ts +2 -0
  578. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -0
  579. package/dist/types/tests/features/permissions.spec.d.ts +2 -0
  580. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -0
  581. package/dist/types/tests/features/protocol-create-action.spec.d.ts +2 -0
  582. package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -0
  583. package/dist/types/tests/features/protocol-delete-action.spec.d.ts +2 -0
  584. package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -0
  585. package/dist/types/tests/features/protocol-update-action.spec.d.ts +2 -0
  586. package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -0
  587. package/dist/types/tests/features/records-prune.spec.d.ts +2 -0
  588. package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -0
  589. package/dist/types/tests/features/records-tags.spec.d.ts +2 -0
  590. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -0
  591. package/dist/types/tests/features/resumable-tasks.spec.d.ts +2 -0
  592. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -0
  593. package/dist/types/tests/handlers/messages-query.spec.d.ts +2 -0
  594. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -0
  595. package/dist/types/tests/handlers/messages-read.spec.d.ts +2 -0
  596. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -0
  597. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts +2 -0
  598. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -0
  599. package/dist/types/tests/handlers/protocols-configure.spec.d.ts +2 -0
  600. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -0
  601. package/dist/types/tests/handlers/protocols-query.spec.d.ts +2 -0
  602. package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -0
  603. package/dist/types/tests/handlers/records-delete.spec.d.ts +2 -0
  604. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -0
  605. package/dist/types/tests/handlers/records-query.spec.d.ts +2 -0
  606. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -0
  607. package/dist/types/tests/handlers/records-read.spec.d.ts +2 -0
  608. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -0
  609. package/dist/types/tests/handlers/records-subscribe.spec.d.ts +2 -0
  610. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -0
  611. package/dist/types/tests/handlers/records-write.spec.d.ts +2 -0
  612. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -0
  613. package/dist/types/tests/interfaces/messages-get.spec.d.ts +2 -0
  614. package/dist/types/tests/interfaces/messages-get.spec.d.ts.map +1 -0
  615. package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts +2 -0
  616. package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts.map +1 -0
  617. package/dist/types/tests/interfaces/messagess-query.spec.d.ts +2 -0
  618. package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +1 -0
  619. package/dist/types/tests/interfaces/protocols-configure.spec.d.ts +2 -0
  620. package/dist/types/tests/interfaces/protocols-configure.spec.d.ts.map +1 -0
  621. package/dist/types/tests/interfaces/protocols-query.spec.d.ts +2 -0
  622. package/dist/types/tests/interfaces/protocols-query.spec.d.ts.map +1 -0
  623. package/dist/types/tests/interfaces/records-delete.spec.d.ts +2 -0
  624. package/dist/types/tests/interfaces/records-delete.spec.d.ts.map +1 -0
  625. package/dist/types/tests/interfaces/records-query.spec.d.ts +2 -0
  626. package/dist/types/tests/interfaces/records-query.spec.d.ts.map +1 -0
  627. package/dist/types/tests/interfaces/records-read.spec.d.ts +2 -0
  628. package/dist/types/tests/interfaces/records-read.spec.d.ts.map +1 -0
  629. package/dist/types/tests/interfaces/records-subscribe.spec.d.ts +2 -0
  630. package/dist/types/tests/interfaces/records-subscribe.spec.d.ts.map +1 -0
  631. package/dist/types/tests/interfaces/records-write.spec.d.ts +2 -0
  632. package/dist/types/tests/interfaces/records-write.spec.d.ts.map +1 -0
  633. package/dist/types/tests/jose/jws/general.spec.d.ts +2 -0
  634. package/dist/types/tests/jose/jws/general.spec.d.ts.map +1 -0
  635. package/dist/types/tests/protocols/permission-request.spec.d.ts +2 -0
  636. package/dist/types/tests/protocols/permission-request.spec.d.ts.map +1 -0
  637. package/dist/types/tests/protocols/permissions.spec.d.ts +2 -0
  638. package/dist/types/tests/protocols/permissions.spec.d.ts.map +1 -0
  639. package/dist/types/tests/scenarios/aggregator.spec.d.ts +2 -0
  640. package/dist/types/tests/scenarios/aggregator.spec.d.ts.map +1 -0
  641. package/dist/types/tests/scenarios/deleted-record.spec.d.ts +2 -0
  642. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -0
  643. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts +2 -0
  644. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -0
  645. package/dist/types/tests/scenarios/messages-query.spec.d.ts +2 -0
  646. package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +1 -0
  647. package/dist/types/tests/scenarios/nested-roles.spec.d.ts +2 -0
  648. package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -0
  649. package/dist/types/tests/scenarios/subscriptions.spec.d.ts +2 -0
  650. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -0
  651. package/dist/types/tests/store/blockstore-mock.spec.d.ts +2 -0
  652. package/dist/types/tests/store/blockstore-mock.spec.d.ts.map +1 -0
  653. package/dist/types/tests/store/data-store-level.spec.d.ts +2 -0
  654. package/dist/types/tests/store/data-store-level.spec.d.ts.map +1 -0
  655. package/dist/types/tests/store/index-level.spec.d.ts +2 -0
  656. package/dist/types/tests/store/index-level.spec.d.ts.map +1 -0
  657. package/dist/types/tests/store/message-store-level.spec.d.ts +2 -0
  658. package/dist/types/tests/store/message-store-level.spec.d.ts.map +1 -0
  659. package/dist/types/tests/store/message-store.spec.d.ts +2 -0
  660. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -0
  661. package/dist/types/tests/store-dependent-tests.spec.d.ts +2 -0
  662. package/dist/types/tests/store-dependent-tests.spec.d.ts.map +1 -0
  663. package/dist/types/tests/test-event-stream.d.ts +22 -0
  664. package/dist/types/tests/test-event-stream.d.ts.map +1 -0
  665. package/dist/types/tests/test-stores.d.ts +33 -0
  666. package/dist/types/tests/test-stores.d.ts.map +1 -0
  667. package/dist/types/tests/test-suite.d.ts +18 -0
  668. package/dist/types/tests/test-suite.d.ts.map +1 -0
  669. package/dist/types/tests/utils/cid.spec.d.ts +2 -0
  670. package/dist/types/tests/utils/cid.spec.d.ts.map +1 -0
  671. package/dist/types/tests/utils/data-stream.spec.d.ts +2 -0
  672. package/dist/types/tests/utils/data-stream.spec.d.ts.map +1 -0
  673. package/dist/types/tests/utils/encryption.spec.d.ts +2 -0
  674. package/dist/types/tests/utils/encryption.spec.d.ts.map +1 -0
  675. package/dist/types/tests/utils/filters.spec.d.ts +2 -0
  676. package/dist/types/tests/utils/filters.spec.d.ts.map +1 -0
  677. package/dist/types/tests/utils/hd-key.spec.d.ts +2 -0
  678. package/dist/types/tests/utils/hd-key.spec.d.ts.map +1 -0
  679. package/dist/types/tests/utils/jws.spec.d.ts +2 -0
  680. package/dist/types/tests/utils/jws.spec.d.ts.map +1 -0
  681. package/dist/types/tests/utils/memory-cache.spec.d.ts +2 -0
  682. package/dist/types/tests/utils/memory-cache.spec.d.ts.map +1 -0
  683. package/dist/types/tests/utils/messages.spec.d.ts +2 -0
  684. package/dist/types/tests/utils/messages.spec.d.ts.map +1 -0
  685. package/dist/types/tests/utils/object.spec.d.ts +2 -0
  686. package/dist/types/tests/utils/object.spec.d.ts.map +1 -0
  687. package/dist/types/tests/utils/poller.d.ts +21 -0
  688. package/dist/types/tests/utils/poller.d.ts.map +1 -0
  689. package/dist/types/tests/utils/private-key-signer.spec.d.ts +2 -0
  690. package/dist/types/tests/utils/private-key-signer.spec.d.ts.map +1 -0
  691. package/dist/types/tests/utils/records.spec.d.ts +2 -0
  692. package/dist/types/tests/utils/records.spec.d.ts.map +1 -0
  693. package/dist/types/tests/utils/secp256k1.spec.d.ts +2 -0
  694. package/dist/types/tests/utils/secp256k1.spec.d.ts.map +1 -0
  695. package/dist/types/tests/utils/secp256r1.spec.d.ts +2 -0
  696. package/dist/types/tests/utils/secp256r1.spec.d.ts.map +1 -0
  697. package/dist/types/tests/utils/test-data-generator.d.ts +342 -0
  698. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -0
  699. package/dist/types/tests/utils/test-stub-generator.d.ts +16 -0
  700. package/dist/types/tests/utils/test-stub-generator.d.ts.map +1 -0
  701. package/dist/types/tests/utils/time.spec.d.ts +2 -0
  702. package/dist/types/tests/utils/time.spec.d.ts.map +1 -0
  703. package/dist/types/tests/utils/url.spec.d.ts +2 -0
  704. package/dist/types/tests/utils/url.spec.d.ts.map +1 -0
  705. package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts +2 -0
  706. package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts.map +1 -0
  707. package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts +2 -0
  708. package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts.map +1 -0
  709. package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts +2 -0
  710. package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts.map +1 -0
  711. package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts +2 -0
  712. package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts.map +1 -0
  713. package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts +2 -0
  714. package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts.map +1 -0
  715. package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts +2 -0
  716. package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts.map +1 -0
  717. package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts +2 -0
  718. package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts.map +1 -0
  719. package/package.json +167 -0
  720. package/src/core/abstract-message.ts +62 -0
  721. package/src/core/auth.ts +36 -0
  722. package/src/core/dwn-constant.ts +9 -0
  723. package/src/core/dwn-error.ts +167 -0
  724. package/src/core/grant-authorization.ts +148 -0
  725. package/src/core/message-reply.ts +41 -0
  726. package/src/core/message.ts +259 -0
  727. package/src/core/messages-grant-authorization.ts +134 -0
  728. package/src/core/protocol-authorization.ts +903 -0
  729. package/src/core/protocols-grant-authorization.ts +88 -0
  730. package/src/core/records-grant-authorization.ts +197 -0
  731. package/src/core/resumable-task-manager.ts +114 -0
  732. package/src/core/tenant-gate.ts +33 -0
  733. package/src/dwn.ts +264 -0
  734. package/src/enums/dwn-interface-method.ts +14 -0
  735. package/src/event-log/event-emitter-stream.ts +69 -0
  736. package/src/event-log/event-log-level.ts +72 -0
  737. package/src/handlers/messages-query.ts +67 -0
  738. package/src/handlers/messages-read.ts +103 -0
  739. package/src/handlers/messages-subscribe.ts +89 -0
  740. package/src/handlers/protocols-configure.ts +137 -0
  741. package/src/handlers/protocols-query.ts +82 -0
  742. package/src/handlers/records-delete.ts +124 -0
  743. package/src/handlers/records-query.ts +262 -0
  744. package/src/handlers/records-read.ts +187 -0
  745. package/src/handlers/records-subscribe.ts +218 -0
  746. package/src/handlers/records-write.ts +404 -0
  747. package/src/index.ts +67 -0
  748. package/src/interfaces/messages-query.ts +60 -0
  749. package/src/interfaces/messages-read.ts +63 -0
  750. package/src/interfaces/messages-subscribe.ts +64 -0
  751. package/src/interfaces/protocols-configure.ts +340 -0
  752. package/src/interfaces/protocols-query.ts +96 -0
  753. package/src/interfaces/records-delete.ts +117 -0
  754. package/src/interfaces/records-query.ts +131 -0
  755. package/src/interfaces/records-read.ts +100 -0
  756. package/src/interfaces/records-subscribe.ts +104 -0
  757. package/src/interfaces/records-write.ts +1072 -0
  758. package/src/jose/algorithms/signing/ed25519.ts +58 -0
  759. package/src/jose/algorithms/signing/signature-algorithms.ts +22 -0
  760. package/src/jose/jws/general/builder.ts +48 -0
  761. package/src/jose/jws/general/verifier.ts +112 -0
  762. package/src/protocols/permission-grant.ts +86 -0
  763. package/src/protocols/permission-request.ts +63 -0
  764. package/src/protocols/permissions.ts +508 -0
  765. package/src/schema-validator.ts +46 -0
  766. package/src/store/blockstore-level.ts +113 -0
  767. package/src/store/blockstore-mock.ts +80 -0
  768. package/src/store/data-store-level.ts +120 -0
  769. package/src/store/index-level.ts +691 -0
  770. package/src/store/level-wrapper.ts +272 -0
  771. package/src/store/message-store-level.ts +195 -0
  772. package/src/store/resumable-task-store-level.ts +120 -0
  773. package/src/store/storage-controller.ts +240 -0
  774. package/src/types/cache.ts +16 -0
  775. package/src/types/data-store.ts +64 -0
  776. package/src/types/event-log.ts +52 -0
  777. package/src/types/jose-types.ts +76 -0
  778. package/src/types/jws-types.ts +28 -0
  779. package/src/types/message-interface.ts +30 -0
  780. package/src/types/message-store.ts +57 -0
  781. package/src/types/message-types.ts +132 -0
  782. package/src/types/messages-types.ts +77 -0
  783. package/src/types/method-handler.ts +19 -0
  784. package/src/types/permission-types.ts +110 -0
  785. package/src/types/protocols-types.ts +177 -0
  786. package/src/types/query-types.ts +61 -0
  787. package/src/types/records-types.ts +263 -0
  788. package/src/types/resumable-task-store.ts +96 -0
  789. package/src/types/signer.ts +27 -0
  790. package/src/types/subscriptions.ts +34 -0
  791. package/src/utils/abort.ts +31 -0
  792. package/src/utils/array.ts +39 -0
  793. package/src/utils/cid.ts +101 -0
  794. package/src/utils/data-stream.ts +99 -0
  795. package/src/utils/encoder.ts +54 -0
  796. package/src/utils/encryption.ts +145 -0
  797. package/src/utils/filter.ts +245 -0
  798. package/src/utils/hd-key.ts +126 -0
  799. package/src/utils/jws.ts +95 -0
  800. package/src/utils/memory-cache.ts +31 -0
  801. package/src/utils/messages.ts +109 -0
  802. package/src/utils/object.ts +43 -0
  803. package/src/utils/private-key-signer.ts +72 -0
  804. package/src/utils/protocols.ts +50 -0
  805. package/src/utils/records.ts +559 -0
  806. package/src/utils/secp256k1.ts +157 -0
  807. package/src/utils/secp256r1.ts +142 -0
  808. package/src/utils/string.ts +13 -0
  809. package/src/utils/time.ts +78 -0
  810. package/src/utils/url.ts +65 -0
@@ -0,0 +1,172 @@
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
+ import { authenticate } from '../core/auth.js';
11
+ import { FilterUtility } from '../utils/filter.js';
12
+ import { Message } from '../core/message.js';
13
+ import { messageReplyFromError } from '../core/message-reply.js';
14
+ import { ProtocolAuthorization } from '../core/protocol-authorization.js';
15
+ import { Records } from '../utils/records.js';
16
+ import { RecordsSubscribe } from '../interfaces/records-subscribe.js';
17
+ import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
18
+ import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
19
+ export class RecordsSubscribeHandler {
20
+ constructor(didResolver, messageStore, eventStream) {
21
+ this.didResolver = didResolver;
22
+ this.messageStore = messageStore;
23
+ this.eventStream = eventStream;
24
+ }
25
+ handle(_a) {
26
+ return __awaiter(this, arguments, void 0, function* ({ tenant, message, subscriptionHandler }) {
27
+ if (this.eventStream === undefined) {
28
+ return messageReplyFromError(new DwnError(DwnErrorCode.RecordsSubscribeEventStreamUnimplemented, 'Subscriptions are not supported'), 501);
29
+ }
30
+ let recordsSubscribe;
31
+ try {
32
+ recordsSubscribe = yield RecordsSubscribe.parse(message);
33
+ }
34
+ catch (e) {
35
+ return messageReplyFromError(e, 400);
36
+ }
37
+ let filters = [];
38
+ // if this is an anonymous subscribe and the filter supports published records, subscribe to only published records
39
+ if (Records.filterIncludesPublishedRecords(recordsSubscribe.message.descriptor.filter) && recordsSubscribe.author === undefined) {
40
+ // build filters for a stream of published records
41
+ filters = [RecordsSubscribeHandler.buildPublishedRecordsFilter(recordsSubscribe)];
42
+ // delete the undefined authorization property else the code will encounter the following IPLD issue when attempting to generate CID:
43
+ // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded
44
+ delete message.authorization;
45
+ }
46
+ else {
47
+ // authentication and authorization
48
+ try {
49
+ yield authenticate(message.authorization, this.didResolver);
50
+ yield RecordsSubscribeHandler.authorizeRecordsSubscribe(tenant, recordsSubscribe, this.messageStore);
51
+ }
52
+ catch (error) {
53
+ return messageReplyFromError(error, 401);
54
+ }
55
+ if (recordsSubscribe.author === tenant) {
56
+ // if the subscribe author is the tenant, filter as owner.
57
+ filters = yield RecordsSubscribeHandler.filterAsOwner(recordsSubscribe);
58
+ }
59
+ else {
60
+ // otherwise build filters based on published records, permissions, or protocol rules
61
+ filters = yield RecordsSubscribeHandler.filterAsNonOwner(recordsSubscribe);
62
+ }
63
+ }
64
+ const listener = (eventTenant, event, eventIndexes) => {
65
+ if (tenant === eventTenant && FilterUtility.matchAnyFilter(eventIndexes, filters)) {
66
+ // the filters check for interface and method
67
+ // if matched the message is either a `RecordsWriteMessage` or `RecordsDeleteMessage` so we cast the event to a `RecordEvent`
68
+ subscriptionHandler(event);
69
+ }
70
+ };
71
+ const messageCid = yield Message.getCid(message);
72
+ const subscription = yield this.eventStream.subscribe(tenant, messageCid, listener);
73
+ return {
74
+ status: { code: 200, detail: 'OK' },
75
+ subscription
76
+ };
77
+ });
78
+ }
79
+ /**
80
+ * Subscribe to records as the owner of the DWN with no additional filtering.
81
+ */
82
+ static filterAsOwner(RecordsSubscribe) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ const { filter } = RecordsSubscribe.message.descriptor;
85
+ const subscribeFilter = Object.assign(Object.assign({}, Records.convertFilter(filter)), { interface: DwnInterfaceName.Records, method: [DwnMethodName.Write, DwnMethodName.Delete] });
86
+ return [subscribeFilter];
87
+ });
88
+ }
89
+ /**
90
+ * Creates filters in order to subscribe to records as a non-owner.
91
+ *
92
+ * Filters can support emitting messages for both published and unpublished records,
93
+ * as well as explicitly only published or only unpublished records.
94
+ *
95
+ * A) BOTH published and unpublished:
96
+ * 1. published records; and
97
+ * 2. unpublished records intended for the subscription author (where `recipient` is the subscription author); and
98
+ * 3. unpublished records authorized by a protocol rule.
99
+ *
100
+ * B) PUBLISHED:
101
+ * 1. only published records;
102
+ *
103
+ * C) UNPUBLISHED:
104
+ * 1. unpublished records intended for the subscription author (where `recipient` is the subscription author); and
105
+ * 2. unpublished records authorized by a protocol rule.
106
+ */
107
+ static filterAsNonOwner(recordsSubscribe) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ const filters = [];
110
+ const { filter } = recordsSubscribe.message.descriptor;
111
+ if (Records.filterIncludesPublishedRecords(filter)) {
112
+ filters.push(RecordsSubscribeHandler.buildPublishedRecordsFilter(recordsSubscribe));
113
+ }
114
+ if (Records.filterIncludesUnpublishedRecords(filter)) {
115
+ if (Records.shouldBuildUnpublishedAuthorFilter(filter, recordsSubscribe.author)) {
116
+ filters.push(RecordsSubscribeHandler.buildUnpublishedRecordsBySubscribeAuthorFilter(recordsSubscribe));
117
+ }
118
+ if (Records.shouldProtocolAuthorize(recordsSubscribe.signaturePayload)) {
119
+ filters.push(RecordsSubscribeHandler.buildUnpublishedProtocolAuthorizedRecordsFilter(recordsSubscribe));
120
+ }
121
+ if (Records.shouldBuildUnpublishedRecipientFilter(filter, recordsSubscribe.author)) {
122
+ filters.push(RecordsSubscribeHandler.buildUnpublishedRecordsForSubscribeAuthorFilter(recordsSubscribe));
123
+ }
124
+ }
125
+ return filters;
126
+ });
127
+ }
128
+ /**
129
+ * Creates a filter for all published records matching the subscribe
130
+ */
131
+ static buildPublishedRecordsFilter(recordsSubscribe) {
132
+ return Object.assign(Object.assign({}, Records.convertFilter(recordsSubscribe.message.descriptor.filter)), { interface: DwnInterfaceName.Records, method: [DwnMethodName.Write, DwnMethodName.Delete], published: true });
133
+ }
134
+ /**
135
+ * Creates a filter for unpublished records that are intended for the subscribe author (where `recipient` is the author).
136
+ */
137
+ static buildUnpublishedRecordsForSubscribeAuthorFilter(recordsSubscribe) {
138
+ // include records where recipient is subscribe author
139
+ return Object.assign(Object.assign({}, Records.convertFilter(recordsSubscribe.message.descriptor.filter)), { interface: DwnInterfaceName.Records, method: [DwnMethodName.Write, DwnMethodName.Delete], recipient: recordsSubscribe.author, published: false });
140
+ }
141
+ /**
142
+ * Creates a filter for unpublished records that are within the specified protocol.
143
+ * Validation that `protocol` and other required protocol-related fields occurs before this method.
144
+ */
145
+ static buildUnpublishedProtocolAuthorizedRecordsFilter(recordsSubscribe) {
146
+ return Object.assign(Object.assign({}, Records.convertFilter(recordsSubscribe.message.descriptor.filter)), { interface: DwnInterfaceName.Records, method: [DwnMethodName.Write, DwnMethodName.Delete], published: false });
147
+ }
148
+ /**
149
+ * Creates a filter for only unpublished records where the author is the same as the subscribe author.
150
+ */
151
+ static buildUnpublishedRecordsBySubscribeAuthorFilter(recordsSubscribe) {
152
+ // include records where author is the same as the subscribe author
153
+ return Object.assign(Object.assign({}, Records.convertFilter(recordsSubscribe.message.descriptor.filter)), { author: recordsSubscribe.author, interface: DwnInterfaceName.Records, method: [DwnMethodName.Write, DwnMethodName.Delete], published: false });
154
+ }
155
+ /**
156
+ * @param messageStore Used to check if the grant has been revoked.
157
+ */
158
+ static authorizeRecordsSubscribe(tenant, recordsSubscribe, messageStore) {
159
+ return __awaiter(this, void 0, void 0, function* () {
160
+ if (Message.isSignedByAuthorDelegate(recordsSubscribe.message)) {
161
+ yield recordsSubscribe.authorizeDelegate(messageStore);
162
+ }
163
+ // NOTE: not all RecordsSubscribe messages require protocol authorization even if the filter includes protocol-related fields,
164
+ // this is because we dynamically filter out records that the caller is not authorized to see.
165
+ // Currently only run protocol authorization if message deliberately invokes a protocol role.
166
+ if (Records.shouldProtocolAuthorize(recordsSubscribe.signaturePayload)) {
167
+ yield ProtocolAuthorization.authorizeQueryOrSubscribe(tenant, recordsSubscribe, messageStore);
168
+ }
169
+ });
170
+ }
171
+ }
172
+ //# sourceMappingURL=records-subscribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records-subscribe.js","sourceRoot":"","sources":["../../../../src/handlers/records-subscribe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,344 @@
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
+ import { authenticate } from '../core/auth.js';
11
+ import { Cid } from '../utils/cid.js';
12
+ import { DataStream } from '../utils/data-stream.js';
13
+ import { DwnConstant } from '../core/dwn-constant.js';
14
+ import { Encoder } from '../utils/encoder.js';
15
+ import { Message } from '../core/message.js';
16
+ import { messageReplyFromError } from '../core/message-reply.js';
17
+ import { PermissionsProtocol } from '../protocols/permissions.js';
18
+ import { ProtocolAuthorization } from '../core/protocol-authorization.js';
19
+ import { RecordsGrantAuthorization } from '../core/records-grant-authorization.js';
20
+ import { RecordsWrite } from '../interfaces/records-write.js';
21
+ import { StorageController } from '../store/storage-controller.js';
22
+ import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
23
+ import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
24
+ export class RecordsWriteHandler {
25
+ constructor(didResolver, messageStore, dataStore, eventLog, eventStream) {
26
+ this.didResolver = didResolver;
27
+ this.messageStore = messageStore;
28
+ this.dataStore = dataStore;
29
+ this.eventLog = eventLog;
30
+ this.eventStream = eventStream;
31
+ }
32
+ handle(_a) {
33
+ return __awaiter(this, arguments, void 0, function* ({ tenant, message, dataStream }) {
34
+ let recordsWrite;
35
+ try {
36
+ recordsWrite = yield RecordsWrite.parse(message);
37
+ // Protocol-authorized record specific validation
38
+ if (message.descriptor.protocol !== undefined) {
39
+ yield ProtocolAuthorization.validateReferentialIntegrity(tenant, recordsWrite, this.messageStore);
40
+ }
41
+ }
42
+ catch (e) {
43
+ return messageReplyFromError(e, 400);
44
+ }
45
+ // authentication & authorization
46
+ try {
47
+ yield authenticate(message.authorization, this.didResolver);
48
+ yield RecordsWriteHandler.authorizeRecordsWrite(tenant, recordsWrite, this.messageStore);
49
+ }
50
+ catch (e) {
51
+ return messageReplyFromError(e, 401);
52
+ }
53
+ // get existing messages matching the `recordId`
54
+ const query = {
55
+ interface: DwnInterfaceName.Records,
56
+ recordId: message.recordId
57
+ };
58
+ const { messages: existingMessages } = yield this.messageStore.query(tenant, [query]);
59
+ // if the incoming write is not the initial write, then it must not modify any immutable properties defined by the initial write
60
+ const newMessageIsInitialWrite = yield recordsWrite.isInitialWrite();
61
+ let initialWrite;
62
+ if (!newMessageIsInitialWrite) {
63
+ try {
64
+ initialWrite = yield RecordsWrite.getInitialWrite(existingMessages);
65
+ RecordsWrite.verifyEqualityOfImmutableProperties(initialWrite, message);
66
+ }
67
+ catch (e) {
68
+ return messageReplyFromError(e, 400);
69
+ }
70
+ }
71
+ const newestExistingMessage = yield Message.getNewestMessage(existingMessages);
72
+ let incomingMessageIsNewest = false;
73
+ let newestMessage; // keep reference of newest message for pruning later
74
+ if (newestExistingMessage === undefined || (yield Message.isNewer(message, newestExistingMessage))) {
75
+ incomingMessageIsNewest = true;
76
+ newestMessage = message;
77
+ }
78
+ else { // existing message is the same age or newer than the incoming message
79
+ newestMessage = newestExistingMessage;
80
+ }
81
+ if (!incomingMessageIsNewest) {
82
+ return {
83
+ status: { code: 409, detail: 'Conflict' }
84
+ };
85
+ }
86
+ try {
87
+ if ((newestExistingMessage === null || newestExistingMessage === void 0 ? void 0 : newestExistingMessage.descriptor.method) === DwnMethodName.Delete) {
88
+ throw new DwnError(DwnErrorCode.RecordsWriteNotAllowedAfterDelete, 'RecordsWrite is not allowed after a RecordsDelete.');
89
+ }
90
+ // NOTE: We want to perform additional validation before storing the RecordsWrite.
91
+ // This is necessary for core DWN RecordsWrite that needs additional processing and allows us to fail before the storing and post processing.
92
+ //
93
+ // Example: Ensures that the protocol tag of a permission revocation RecordsWrite and the parent grant's scoped protocol match.
94
+ yield this.preProcessingForCoreRecordsWrite(tenant, message);
95
+ // NOTE: We allow isLatestBaseState to be true ONLY if the incoming message comes with data, or if the incoming message is NOT an initial write
96
+ // This would allow an initial write to be written to the DB without data, but having it not queryable,
97
+ // because query implementation filters on `isLatestBaseState` being `true`
98
+ // thus preventing a user's attempt to gain authorized access to data by referencing the dataCid of a private data in their initial writes,
99
+ // See: https://github.com/TBD54566975/dwn-sdk-js/issues/359 for more info
100
+ let isLatestBaseState = false;
101
+ let messageWithOptionalEncodedData = message;
102
+ if (dataStream !== undefined) {
103
+ messageWithOptionalEncodedData = yield this.processMessageWithDataStream(tenant, message, dataStream);
104
+ isLatestBaseState = true;
105
+ }
106
+ else {
107
+ // else data stream is NOT provided
108
+ // if the incoming message is not an initial write, and no dataStream is provided, we would allow it provided it passes validation
109
+ // processMessageWithoutDataStream() abstracts that logic
110
+ if (!newMessageIsInitialWrite) {
111
+ const newestExistingWrite = newestExistingMessage;
112
+ messageWithOptionalEncodedData = yield this.processMessageWithoutDataStream(tenant, message, newestExistingWrite);
113
+ isLatestBaseState = true;
114
+ }
115
+ }
116
+ const indexes = yield recordsWrite.constructIndexes(isLatestBaseState);
117
+ yield this.messageStore.put(tenant, messageWithOptionalEncodedData, indexes);
118
+ yield this.eventLog.append(tenant, yield Message.getCid(message), indexes);
119
+ // NOTE: We only emit a `RecordsWrite` when the message is the latest base state.
120
+ // Because we allow a `RecordsWrite` which is not the latest state to be written, but not queried, we shouldn't emit it either.
121
+ // It will be emitted as a part of a subsequent next write, if it is the latest base state.
122
+ if (this.eventStream !== undefined && isLatestBaseState) {
123
+ this.eventStream.emit(tenant, { message, initialWrite }, indexes);
124
+ }
125
+ }
126
+ catch (error) {
127
+ const e = error;
128
+ if (e.code !== undefined) {
129
+ if (e.code === DwnErrorCode.RecordsWriteMissingEncodedDataInPrevious ||
130
+ e.code === DwnErrorCode.RecordsWriteMissingDataInPrevious ||
131
+ e.code === DwnErrorCode.RecordsWriteNotAllowedAfterDelete ||
132
+ e.code === DwnErrorCode.RecordsWriteDataCidMismatch ||
133
+ e.code === DwnErrorCode.RecordsWriteDataSizeMismatch ||
134
+ e.code.startsWith('PermissionsProtocolValidate') ||
135
+ e.code.startsWith('SchemaValidator')) {
136
+ return messageReplyFromError(error, 400);
137
+ }
138
+ }
139
+ // else throw
140
+ throw error;
141
+ }
142
+ const messageReply = {
143
+ // In order to discern between something that was accepted as a queryable write and something that was accepted
144
+ // as an initial state we use separate response codes. See https://github.com/TBD54566975/dwn-sdk-js/issues/695
145
+ // for more details.
146
+ status: (newMessageIsInitialWrite && dataStream === undefined) ?
147
+ { code: 204, detail: 'No Content' } :
148
+ { code: 202, detail: 'Accepted' }
149
+ };
150
+ // delete all existing messages of the same record that are not newest, except for the initial write
151
+ yield StorageController.deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, newestMessage, this.messageStore, this.dataStore, this.eventLog);
152
+ yield this.postProcessingForCoreRecordsWrite(tenant, recordsWrite);
153
+ return messageReply;
154
+ });
155
+ }
156
+ ;
157
+ /**
158
+ * Performs additional necessary validation before storing the RecordsWrite if it is a core DWN RecordsWrite that needs additional processing.
159
+ * For instance: a Permission revocation RecordsWrite.
160
+ */
161
+ preProcessingForCoreRecordsWrite(tenant, recordsWriteMessage) {
162
+ return __awaiter(this, void 0, void 0, function* () {
163
+ var _a;
164
+ // we validate the protocol tag of the revocation message against the grant's scoped protocol
165
+ // to do this we will fetch the grant, and compare the the scoped protocol value to the protocol tag of the revocation message
166
+ if (recordsWriteMessage.descriptor.protocol === PermissionsProtocol.uri &&
167
+ recordsWriteMessage.descriptor.protocolPath === PermissionsProtocol.revocationPath) {
168
+ // get the parentId of the revocation message, which is the permissionGrantId
169
+ // fetch the grant in order to get the grant's protocol
170
+ const permissionGrantId = recordsWriteMessage.descriptor.parentId;
171
+ const grant = yield PermissionsProtocol.fetchGrant(tenant, this.messageStore, permissionGrantId);
172
+ // get the protocol values of the revocation message from the protocol tag and the protocol from the grant scope if they are defined
173
+ // compare the two values ensuring they must match
174
+ const revokeTagProtocol = (_a = recordsWriteMessage.descriptor.tags) === null || _a === void 0 ? void 0 : _a.protocol;
175
+ const grantProtocol = 'protocol' in grant.scope ? grant.scope.protocol : undefined;
176
+ if (grantProtocol !== revokeTagProtocol) {
177
+ throw new DwnError(DwnErrorCode.PermissionsProtocolValidateRevocationProtocolTagMismatch, `Revocation protocol ${revokeTagProtocol} does not match grant protocol ${grantProtocol}`);
178
+ }
179
+ }
180
+ });
181
+ }
182
+ static validateSchemaForCoreRecordsWrite(recordsWriteMessage, dataBytes) {
183
+ if (recordsWriteMessage.descriptor.protocol === PermissionsProtocol.uri) {
184
+ PermissionsProtocol.validateSchema(recordsWriteMessage, dataBytes);
185
+ }
186
+ }
187
+ /**
188
+ * Performs additional necessary tasks if the RecordsWrite handled is a core DWN RecordsWrite that need additional processing.
189
+ * For instance: a Permission revocation RecordsWrite.
190
+ */
191
+ postProcessingForCoreRecordsWrite(tenant, recordsWrite) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ // If this message is a Permission revocation, we need to delete all grant-authorized messages with timestamp after revocation
194
+ // TODO: https://github.com/TBD54566975/dwn-sdk-js/issues/716
195
+ // This code is a direct copy and paste from the original PermissionsRevokeHandler (no longer exists),
196
+ // but it appears that there was no test for it and it does not look like the code worked:
197
+ // - not seeing `permissionGrantId` being an index
198
+ // - not seeing `this.dataStore` being called to delete actual data
199
+ // - test coverage is missing for the main delete logic
200
+ if (recordsWrite.message.descriptor.protocol === PermissionsProtocol.uri &&
201
+ recordsWrite.message.descriptor.protocolPath === PermissionsProtocol.revocationPath) {
202
+ const permissionGrantId = recordsWrite.message.descriptor.parentId;
203
+ const grantAuthorizedMessagesQuery = {
204
+ permissionGrantId,
205
+ dateCreated: { gte: recordsWrite.message.descriptor.messageTimestamp },
206
+ };
207
+ const { messages: grantAuthorizedMessagesAfterRevoke } = yield this.messageStore.query(tenant, [grantAuthorizedMessagesQuery]);
208
+ const grantAuthorizedMessageCidsAfterRevoke = [];
209
+ for (const grantAuthorizedMessage of grantAuthorizedMessagesAfterRevoke) {
210
+ const messageCid = yield Message.getCid(grantAuthorizedMessage);
211
+ yield this.messageStore.delete(tenant, messageCid);
212
+ }
213
+ this.eventLog.deleteEventsByCid(tenant, grantAuthorizedMessageCidsAfterRevoke);
214
+ }
215
+ });
216
+ }
217
+ /**
218
+ * Returns a `RecordsQueryReplyEntry` with a copy of the incoming message and the incoming data encoded to `Base64URL`.
219
+ */
220
+ cloneAndAddEncodedData(message, dataBytes) {
221
+ return __awaiter(this, void 0, void 0, function* () {
222
+ const recordsWrite = Object.assign({}, message);
223
+ recordsWrite.encodedData = Encoder.bytesToBase64Url(dataBytes);
224
+ return recordsWrite;
225
+ });
226
+ }
227
+ processMessageWithDataStream(tenant, message, dataStream) {
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ let messageWithOptionalEncodedData = message;
230
+ // if data is below the threshold, we store it within MessageStore
231
+ if (message.descriptor.dataSize <= DwnConstant.maxDataSizeAllowedToBeEncoded) {
232
+ // validate data integrity before setting.
233
+ const dataBytes = yield DataStream.toBytes(dataStream);
234
+ const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
235
+ RecordsWriteHandler.validateDataIntegrity(message.descriptor.dataCid, message.descriptor.dataSize, dataCid, dataBytes.length);
236
+ RecordsWriteHandler.validateSchemaForCoreRecordsWrite(message, dataBytes);
237
+ messageWithOptionalEncodedData = yield this.cloneAndAddEncodedData(message, dataBytes);
238
+ }
239
+ else {
240
+ // split the dataStream into two: one for CID computation and one for storage
241
+ const [dataStreamCopy1, dataStreamCopy2] = DataStream.duplicateDataStream(dataStream, 2);
242
+ try {
243
+ // perform storage and CID computation in parallel
244
+ const [dataCid, DataStorePutResult] = yield Promise.all([
245
+ Cid.computeDagPbCidFromStream(dataStreamCopy1),
246
+ this.dataStore.put(tenant, message.recordId, message.descriptor.dataCid, dataStreamCopy2)
247
+ ]);
248
+ RecordsWriteHandler.validateDataIntegrity(message.descriptor.dataCid, message.descriptor.dataSize, dataCid, DataStorePutResult.dataSize);
249
+ }
250
+ catch (error) {
251
+ // unwind/delete data if we have issue with storage or the data failed integrity validation
252
+ yield this.dataStore.delete(tenant, message.recordId, message.descriptor.dataCid);
253
+ throw error;
254
+ }
255
+ }
256
+ return messageWithOptionalEncodedData;
257
+ });
258
+ }
259
+ processMessageWithoutDataStream(tenant, message, newestExistingWrite) {
260
+ return __awaiter(this, void 0, void 0, function* () {
261
+ const messageWithOptionalEncodedData = Object.assign({}, message); // clone
262
+ const { dataCid, dataSize } = message.descriptor;
263
+ // Since incoming message is not an initial write, and no dataStream is provided, we first check integrity against newest existing write.
264
+ // we preform the dataCid check in case a user attempts to gain access to data by referencing a different known dataCid,
265
+ // so we insure that the data is already associated with the existing newest message
266
+ // See: https://github.com/TBD54566975/dwn-sdk-js/issues/359 for more info
267
+ RecordsWriteHandler.validateDataIntegrity(dataCid, dataSize, newestExistingWrite.descriptor.dataCid, newestExistingWrite.descriptor.dataSize);
268
+ if (dataSize <= DwnConstant.maxDataSizeAllowedToBeEncoded) {
269
+ // we encode the data from the original write if it is smaller than the data-store threshold
270
+ if (newestExistingWrite.encodedData !== undefined) {
271
+ messageWithOptionalEncodedData.encodedData = newestExistingWrite.encodedData;
272
+ }
273
+ else {
274
+ throw new DwnError(DwnErrorCode.RecordsWriteMissingEncodedDataInPrevious, `No dataStream was provided and unable to get data from previous message`);
275
+ }
276
+ }
277
+ else {
278
+ // else just make sure the data is in the data store
279
+ // attempt to retrieve the data from the previous message
280
+ const DataStoreGetResult = yield this.dataStore.get(tenant, newestExistingWrite.recordId, message.descriptor.dataCid);
281
+ if (DataStoreGetResult === undefined) {
282
+ throw new DwnError(DwnErrorCode.RecordsWriteMissingDataInPrevious, `No dataStream was provided and unable to get data from previous message`);
283
+ }
284
+ }
285
+ return messageWithOptionalEncodedData;
286
+ });
287
+ }
288
+ /**
289
+ * Validates the expected `dataCid` and `dataSize` in the descriptor vs the received data.
290
+ *
291
+ * @throws {DwnError} with `DwnErrorCode.RecordsWriteDataCidMismatch`
292
+ * if the data stream resulted in a data CID that mismatches with `dataCid` in the given message
293
+ * @throws {DwnError} with `DwnErrorCode.RecordsWriteDataSizeMismatch`
294
+ * if `dataSize` in `descriptor` given mismatches the actual data size
295
+ */
296
+ static validateDataIntegrity(expectedDataCid, expectedDataSize, actualDataCid, actualDataSize) {
297
+ if (expectedDataCid !== actualDataCid) {
298
+ throw new DwnError(DwnErrorCode.RecordsWriteDataCidMismatch, `actual data CID ${actualDataCid} does not match dataCid in descriptor: ${expectedDataCid}`);
299
+ }
300
+ if (expectedDataSize !== actualDataSize) {
301
+ throw new DwnError(DwnErrorCode.RecordsWriteDataSizeMismatch, `actual data size ${actualDataSize} bytes does not match dataSize in descriptor: ${expectedDataSize}`);
302
+ }
303
+ }
304
+ static authorizeRecordsWrite(tenant, recordsWrite, messageStore) {
305
+ return __awaiter(this, void 0, void 0, function* () {
306
+ // if owner signature is given (`owner` is not `undefined`), it must be the same as the tenant DID
307
+ if (recordsWrite.owner !== undefined && recordsWrite.owner !== tenant) {
308
+ throw new DwnError(DwnErrorCode.RecordsWriteOwnerAndTenantMismatch, `Owner ${recordsWrite.owner} must be the same as tenant ${tenant} when specified.`);
309
+ }
310
+ if (recordsWrite.isSignedByAuthorDelegate) {
311
+ yield recordsWrite.authorizeAuthorDelegate(messageStore);
312
+ }
313
+ if (recordsWrite.isSignedByOwnerDelegate) {
314
+ yield recordsWrite.authorizeOwnerDelegate(messageStore);
315
+ }
316
+ if (recordsWrite.owner !== undefined) {
317
+ // if incoming message is a write retained by this tenant, we by-design always allow
318
+ // NOTE: the "owner === tenant" check is already done earlier in this method
319
+ return;
320
+ }
321
+ else if (recordsWrite.author === tenant) {
322
+ // if author is the same as the target tenant, we can directly grant access
323
+ return;
324
+ }
325
+ else if (recordsWrite.author !== undefined && recordsWrite.signaturePayload.permissionGrantId !== undefined) {
326
+ const permissionGrant = yield PermissionsProtocol.fetchGrant(tenant, messageStore, recordsWrite.signaturePayload.permissionGrantId);
327
+ yield RecordsGrantAuthorization.authorizeWrite({
328
+ recordsWriteMessage: recordsWrite.message,
329
+ expectedGrantor: tenant,
330
+ expectedGrantee: recordsWrite.author,
331
+ permissionGrant,
332
+ messageStore
333
+ });
334
+ }
335
+ else if (recordsWrite.message.descriptor.protocol !== undefined) {
336
+ yield ProtocolAuthorization.authorizeWrite(tenant, recordsWrite, messageStore);
337
+ }
338
+ else {
339
+ throw new DwnError(DwnErrorCode.RecordsWriteAuthorizationFailed, 'message failed authorization');
340
+ }
341
+ });
342
+ }
343
+ }
344
+ //# sourceMappingURL=records-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records-write.js","sourceRoot":"","sources":["../../../../src/handlers/records-write.ts"],"names":[],"mappings":";;;;;;;;;AASA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAInF,MAAM,OAAO,mBAAmB;IAE9B,YACU,WAAwB,EACxB,YAA0B,EAC1B,SAAoB,EACpB,QAAkB,EAClB,WAAyB;QAJzB,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAU;QAClB,gBAAW,GAAX,WAAW,CAAc;IAC/B,CAAC;IAEQ,MAAM;6DAAC,EAClB,MAAM,EACN,OAAO,EACP,UAAU,EACE;YACZ,IAAI,YAA0B,CAAC;YAC/B,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAEjD,iDAAiD;gBACjD,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC9C,MAAM,qBAAqB,CAAC,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvC,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5D,MAAM,mBAAmB,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3F,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvC,CAAC;YAED,gDAAgD;YAChD,MAAM,KAAK,GAAG;gBACZ,SAAS,EAAG,gBAAgB,CAAC,OAAO;gBACpC,QAAQ,EAAI,OAAO,CAAC,QAAQ;aAC7B,CAAC;YACF,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAE,KAAK,CAAE,CAAC,CAAC;YAExF,gIAAgI;YAChI,MAAM,wBAAwB,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;YACrE,IAAI,YAA6C,CAAC;YAClD,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,YAAY,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBACpE,YAAY,CAAC,mCAAmC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAC1E,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YAE/E,IAAI,uBAAuB,GAAG,KAAK,CAAC;YACpC,IAAI,aAAa,CAAC,CAAC,qDAAqD;YACxE,IAAI,qBAAqB,KAAK,SAAS,KAAI,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA,EAAE,CAAC;gBACjG,uBAAuB,GAAG,IAAI,CAAC;gBAC/B,aAAa,GAAG,OAAO,CAAC;YAC1B,CAAC;iBAAM,CAAC,CAAC,sEAAsE;gBAC7E,aAAa,GAAG,qBAAqB,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC7B,OAAO;oBACL,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;iBAC1C,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,UAAU,CAAC,MAAM,MAAK,aAAa,CAAC,MAAM,EAAE,CAAC;oBACtE,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,iCAAiC,EAC9C,oDAAoD,CACrD,CAAC;gBACJ,CAAC;gBAED,kFAAkF;gBAClF,6IAA6I;gBAC7I,EAAE;gBACF,+HAA+H;gBAC/H,MAAM,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE7D,+IAA+I;gBAC/I,uGAAuG;gBACvG,2EAA2E;gBAC3E,2IAA2I;gBAC3I,0EAA0E;gBAC1E,IAAI,iBAAiB,GAAG,KAAK,CAAC;gBAC9B,IAAI,8BAA8B,GAAG,OAAiC,CAAC;gBAEvE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,8BAA8B,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;oBACtG,iBAAiB,GAAG,IAAI,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,mCAAmC;oBAEnC,kIAAkI;oBAClI,yDAAyD;oBACzD,IAAI,CAAC,wBAAwB,EAAE,CAAC;wBAC9B,MAAM,mBAAmB,GAAG,qBAA+C,CAAC;wBAC5E,8BAA8B,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAE,CAAC;wBACnH,iBAAiB,GAAG,IAAI,CAAC;oBAC3B,CAAC;gBACH,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;gBACvE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,EAAE,OAAO,CAAC,CAAC;gBAC7E,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE3E,iFAAiF;gBACjF,+HAA+H;gBAC/H,2FAA2F;gBAC3F,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,iBAAiB,EAAE,CAAC;oBACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,KAAY,CAAC;gBACvB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACzB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,wCAAwC;wBAClE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,iCAAiC;wBACzD,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,iCAAiC;wBACzD,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,2BAA2B;wBACnD,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,4BAA4B;wBACpD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;wBAChD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBACvC,OAAO,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAED,aAAa;gBACb,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,YAAY,GAAG;gBACnB,+GAA+G;gBAC/G,+GAA+G;gBAC/G,oBAAoB;gBACpB,MAAM,EAAE,CAAC,wBAAwB,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC;oBAC9D,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;oBACrC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE;aACpC,CAAC;YAEF,oGAAoG;YACpG,MAAM,iBAAiB,CAAC,yCAAyC,CAC/D,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAC1F,CAAC;YAEF,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAEnE,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;IAAA,CAAC;IAEF;;;OAGG;IACW,gCAAgC,CAAC,MAAc,EAAE,mBAAwC;;;YAErG,6FAA6F;YAC7F,8HAA8H;YAC9H,IAAI,mBAAmB,CAAC,UAAU,CAAC,QAAQ,KAAK,mBAAmB,CAAC,GAAG;gBACrE,mBAAmB,CAAC,UAAU,CAAC,YAAY,KAAK,mBAAmB,CAAC,cAAc,EAAE,CAAC;gBAErF,6EAA6E;gBAC7E,uDAAuD;gBACvD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,CAAC,QAAS,CAAC;gBACnE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;gBAEjG,oIAAoI;gBACpI,kDAAkD;gBAClD,MAAM,iBAAiB,GAAG,MAAA,mBAAmB,CAAC,UAAU,CAAC,IAAI,0CAAE,QAAQ,CAAC;gBACxE,MAAM,aAAa,GAAG,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnF,IAAI,aAAa,KAAK,iBAAiB,EAAE,CAAC;oBACxC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,wDAAwD,EACrE,uBAAuB,iBAAiB,kCAAkC,aAAa,EAAE,CAC1F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;KAAA;IAEO,MAAM,CAAC,iCAAiC,CAAC,mBAAwC,EAAE,SAAqB;QAC9G,IAAI,mBAAmB,CAAC,UAAU,CAAC,QAAQ,KAAK,mBAAmB,CAAC,GAAG,EAAE,CAAC;YACxE,mBAAmB,CAAC,cAAc,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;;OAGG;IACW,iCAAiC,CAAC,MAAc,EAAE,YAA0B;;YACxF,8HAA8H;YAC9H,6DAA6D;YAC7D,sGAAsG;YACtG,0FAA0F;YAC1F,kDAAkD;YAClD,mEAAmE;YACnE,uDAAuD;YACvD,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,mBAAmB,CAAC,GAAG;gBACtE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,KAAK,mBAAmB,CAAC,cAAc,EAAE,CAAC;gBACtF,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,QAAS,CAAC;gBACpE,MAAM,4BAA4B,GAAG;oBACnC,iBAAiB;oBACjB,WAAW,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE;iBACvE,CAAC;gBACF,MAAM,EAAE,QAAQ,EAAE,kCAAkC,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAE,4BAA4B,CAAE,CAAC,CAAC;gBACjI,MAAM,qCAAqC,GAAa,EAAE,CAAC;gBAC3D,KAAK,MAAM,sBAAsB,IAAI,kCAAkC,EAAE,CAAC;oBACxE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;oBAChE,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;KAAA;IAED;;OAEG;IACU,sBAAsB,CAAC,OAA4B,EAAE,SAAqB;;YACrF,MAAM,YAAY,qBAAgC,OAAO,CAAE,CAAC;YAC5D,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC/D,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;IAEa,4BAA4B,CACxC,MAAc,EACd,OAA4B,EAC5B,UAA8B;;YAE9B,IAAI,8BAA8B,GAA2B,OAAO,CAAC;YAErE,kEAAkE;YAClE,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,IAAI,WAAW,CAAC,6BAA6B,EAAE,CAAC;gBAC7E,0CAA0C;gBAC1C,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAW,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;gBAC9D,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBAE9H,mBAAmB,CAAC,iCAAiC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAE1E,8BAA8B,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,6EAA6E;gBAC7E,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAEzF,IAAI,CAAC;oBACH,kDAAkD;oBAClD,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;wBACtD,GAAG,CAAC,yBAAyB,CAAC,eAAe,CAAC;wBAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC;qBAC1F,CAAC,CAAC;oBAEH,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC3I,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,2FAA2F;oBAC3F,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBAElF,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,8BAA8B,CAAC;QACxC,CAAC;KAAA;IAEa,+BAA+B,CAC3C,MAAc,EACd,OAA4B,EAC5B,mBAA2C;;YAE3C,MAAM,8BAA8B,qBAAgC,OAAO,CAAE,CAAC,CAAC,QAAQ;YACvF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAEjD,yIAAyI;YACzI,wHAAwH;YACxH,oFAAoF;YACpF,0EAA0E;YAC1E,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE9I,IAAI,QAAQ,IAAI,WAAW,CAAC,6BAA6B,EAAE,CAAC;gBAC1D,4FAA4F;gBAC5F,IAAI,mBAAmB,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBAClD,8BAA8B,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,wCAAwC,EACrD,yEAAyE,CAC1E,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBAEpD,yDAAyD;gBACzD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAEtH,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;oBACrC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,iCAAiC,EAC9C,yEAAyE,CAC1E,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,8BAA8B,CAAC;QACxC,CAAC;KAAA;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,qBAAqB,CAClC,eAAuB,EACvB,gBAAwB,EACxB,aAAqB,EACrB,cAAsB;QAEtB,IAAI,eAAe,KAAK,aAAa,EAAE,CAAC;YACtC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,2BAA2B,EACxC,mBAAmB,aAAa,0CAA0C,eAAe,EAAE,CAC5F,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;YACxC,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,4BAA4B,EACzC,oBAAoB,cAAc,iDAAiD,gBAAgB,EAAE,CACtG,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAO,qBAAqB,CAAC,MAAc,EAAE,YAA0B,EAAE,YAA0B;;YAC/G,kGAAkG;YAClG,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBACtE,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,kCAAkC,EAC/C,SAAS,YAAY,CAAC,KAAK,+BAA+B,MAAM,kBAAkB,CACnF,CAAC;YACJ,CAAC;YAED,IAAI,YAAY,CAAC,wBAAwB,EAAE,CAAC;gBAC1C,MAAM,YAAY,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,YAAY,CAAC,uBAAuB,EAAE,CAAC;gBACzC,MAAM,YAAY,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACrC,oFAAoF;gBACpF,4EAA4E;gBAC5E,OAAO;YACT,CAAC;iBAAM,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1C,2EAA2E;gBAC3E,OAAO;YACT,CAAC;iBAAM,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,gBAAiB,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAC/G,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,gBAAiB,CAAC,iBAAiB,CAAC,CAAC;gBACrI,MAAM,yBAAyB,CAAC,cAAc,CAAC;oBAC7C,mBAAmB,EAAG,YAAY,CAAC,OAAO;oBAC1C,eAAe,EAAO,MAAM;oBAC5B,eAAe,EAAO,YAAY,CAAC,MAAM;oBACzC,eAAe;oBACf,YAAY;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClE,MAAM,qBAAqB,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,+BAA+B,EAAE,8BAA8B,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;KAAA;CACF"}
@@ -0,0 +1,49 @@
1
+ export { authenticate } from './core/auth.js';
2
+ export { AllowAllTenantGate } from './core/tenant-gate.js';
3
+ export { Cid } from './utils/cid.js';
4
+ export { RecordsQuery } from './interfaces/records-query.js';
5
+ export { DataStream } from './utils/data-stream.js';
6
+ export { HdKey, KeyDerivationScheme } from './utils/hd-key.js';
7
+ export { Dwn } from './dwn.js';
8
+ export { DwnConstant } from './core/dwn-constant.js';
9
+ export { DwnError, DwnErrorCode } from './core/dwn-error.js';
10
+ export { DwnInterfaceName, DwnMethodName } from './enums/dwn-interface-method.js';
11
+ export { Encoder } from './utils/encoder.js';
12
+ export { MessagesSubscribe as MessagesSubscribe } from './interfaces/messages-subscribe.js';
13
+ export { Encryption, EncryptionAlgorithm } from './utils/encryption.js';
14
+ export { RecordsWrite } from './interfaces/records-write.js';
15
+ export { executeUnlessAborted } from './utils/abort.js';
16
+ export { Jws } from './utils/jws.js';
17
+ export { Message } from './core/message.js';
18
+ export { MessagesRead as MessagesRead } from './interfaces/messages-read.js';
19
+ export { MessagesQuery } from './interfaces/messages-query.js';
20
+ export { PermissionGrant } from './protocols/permission-grant.js';
21
+ export { PermissionRequest } from './protocols/permission-request.js';
22
+ export { PermissionsProtocol } from './protocols/permissions.js';
23
+ export { PrivateKeySigner } from './utils/private-key-signer.js';
24
+ export { Protocols } from './utils/protocols.js';
25
+ export { ProtocolsConfigure } from './interfaces/protocols-configure.js';
26
+ export { ProtocolsQuery } from './interfaces/protocols-query.js';
27
+ export { Records } from './utils/records.js';
28
+ export { RecordsDelete } from './interfaces/records-delete.js';
29
+ export { RecordsRead } from './interfaces/records-read.js';
30
+ export { RecordsSubscribe } from './interfaces/records-subscribe.js';
31
+ export { Secp256k1 } from './utils/secp256k1.js';
32
+ export { Secp256r1 } from './utils/secp256r1.js';
33
+ export { SortDirection } from './types/query-types.js';
34
+ export { Time } from './utils/time.js';
35
+ export * from './types/permission-types.js';
36
+ export * from './types/records-types.js';
37
+ // concrete implementations of stores and event stream
38
+ export { BlockstoreLevel } from './store/blockstore-level.js';
39
+ export { DataStoreLevel } from './store/data-store-level.js';
40
+ export { EventLogLevel } from './event-log/event-log-level.js';
41
+ export { IndexLevel } from './store/index-level.js';
42
+ export { createLevelDatabase, LevelWrapper } from './store/level-wrapper.js';
43
+ export { MessageStoreLevel } from './store/message-store-level.js';
44
+ export { ResumableTaskStoreLevel } from './store/resumable-task-store-level.js';
45
+ export { EventEmitterStream } from './event-log/event-emitter-stream.js';
46
+ // test library exports
47
+ export { TestDataGenerator } from '../tests/utils/test-data-generator.js';
48
+ export { Poller } from '../tests/utils/poller.js';
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}