@abaxxtech/id 0.0.0

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 (711) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +31 -0
  3. package/README.npm.md +31 -0
  4. package/dist/bundles/dwn.js +83 -0
  5. package/dist/cjs/index.js +31250 -0
  6. package/dist/cjs/package.json +1 -0
  7. package/dist/esm/generated/precompiled-validators.js +7820 -0
  8. package/dist/esm/generated/precompiled-validators.js.map +1 -0
  9. package/dist/esm/json-schemas/definitions.json +23 -0
  10. package/dist/esm/src/core/abstract-message.js +37 -0
  11. package/dist/esm/src/core/abstract-message.js.map +1 -0
  12. package/dist/esm/src/core/auth.js +97 -0
  13. package/dist/esm/src/core/auth.js.map +1 -0
  14. package/dist/esm/src/core/dwn-constant.js +8 -0
  15. package/dist/esm/src/core/dwn-constant.js.map +1 -0
  16. package/dist/esm/src/core/dwn-error.js +138 -0
  17. package/dist/esm/src/core/dwn-error.js.map +1 -0
  18. package/dist/esm/src/core/grant-authorization.js +108 -0
  19. package/dist/esm/src/core/grant-authorization.js.map +1 -0
  20. package/dist/esm/src/core/message-reply.js +5 -0
  21. package/dist/esm/src/core/message-reply.js.map +1 -0
  22. package/dist/esm/src/core/message.js +200 -0
  23. package/dist/esm/src/core/message.js.map +1 -0
  24. package/dist/esm/src/core/protocol-authorization.js +449 -0
  25. package/dist/esm/src/core/protocol-authorization.js.map +1 -0
  26. package/dist/esm/src/core/records-grant-authorization.js +106 -0
  27. package/dist/esm/src/core/records-grant-authorization.js.map +1 -0
  28. package/dist/esm/src/core/tenant-gate.js +20 -0
  29. package/dist/esm/src/core/tenant-gate.js.map +1 -0
  30. package/dist/esm/src/did/did-dht-resolver.js +241 -0
  31. package/dist/esm/src/did/did-dht-resolver.js.map +1 -0
  32. package/dist/esm/src/did/did-ion-resolver.js +53 -0
  33. package/dist/esm/src/did/did-ion-resolver.js.map +1 -0
  34. package/dist/esm/src/did/did-key-resolver.js +135 -0
  35. package/dist/esm/src/did/did-key-resolver.js.map +1 -0
  36. package/dist/esm/src/did/did-resolver.js +70 -0
  37. package/dist/esm/src/did/did-resolver.js.map +1 -0
  38. package/dist/esm/src/did/did.js +36 -0
  39. package/dist/esm/src/did/did.js.map +1 -0
  40. package/dist/esm/src/dwn.js +164 -0
  41. package/dist/esm/src/dwn.js.map +1 -0
  42. package/dist/esm/src/enums/dwn-interface-method.js +22 -0
  43. package/dist/esm/src/enums/dwn-interface-method.js.map +1 -0
  44. package/dist/esm/src/event-log/event-log-level.js +112 -0
  45. package/dist/esm/src/event-log/event-log-level.js.map +1 -0
  46. package/dist/esm/src/handlers/events-get.js +48 -0
  47. package/dist/esm/src/handlers/events-get.js.map +1 -0
  48. package/dist/esm/src/handlers/messages-get.js +76 -0
  49. package/dist/esm/src/handlers/messages-get.js.map +1 -0
  50. package/dist/esm/src/handlers/permissions-grant.js +62 -0
  51. package/dist/esm/src/handlers/permissions-grant.js.map +1 -0
  52. package/dist/esm/src/handlers/permissions-request.js +63 -0
  53. package/dist/esm/src/handlers/permissions-request.js.map +1 -0
  54. package/dist/esm/src/handlers/permissions-revoke.js +114 -0
  55. package/dist/esm/src/handlers/permissions-revoke.js.map +1 -0
  56. package/dist/esm/src/handlers/protocols-configure.js +102 -0
  57. package/dist/esm/src/handlers/protocols-configure.js.map +1 -0
  58. package/dist/esm/src/handlers/protocols-query.js +72 -0
  59. package/dist/esm/src/handlers/protocols-query.js.map +1 -0
  60. package/dist/esm/src/handlers/records-delete.js +119 -0
  61. package/dist/esm/src/handlers/records-delete.js.map +1 -0
  62. package/dist/esm/src/handlers/records-query.js +206 -0
  63. package/dist/esm/src/handlers/records-query.js.map +1 -0
  64. package/dist/esm/src/handlers/records-read.js +118 -0
  65. package/dist/esm/src/handlers/records-read.js.map +1 -0
  66. package/dist/esm/src/handlers/records-write.js +252 -0
  67. package/dist/esm/src/handlers/records-write.js.map +1 -0
  68. package/dist/esm/src/index.js +43 -0
  69. package/dist/esm/src/index.js.map +1 -0
  70. package/dist/esm/src/interfaces/events-get.js +41 -0
  71. package/dist/esm/src/interfaces/events-get.js.map +1 -0
  72. package/dist/esm/src/interfaces/messages-get.js +58 -0
  73. package/dist/esm/src/interfaces/messages-get.js.map +1 -0
  74. package/dist/esm/src/interfaces/permissions-grant.js +130 -0
  75. package/dist/esm/src/interfaces/permissions-grant.js.map +1 -0
  76. package/dist/esm/src/interfaces/permissions-request.js +47 -0
  77. package/dist/esm/src/interfaces/permissions-request.js.map +1 -0
  78. package/dist/esm/src/interfaces/permissions-revoke.js +47 -0
  79. package/dist/esm/src/interfaces/permissions-revoke.js.map +1 -0
  80. package/dist/esm/src/interfaces/protocols-configure.js +149 -0
  81. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -0
  82. package/dist/esm/src/interfaces/protocols-query.js +80 -0
  83. package/dist/esm/src/interfaces/protocols-query.js.map +1 -0
  84. package/dist/esm/src/interfaces/records-delete.js +56 -0
  85. package/dist/esm/src/interfaces/records-delete.js.map +1 -0
  86. package/dist/esm/src/interfaces/records-query.js +81 -0
  87. package/dist/esm/src/interfaces/records-query.js.map +1 -0
  88. package/dist/esm/src/interfaces/records-read.js +65 -0
  89. package/dist/esm/src/interfaces/records-read.js.map +1 -0
  90. package/dist/esm/src/interfaces/records-write.js +677 -0
  91. package/dist/esm/src/interfaces/records-write.js.map +1 -0
  92. package/dist/esm/src/jose/algorithms/signing/ed25519.js +54 -0
  93. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -0
  94. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js +13 -0
  95. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -0
  96. package/dist/esm/src/jose/jws/general/builder.js +47 -0
  97. package/dist/esm/src/jose/jws/general/builder.js.map +1 -0
  98. package/dist/esm/src/jose/jws/general/signer.js +36 -0
  99. package/dist/esm/src/jose/jws/general/signer.js.map +1 -0
  100. package/dist/esm/src/jose/jws/general/verifier.js +97 -0
  101. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -0
  102. package/dist/esm/src/schema-validator.js +28 -0
  103. package/dist/esm/src/schema-validator.js.map +1 -0
  104. package/dist/esm/src/store/blockstore-level.js +187 -0
  105. package/dist/esm/src/store/blockstore-level.js.map +1 -0
  106. package/dist/esm/src/store/data-store-level.js +192 -0
  107. package/dist/esm/src/store/data-store-level.js.map +1 -0
  108. package/dist/esm/src/store/index-level.js +302 -0
  109. package/dist/esm/src/store/index-level.js.map +1 -0
  110. package/dist/esm/src/store/level-wrapper.js +296 -0
  111. package/dist/esm/src/store/level-wrapper.js.map +1 -0
  112. package/dist/esm/src/store/message-store-level.js +236 -0
  113. package/dist/esm/src/store/message-store-level.js.map +1 -0
  114. package/dist/esm/src/store/storage-controller.js +69 -0
  115. package/dist/esm/src/store/storage-controller.js.map +1 -0
  116. package/dist/esm/src/types/cache.js +2 -0
  117. package/dist/esm/src/types/cache.js.map +1 -0
  118. package/dist/esm/src/types/data-store.js +2 -0
  119. package/dist/esm/src/types/data-store.js.map +1 -0
  120. package/dist/esm/src/types/delegated-grant-message.js +2 -0
  121. package/dist/esm/src/types/delegated-grant-message.js.map +1 -0
  122. package/dist/esm/src/types/did-types.js +2 -0
  123. package/dist/esm/src/types/did-types.js.map +1 -0
  124. package/dist/esm/src/types/event-log.js +2 -0
  125. package/dist/esm/src/types/event-log.js.map +1 -0
  126. package/dist/esm/src/types/event-types.js +2 -0
  127. package/dist/esm/src/types/event-types.js.map +1 -0
  128. package/dist/esm/src/types/jose-types.js +2 -0
  129. package/dist/esm/src/types/jose-types.js.map +1 -0
  130. package/dist/esm/src/types/jws-types.js +2 -0
  131. package/dist/esm/src/types/jws-types.js.map +1 -0
  132. package/dist/esm/src/types/message-interface.js +2 -0
  133. package/dist/esm/src/types/message-interface.js.map +1 -0
  134. package/dist/esm/src/types/message-store.js +2 -0
  135. package/dist/esm/src/types/message-store.js.map +1 -0
  136. package/dist/esm/src/types/message-types.js +6 -0
  137. package/dist/esm/src/types/message-types.js.map +1 -0
  138. package/dist/esm/src/types/messages-types.js +2 -0
  139. package/dist/esm/src/types/messages-types.js.map +1 -0
  140. package/dist/esm/src/types/method-handler.js +2 -0
  141. package/dist/esm/src/types/method-handler.js.map +1 -0
  142. package/dist/esm/src/types/permissions-grant-descriptor.js +6 -0
  143. package/dist/esm/src/types/permissions-grant-descriptor.js.map +1 -0
  144. package/dist/esm/src/types/permissions-types.js +2 -0
  145. package/dist/esm/src/types/permissions-types.js.map +1 -0
  146. package/dist/esm/src/types/protocols-types.js +15 -0
  147. package/dist/esm/src/types/protocols-types.js.map +1 -0
  148. package/dist/esm/src/types/records-types.js +8 -0
  149. package/dist/esm/src/types/records-types.js.map +1 -0
  150. package/dist/esm/src/types/signer.js +2 -0
  151. package/dist/esm/src/types/signer.js.map +1 -0
  152. package/dist/esm/src/utils/abort.js +40 -0
  153. package/dist/esm/src/utils/abort.js.map +1 -0
  154. package/dist/esm/src/utils/array.js +72 -0
  155. package/dist/esm/src/utils/array.js.map +1 -0
  156. package/dist/esm/src/utils/cid.js +130 -0
  157. package/dist/esm/src/utils/cid.js.map +1 -0
  158. package/dist/esm/src/utils/data-stream.js +88 -0
  159. package/dist/esm/src/utils/data-stream.js.map +1 -0
  160. package/dist/esm/src/utils/encoder.js +45 -0
  161. package/dist/esm/src/utils/encoder.js.map +1 -0
  162. package/dist/esm/src/utils/encryption.js +128 -0
  163. package/dist/esm/src/utils/encryption.js.map +1 -0
  164. package/dist/esm/src/utils/hd-key.js +60 -0
  165. package/dist/esm/src/utils/hd-key.js.map +1 -0
  166. package/dist/esm/src/utils/jws.js +89 -0
  167. package/dist/esm/src/utils/jws.js.map +1 -0
  168. package/dist/esm/src/utils/memory-cache.js +41 -0
  169. package/dist/esm/src/utils/memory-cache.js.map +1 -0
  170. package/dist/esm/src/utils/object.js +50 -0
  171. package/dist/esm/src/utils/object.js.map +1 -0
  172. package/dist/esm/src/utils/private-key-signer.js +43 -0
  173. package/dist/esm/src/utils/private-key-signer.js.map +1 -0
  174. package/dist/esm/src/utils/protocols.js +51 -0
  175. package/dist/esm/src/utils/protocols.js.map +1 -0
  176. package/dist/esm/src/utils/records.js +267 -0
  177. package/dist/esm/src/utils/records.js.map +1 -0
  178. package/dist/esm/src/utils/secp256k1.js +219 -0
  179. package/dist/esm/src/utils/secp256k1.js.map +1 -0
  180. package/dist/esm/src/utils/string.js +16 -0
  181. package/dist/esm/src/utils/string.js.map +1 -0
  182. package/dist/esm/src/utils/time.js +84 -0
  183. package/dist/esm/src/utils/time.js.map +1 -0
  184. package/dist/esm/src/utils/url.js +63 -0
  185. package/dist/esm/src/utils/url.js.map +1 -0
  186. package/dist/esm/tests/core/auth.spec.js +25 -0
  187. package/dist/esm/tests/core/auth.spec.js.map +1 -0
  188. package/dist/esm/tests/core/message-reply.spec.js +19 -0
  189. package/dist/esm/tests/core/message-reply.spec.js.map +1 -0
  190. package/dist/esm/tests/core/message.spec.js +85 -0
  191. package/dist/esm/tests/core/message.spec.js.map +1 -0
  192. package/dist/esm/tests/did/did-ion-resolver.spec.js +82 -0
  193. package/dist/esm/tests/did/did-ion-resolver.spec.js.map +1 -0
  194. package/dist/esm/tests/did/did-key-resolver.spec.js +74 -0
  195. package/dist/esm/tests/did/did-key-resolver.spec.js.map +1 -0
  196. package/dist/esm/tests/did/did-resolver.spec.js +84 -0
  197. package/dist/esm/tests/did/did-resolver.spec.js.map +1 -0
  198. package/dist/esm/tests/did/did.spec.js +22 -0
  199. package/dist/esm/tests/did/did.spec.js.map +1 -0
  200. package/dist/esm/tests/dwn.spec.js +252 -0
  201. package/dist/esm/tests/dwn.spec.js.map +1 -0
  202. package/dist/esm/tests/end-to-end-tests.spec.js +218 -0
  203. package/dist/esm/tests/end-to-end-tests.spec.js.map +1 -0
  204. package/dist/esm/tests/event-log/event-log-level.spec.js +137 -0
  205. package/dist/esm/tests/event-log/event-log-level.spec.js.map +1 -0
  206. package/dist/esm/tests/handlers/events-get.spec.js +108 -0
  207. package/dist/esm/tests/handlers/events-get.spec.js.map +1 -0
  208. package/dist/esm/tests/handlers/messages-get.spec.js +209 -0
  209. package/dist/esm/tests/handlers/messages-get.spec.js.map +1 -0
  210. package/dist/esm/tests/handlers/permissions-grant.spec.js +249 -0
  211. package/dist/esm/tests/handlers/permissions-grant.spec.js.map +1 -0
  212. package/dist/esm/tests/handlers/permissions-request.spec.js +132 -0
  213. package/dist/esm/tests/handlers/permissions-request.spec.js.map +1 -0
  214. package/dist/esm/tests/handlers/permissions-revoke.spec.js +311 -0
  215. package/dist/esm/tests/handlers/permissions-revoke.spec.js.map +1 -0
  216. package/dist/esm/tests/handlers/protocols-configure.spec.js +254 -0
  217. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -0
  218. package/dist/esm/tests/handlers/protocols-query.spec.js +373 -0
  219. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -0
  220. package/dist/esm/tests/handlers/records-delete.spec.js +630 -0
  221. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -0
  222. package/dist/esm/tests/handlers/records-query.spec.js +1937 -0
  223. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -0
  224. package/dist/esm/tests/handlers/records-read.spec.js +1729 -0
  225. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -0
  226. package/dist/esm/tests/handlers/records-write.spec.js +3381 -0
  227. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -0
  228. package/dist/esm/tests/interfaces/events-get.spec.js +73 -0
  229. package/dist/esm/tests/interfaces/events-get.spec.js.map +1 -0
  230. package/dist/esm/tests/interfaces/messages-get.spec.js +93 -0
  231. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -0
  232. package/dist/esm/tests/interfaces/permissions-grant.spec.js +216 -0
  233. package/dist/esm/tests/interfaces/permissions-grant.spec.js.map +1 -0
  234. package/dist/esm/tests/interfaces/permissions-request.spec.js +45 -0
  235. package/dist/esm/tests/interfaces/permissions-request.spec.js.map +1 -0
  236. package/dist/esm/tests/interfaces/protocols-configure.spec.js +334 -0
  237. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -0
  238. package/dist/esm/tests/interfaces/protocols-query.spec.js +49 -0
  239. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -0
  240. package/dist/esm/tests/interfaces/records-delete.spec.js +42 -0
  241. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -0
  242. package/dist/esm/tests/interfaces/records-query.spec.js +75 -0
  243. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -0
  244. package/dist/esm/tests/interfaces/records-read.spec.js +65 -0
  245. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -0
  246. package/dist/esm/tests/interfaces/records-write.spec.js +369 -0
  247. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -0
  248. package/dist/esm/tests/jose/jws/general.spec.js +185 -0
  249. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -0
  250. package/dist/esm/tests/scenarios/delegated-grant.spec.js +490 -0
  251. package/dist/esm/tests/scenarios/delegated-grant.spec.js.map +1 -0
  252. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +218 -0
  253. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -0
  254. package/dist/esm/tests/store/data-store-level.spec.js +192 -0
  255. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -0
  256. package/dist/esm/tests/store/index-level.spec.js +428 -0
  257. package/dist/esm/tests/store/index-level.spec.js.map +1 -0
  258. package/dist/esm/tests/store/message-store-level.spec.js +51 -0
  259. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -0
  260. package/dist/esm/tests/store/message-store.spec.js +395 -0
  261. package/dist/esm/tests/store/message-store.spec.js.map +1 -0
  262. package/dist/esm/tests/store-dependent-tests.spec.js +8 -0
  263. package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -0
  264. package/dist/esm/tests/test-stores.js +40 -0
  265. package/dist/esm/tests/test-stores.js.map +1 -0
  266. package/dist/esm/tests/test-suite.js +51 -0
  267. package/dist/esm/tests/test-suite.js.map +1 -0
  268. package/dist/esm/tests/utils/cid.spec.js +83 -0
  269. package/dist/esm/tests/utils/cid.spec.js.map +1 -0
  270. package/dist/esm/tests/utils/data-stream.spec.js +30 -0
  271. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -0
  272. package/dist/esm/tests/utils/encryption.spec.js +151 -0
  273. package/dist/esm/tests/utils/encryption.spec.js.map +1 -0
  274. package/dist/esm/tests/utils/jws.spec.js +11 -0
  275. package/dist/esm/tests/utils/jws.spec.js.map +1 -0
  276. package/dist/esm/tests/utils/memory-cache.spec.js +38 -0
  277. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -0
  278. package/dist/esm/tests/utils/object.spec.js +39 -0
  279. package/dist/esm/tests/utils/object.spec.js.map +1 -0
  280. package/dist/esm/tests/utils/private-key-signer.spec.js +47 -0
  281. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -0
  282. package/dist/esm/tests/utils/records.spec.js +56 -0
  283. package/dist/esm/tests/utils/records.spec.js.map +1 -0
  284. package/dist/esm/tests/utils/secp256k1.spec.js +77 -0
  285. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -0
  286. package/dist/esm/tests/utils/test-data-generator.js +570 -0
  287. package/dist/esm/tests/utils/test-data-generator.js.map +1 -0
  288. package/dist/esm/tests/utils/test-stub-generator.js +39 -0
  289. package/dist/esm/tests/utils/test-stub-generator.js.map +1 -0
  290. package/dist/esm/tests/utils/time.spec.js +67 -0
  291. package/dist/esm/tests/utils/time.spec.js.map +1 -0
  292. package/dist/esm/tests/utils/url.spec.js +46 -0
  293. package/dist/esm/tests/utils/url.spec.js.map +1 -0
  294. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +36 -0
  295. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -0
  296. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +53 -0
  297. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -0
  298. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +39 -0
  299. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -0
  300. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +76 -0
  301. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -0
  302. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +74 -0
  303. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -0
  304. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +151 -0
  305. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -0
  306. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +389 -0
  307. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -0
  308. package/dist/esm/tests/vectors/protocol-definitions/anyone-collaborate.json +25 -0
  309. package/dist/esm/tests/vectors/protocol-definitions/author-can.json +32 -0
  310. package/dist/esm/tests/vectors/protocol-definitions/chat.json +56 -0
  311. package/dist/esm/tests/vectors/protocol-definitions/credential-issuance.json +37 -0
  312. package/dist/esm/tests/vectors/protocol-definitions/dex.json +52 -0
  313. package/dist/esm/tests/vectors/protocol-definitions/email.json +50 -0
  314. package/dist/esm/tests/vectors/protocol-definitions/free-for-all.json +30 -0
  315. package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +48 -0
  316. package/dist/esm/tests/vectors/protocol-definitions/message.json +20 -0
  317. package/dist/esm/tests/vectors/protocol-definitions/minimal.json +10 -0
  318. package/dist/esm/tests/vectors/protocol-definitions/nested.json +31 -0
  319. package/dist/esm/tests/vectors/protocol-definitions/private-protocol.json +13 -0
  320. package/dist/esm/tests/vectors/protocol-definitions/recipient-can.json +36 -0
  321. package/dist/esm/tests/vectors/protocol-definitions/social-media.json +88 -0
  322. package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +68 -0
  323. package/dist/types/generated/precompiled-validators.d.ts +113 -0
  324. package/dist/types/generated/precompiled-validators.d.ts.map +1 -0
  325. package/dist/types/src/core/abstract-message.d.ts +19 -0
  326. package/dist/types/src/core/abstract-message.d.ts.map +1 -0
  327. package/dist/types/src/core/auth.d.ts +30 -0
  328. package/dist/types/src/core/auth.d.ts.map +1 -0
  329. package/dist/types/src/core/dwn-constant.d.ts +8 -0
  330. package/dist/types/src/core/dwn-constant.d.ts.map +1 -0
  331. package/dist/types/src/core/dwn-error.d.ts +133 -0
  332. package/dist/types/src/core/dwn-error.d.ts.map +1 -0
  333. package/dist/types/src/core/grant-authorization.d.ts +35 -0
  334. package/dist/types/src/core/grant-authorization.d.ts.map +1 -0
  335. package/dist/types/src/core/message-reply.d.ts +33 -0
  336. package/dist/types/src/core/message-reply.d.ts.map +1 -0
  337. package/dist/types/src/core/message.d.ts +79 -0
  338. package/dist/types/src/core/message.d.ts.map +1 -0
  339. package/dist/types/src/core/protocol-authorization.d.ts +85 -0
  340. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -0
  341. package/dist/types/src/core/records-grant-authorization.d.ts +38 -0
  342. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -0
  343. package/dist/types/src/core/tenant-gate.d.ts +16 -0
  344. package/dist/types/src/core/tenant-gate.d.ts.map +1 -0
  345. package/dist/types/src/did/did-dht-resolver.d.ts +26 -0
  346. package/dist/types/src/did/did-dht-resolver.d.ts.map +1 -0
  347. package/dist/types/src/did/did-ion-resolver.d.ts +20 -0
  348. package/dist/types/src/did/did-ion-resolver.d.ts.map +1 -0
  349. package/dist/types/src/did/did-key-resolver.d.ts +32 -0
  350. package/dist/types/src/did/did-key-resolver.d.ts.map +1 -0
  351. package/dist/types/src/did/did-resolver.d.ts +20 -0
  352. package/dist/types/src/did/did-resolver.d.ts.map +1 -0
  353. package/dist/types/src/did/did.d.ts +15 -0
  354. package/dist/types/src/did/did.d.ts.map +1 -0
  355. package/dist/types/src/dwn.d.ts +74 -0
  356. package/dist/types/src/dwn.d.ts.map +1 -0
  357. package/dist/types/src/enums/dwn-interface-method.d.ts +20 -0
  358. package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -0
  359. package/dist/types/src/event-log/event-log-level.d.ts +26 -0
  360. package/dist/types/src/event-log/event-log-level.d.ts.map +1 -0
  361. package/dist/types/src/handlers/events-get.d.ts +16 -0
  362. package/dist/types/src/handlers/events-get.d.ts.map +1 -0
  363. package/dist/types/src/handlers/messages-get.d.ts +18 -0
  364. package/dist/types/src/handlers/messages-get.d.ts.map +1 -0
  365. package/dist/types/src/handlers/permissions-grant.d.ts +17 -0
  366. package/dist/types/src/handlers/permissions-grant.d.ts.map +1 -0
  367. package/dist/types/src/handlers/permissions-request.d.ts +17 -0
  368. package/dist/types/src/handlers/permissions-request.d.ts.map +1 -0
  369. package/dist/types/src/handlers/permissions-revoke.d.ts +17 -0
  370. package/dist/types/src/handlers/permissions-revoke.d.ts.map +1 -0
  371. package/dist/types/src/handlers/protocols-configure.d.ts +21 -0
  372. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -0
  373. package/dist/types/src/handlers/protocols-query.d.ts +20 -0
  374. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -0
  375. package/dist/types/src/handlers/records-delete.d.ts +22 -0
  376. package/dist/types/src/handlers/records-delete.d.ts.map +1 -0
  377. package/dist/types/src/handlers/records-query.d.ts +78 -0
  378. package/dist/types/src/handlers/records-query.d.ts.map +1 -0
  379. package/dist/types/src/handlers/records-read.d.ts +17 -0
  380. package/dist/types/src/handlers/records-read.d.ts.map +1 -0
  381. package/dist/types/src/handlers/records-write.d.ts +61 -0
  382. package/dist/types/src/handlers/records-write.d.ts.map +1 -0
  383. package/dist/types/src/index.d.ts +72 -0
  384. package/dist/types/src/index.d.ts.map +1 -0
  385. package/dist/types/src/interfaces/events-get.d.ts +13 -0
  386. package/dist/types/src/interfaces/events-get.d.ts.map +1 -0
  387. package/dist/types/src/interfaces/messages-get.d.ts +19 -0
  388. package/dist/types/src/interfaces/messages-get.d.ts.map +1 -0
  389. package/dist/types/src/interfaces/permissions-grant.d.ts +59 -0
  390. package/dist/types/src/interfaces/permissions-grant.d.ts.map +1 -0
  391. package/dist/types/src/interfaces/permissions-request.d.ts +19 -0
  392. package/dist/types/src/interfaces/permissions-request.d.ts.map +1 -0
  393. package/dist/types/src/interfaces/permissions-revoke.d.ts +14 -0
  394. package/dist/types/src/interfaces/permissions-revoke.d.ts.map +1 -0
  395. package/dist/types/src/interfaces/protocols-configure.d.ts +21 -0
  396. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -0
  397. package/dist/types/src/interfaces/protocols-query.d.ts +17 -0
  398. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -0
  399. package/dist/types/src/interfaces/records-delete.d.ts +24 -0
  400. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -0
  401. package/dist/types/src/interfaces/records-query.d.ts +29 -0
  402. package/dist/types/src/interfaces/records-query.d.ts.map +1 -0
  403. package/dist/types/src/interfaces/records-read.d.ts +31 -0
  404. package/dist/types/src/interfaces/records-read.d.ts.map +1 -0
  405. package/dist/types/src/interfaces/records-write.d.ts +259 -0
  406. package/dist/types/src/interfaces/records-write.d.ts.map +1 -0
  407. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts +3 -0
  408. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -0
  409. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +3 -0
  410. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -0
  411. package/dist/types/src/jose/jws/general/builder.d.ts +10 -0
  412. package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -0
  413. package/dist/types/src/jose/jws/general/signer.d.ts +8 -0
  414. package/dist/types/src/jose/jws/general/signer.d.ts.map +1 -0
  415. package/dist/types/src/jose/jws/general/verifier.d.ts +32 -0
  416. package/dist/types/src/jose/jws/general/verifier.d.ts.map +1 -0
  417. package/dist/types/src/schema-validator.d.ts +8 -0
  418. package/dist/types/src/schema-validator.d.ts.map +1 -0
  419. package/dist/types/src/store/blockstore-level.d.ts +35 -0
  420. package/dist/types/src/store/blockstore-level.d.ts.map +1 -0
  421. package/dist/types/src/store/data-store-level.d.ts +44 -0
  422. package/dist/types/src/store/data-store-level.d.ts.map +1 -0
  423. package/dist/types/src/store/index-level.d.ts +69 -0
  424. package/dist/types/src/store/index-level.d.ts.map +1 -0
  425. package/dist/types/src/store/level-wrapper.d.ts +44 -0
  426. package/dist/types/src/store/level-wrapper.d.ts.map +1 -0
  427. package/dist/types/src/store/message-store-level.d.ts +70 -0
  428. package/dist/types/src/store/message-store-level.d.ts.map +1 -0
  429. package/dist/types/src/store/storage-controller.d.ts +19 -0
  430. package/dist/types/src/store/storage-controller.d.ts.map +1 -0
  431. package/dist/types/src/types/cache.d.ts +16 -0
  432. package/dist/types/src/types/cache.d.ts.map +1 -0
  433. package/dist/types/src/types/data-store.d.ts +69 -0
  434. package/dist/types/src/types/data-store.d.ts.map +1 -0
  435. package/dist/types/src/types/delegated-grant-message.d.ts +14 -0
  436. package/dist/types/src/types/delegated-grant-message.d.ts.map +1 -0
  437. package/dist/types/src/types/did-types.d.ts +68 -0
  438. package/dist/types/src/types/did-types.d.ts.map +1 -0
  439. package/dist/types/src/types/event-log.d.ts +39 -0
  440. package/dist/types/src/types/event-log.d.ts.map +1 -0
  441. package/dist/types/src/types/event-types.d.ts +18 -0
  442. package/dist/types/src/types/event-types.d.ts.map +1 -0
  443. package/dist/types/src/types/jose-types.d.ts +75 -0
  444. package/dist/types/src/types/jose-types.d.ts.map +1 -0
  445. package/dist/types/src/types/jws-types.d.ts +27 -0
  446. package/dist/types/src/types/jws-types.d.ts.map +1 -0
  447. package/dist/types/src/types/message-interface.d.ts +22 -0
  448. package/dist/types/src/types/message-interface.d.ts.map +1 -0
  449. package/dist/types/src/types/message-store.d.ts +43 -0
  450. package/dist/types/src/types/message-store.d.ts.map +1 -0
  451. package/dist/types/src/types/message-types.d.ts +113 -0
  452. package/dist/types/src/types/message-types.d.ts.map +1 -0
  453. package/dist/types/src/types/messages-types.d.ts +23 -0
  454. package/dist/types/src/types/messages-types.d.ts.map +1 -0
  455. package/dist/types/src/types/method-handler.d.ts +17 -0
  456. package/dist/types/src/types/method-handler.d.ts.map +1 -0
  457. package/dist/types/src/types/permissions-grant-descriptor.d.ts +65 -0
  458. package/dist/types/src/types/permissions-grant-descriptor.d.ts.map +1 -0
  459. package/dist/types/src/types/permissions-types.d.ts +33 -0
  460. package/dist/types/src/types/permissions-types.d.ts.map +1 -0
  461. package/dist/types/src/types/protocols-types.d.ts +138 -0
  462. package/dist/types/src/types/protocols-types.d.ts.map +1 -0
  463. package/dist/types/src/types/records-types.d.ts +164 -0
  464. package/dist/types/src/types/records-types.d.ts.map +1 -0
  465. package/dist/types/src/types/signer.d.ts +26 -0
  466. package/dist/types/src/types/signer.d.ts.map +1 -0
  467. package/dist/types/src/utils/abort.d.ts +5 -0
  468. package/dist/types/src/utils/abort.d.ts.map +1 -0
  469. package/dist/types/src/utils/array.d.ts +18 -0
  470. package/dist/types/src/utils/array.d.ts.map +1 -0
  471. package/dist/types/src/utils/cid.d.ts +30 -0
  472. package/dist/types/src/utils/cid.d.ts.map +1 -0
  473. package/dist/types/src/utils/data-stream.d.ts +27 -0
  474. package/dist/types/src/utils/data-stream.d.ts.map +1 -0
  475. package/dist/types/src/utils/encoder.d.ts +14 -0
  476. package/dist/types/src/utils/encoder.d.ts.map +1 -0
  477. package/dist/types/src/utils/encryption.d.ts +44 -0
  478. package/dist/types/src/utils/encryption.d.ts.map +1 -0
  479. package/dist/types/src/utils/hd-key.d.ts +35 -0
  480. package/dist/types/src/utils/hd-key.d.ts.map +1 -0
  481. package/dist/types/src/utils/jws.d.ts +39 -0
  482. package/dist/types/src/utils/jws.d.ts.map +1 -0
  483. package/dist/types/src/utils/memory-cache.d.ts +15 -0
  484. package/dist/types/src/utils/memory-cache.d.ts.map +1 -0
  485. package/dist/types/src/utils/object.d.ts +18 -0
  486. package/dist/types/src/utils/object.d.ts.map +1 -0
  487. package/dist/types/src/utils/private-key-signer.d.ts +34 -0
  488. package/dist/types/src/utils/private-key-signer.d.ts.map +1 -0
  489. package/dist/types/src/utils/protocols.d.ts +14 -0
  490. package/dist/types/src/utils/protocols.d.ts.map +1 -0
  491. package/dist/types/src/utils/records.d.ts +68 -0
  492. package/dist/types/src/utils/records.d.ts.map +1 -0
  493. package/dist/types/src/utils/secp256k1.d.ts +78 -0
  494. package/dist/types/src/utils/secp256k1.d.ts.map +1 -0
  495. package/dist/types/src/utils/string.d.ts +6 -0
  496. package/dist/types/src/utils/string.d.ts.map +1 -0
  497. package/dist/types/src/utils/time.d.ts +49 -0
  498. package/dist/types/src/utils/time.d.ts.map +1 -0
  499. package/dist/types/src/utils/url.d.ts +5 -0
  500. package/dist/types/src/utils/url.d.ts.map +1 -0
  501. package/dist/types/tests/core/auth.spec.d.ts +2 -0
  502. package/dist/types/tests/core/auth.spec.d.ts.map +1 -0
  503. package/dist/types/tests/core/message-reply.spec.d.ts +2 -0
  504. package/dist/types/tests/core/message-reply.spec.d.ts.map +1 -0
  505. package/dist/types/tests/core/message.spec.d.ts +2 -0
  506. package/dist/types/tests/core/message.spec.d.ts.map +1 -0
  507. package/dist/types/tests/did/did-ion-resolver.spec.d.ts +2 -0
  508. package/dist/types/tests/did/did-ion-resolver.spec.d.ts.map +1 -0
  509. package/dist/types/tests/did/did-key-resolver.spec.d.ts +2 -0
  510. package/dist/types/tests/did/did-key-resolver.spec.d.ts.map +1 -0
  511. package/dist/types/tests/did/did-resolver.spec.d.ts +2 -0
  512. package/dist/types/tests/did/did-resolver.spec.d.ts.map +1 -0
  513. package/dist/types/tests/did/did.spec.d.ts +2 -0
  514. package/dist/types/tests/did/did.spec.d.ts.map +1 -0
  515. package/dist/types/tests/dwn.spec.d.ts +2 -0
  516. package/dist/types/tests/dwn.spec.d.ts.map +1 -0
  517. package/dist/types/tests/end-to-end-tests.spec.d.ts +2 -0
  518. package/dist/types/tests/end-to-end-tests.spec.d.ts.map +1 -0
  519. package/dist/types/tests/event-log/event-log-level.spec.d.ts +2 -0
  520. package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +1 -0
  521. package/dist/types/tests/handlers/events-get.spec.d.ts +2 -0
  522. package/dist/types/tests/handlers/events-get.spec.d.ts.map +1 -0
  523. package/dist/types/tests/handlers/messages-get.spec.d.ts +2 -0
  524. package/dist/types/tests/handlers/messages-get.spec.d.ts.map +1 -0
  525. package/dist/types/tests/handlers/permissions-grant.spec.d.ts +2 -0
  526. package/dist/types/tests/handlers/permissions-grant.spec.d.ts.map +1 -0
  527. package/dist/types/tests/handlers/permissions-request.spec.d.ts +2 -0
  528. package/dist/types/tests/handlers/permissions-request.spec.d.ts.map +1 -0
  529. package/dist/types/tests/handlers/permissions-revoke.spec.d.ts +2 -0
  530. package/dist/types/tests/handlers/permissions-revoke.spec.d.ts.map +1 -0
  531. package/dist/types/tests/handlers/protocols-configure.spec.d.ts +2 -0
  532. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -0
  533. package/dist/types/tests/handlers/protocols-query.spec.d.ts +2 -0
  534. package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -0
  535. package/dist/types/tests/handlers/records-delete.spec.d.ts +2 -0
  536. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -0
  537. package/dist/types/tests/handlers/records-query.spec.d.ts +2 -0
  538. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -0
  539. package/dist/types/tests/handlers/records-read.spec.d.ts +2 -0
  540. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -0
  541. package/dist/types/tests/handlers/records-write.spec.d.ts +2 -0
  542. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -0
  543. package/dist/types/tests/interfaces/events-get.spec.d.ts +2 -0
  544. package/dist/types/tests/interfaces/events-get.spec.d.ts.map +1 -0
  545. package/dist/types/tests/interfaces/messages-get.spec.d.ts +2 -0
  546. package/dist/types/tests/interfaces/messages-get.spec.d.ts.map +1 -0
  547. package/dist/types/tests/interfaces/permissions-grant.spec.d.ts +2 -0
  548. package/dist/types/tests/interfaces/permissions-grant.spec.d.ts.map +1 -0
  549. package/dist/types/tests/interfaces/permissions-request.spec.d.ts +2 -0
  550. package/dist/types/tests/interfaces/permissions-request.spec.d.ts.map +1 -0
  551. package/dist/types/tests/interfaces/protocols-configure.spec.d.ts +2 -0
  552. package/dist/types/tests/interfaces/protocols-configure.spec.d.ts.map +1 -0
  553. package/dist/types/tests/interfaces/protocols-query.spec.d.ts +2 -0
  554. package/dist/types/tests/interfaces/protocols-query.spec.d.ts.map +1 -0
  555. package/dist/types/tests/interfaces/records-delete.spec.d.ts +2 -0
  556. package/dist/types/tests/interfaces/records-delete.spec.d.ts.map +1 -0
  557. package/dist/types/tests/interfaces/records-query.spec.d.ts +2 -0
  558. package/dist/types/tests/interfaces/records-query.spec.d.ts.map +1 -0
  559. package/dist/types/tests/interfaces/records-read.spec.d.ts +2 -0
  560. package/dist/types/tests/interfaces/records-read.spec.d.ts.map +1 -0
  561. package/dist/types/tests/interfaces/records-write.spec.d.ts +2 -0
  562. package/dist/types/tests/interfaces/records-write.spec.d.ts.map +1 -0
  563. package/dist/types/tests/jose/jws/general.spec.d.ts +2 -0
  564. package/dist/types/tests/jose/jws/general.spec.d.ts.map +1 -0
  565. package/dist/types/tests/scenarios/delegated-grant.spec.d.ts +2 -0
  566. package/dist/types/tests/scenarios/delegated-grant.spec.d.ts.map +1 -0
  567. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts +2 -0
  568. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -0
  569. package/dist/types/tests/store/data-store-level.spec.d.ts +2 -0
  570. package/dist/types/tests/store/data-store-level.spec.d.ts.map +1 -0
  571. package/dist/types/tests/store/index-level.spec.d.ts +2 -0
  572. package/dist/types/tests/store/index-level.spec.d.ts.map +1 -0
  573. package/dist/types/tests/store/message-store-level.spec.d.ts +2 -0
  574. package/dist/types/tests/store/message-store-level.spec.d.ts.map +1 -0
  575. package/dist/types/tests/store/message-store.spec.d.ts +2 -0
  576. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -0
  577. package/dist/types/tests/store-dependent-tests.spec.d.ts +2 -0
  578. package/dist/types/tests/store-dependent-tests.spec.d.ts.map +1 -0
  579. package/dist/types/tests/test-stores.d.ts +30 -0
  580. package/dist/types/tests/test-stores.d.ts.map +1 -0
  581. package/dist/types/tests/test-suite.d.ts +16 -0
  582. package/dist/types/tests/test-suite.d.ts.map +1 -0
  583. package/dist/types/tests/utils/cid.spec.d.ts +2 -0
  584. package/dist/types/tests/utils/cid.spec.d.ts.map +1 -0
  585. package/dist/types/tests/utils/data-stream.spec.d.ts +2 -0
  586. package/dist/types/tests/utils/data-stream.spec.d.ts.map +1 -0
  587. package/dist/types/tests/utils/encryption.spec.d.ts +2 -0
  588. package/dist/types/tests/utils/encryption.spec.d.ts.map +1 -0
  589. package/dist/types/tests/utils/jws.spec.d.ts +2 -0
  590. package/dist/types/tests/utils/jws.spec.d.ts.map +1 -0
  591. package/dist/types/tests/utils/memory-cache.spec.d.ts +2 -0
  592. package/dist/types/tests/utils/memory-cache.spec.d.ts.map +1 -0
  593. package/dist/types/tests/utils/object.spec.d.ts +2 -0
  594. package/dist/types/tests/utils/object.spec.d.ts.map +1 -0
  595. package/dist/types/tests/utils/private-key-signer.spec.d.ts +2 -0
  596. package/dist/types/tests/utils/private-key-signer.spec.d.ts.map +1 -0
  597. package/dist/types/tests/utils/records.spec.d.ts +2 -0
  598. package/dist/types/tests/utils/records.spec.d.ts.map +1 -0
  599. package/dist/types/tests/utils/secp256k1.spec.d.ts +2 -0
  600. package/dist/types/tests/utils/secp256k1.spec.d.ts.map +1 -0
  601. package/dist/types/tests/utils/test-data-generator.d.ts +323 -0
  602. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -0
  603. package/dist/types/tests/utils/test-stub-generator.d.ts +16 -0
  604. package/dist/types/tests/utils/test-stub-generator.d.ts.map +1 -0
  605. package/dist/types/tests/utils/time.spec.d.ts +2 -0
  606. package/dist/types/tests/utils/time.spec.d.ts.map +1 -0
  607. package/dist/types/tests/utils/url.spec.d.ts +2 -0
  608. package/dist/types/tests/utils/url.spec.d.ts.map +1 -0
  609. package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts +2 -0
  610. package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts.map +1 -0
  611. package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts +2 -0
  612. package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts.map +1 -0
  613. package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts +2 -0
  614. package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts.map +1 -0
  615. package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts +2 -0
  616. package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts.map +1 -0
  617. package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts +2 -0
  618. package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts.map +1 -0
  619. package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts +2 -0
  620. package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts.map +1 -0
  621. package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts +2 -0
  622. package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts.map +1 -0
  623. package/package.json +156 -0
  624. package/src/core/abstract-message.ts +48 -0
  625. package/src/core/auth.ts +108 -0
  626. package/src/core/dwn-constant.ts +7 -0
  627. package/src/core/dwn-error.ts +136 -0
  628. package/src/core/grant-authorization.ts +163 -0
  629. package/src/core/message-reply.ts +42 -0
  630. package/src/core/message.ts +224 -0
  631. package/src/core/protocol-authorization.ts +691 -0
  632. package/src/core/records-grant-authorization.ts +167 -0
  633. package/src/core/tenant-gate.ts +18 -0
  634. package/src/did/did-dht-resolver.ts +241 -0
  635. package/src/did/did-ion-resolver.ts +52 -0
  636. package/src/did/did-key-resolver.ts +137 -0
  637. package/src/did/did-resolver.ts +77 -0
  638. package/src/did/did.ts +39 -0
  639. package/src/dwn.ts +213 -0
  640. package/src/enums/dwn-interface-method.ts +20 -0
  641. package/src/event-log/event-log-level.ts +116 -0
  642. package/src/handlers/events-get.ts +46 -0
  643. package/src/handlers/messages-get.ts +80 -0
  644. package/src/handlers/permissions-grant.ts +52 -0
  645. package/src/handlers/permissions-request.ts +54 -0
  646. package/src/handlers/permissions-revoke.ts +121 -0
  647. package/src/handlers/protocols-configure.ts +104 -0
  648. package/src/handlers/protocols-query.ts +81 -0
  649. package/src/handlers/records-delete.ts +139 -0
  650. package/src/handlers/records-query.ts +253 -0
  651. package/src/handlers/records-read.ts +127 -0
  652. package/src/handlers/records-write.ts +296 -0
  653. package/src/index.ts +81 -0
  654. package/src/interfaces/events-get.ts +43 -0
  655. package/src/interfaces/messages-get.ts +59 -0
  656. package/src/interfaces/permissions-grant.ts +175 -0
  657. package/src/interfaces/permissions-request.ts +55 -0
  658. package/src/interfaces/permissions-revoke.ts +46 -0
  659. package/src/interfaces/protocols-configure.ts +188 -0
  660. package/src/interfaces/protocols-query.ts +99 -0
  661. package/src/interfaces/records-delete.ts +67 -0
  662. package/src/interfaces/records-query.ts +100 -0
  663. package/src/interfaces/records-read.ts +82 -0
  664. package/src/interfaces/records-write.ts +924 -0
  665. package/src/jose/algorithms/signing/ed25519.ts +61 -0
  666. package/src/jose/algorithms/signing/signature-algorithms.ts +15 -0
  667. package/src/jose/jws/general/builder.ts +48 -0
  668. package/src/jose/jws/general/signer.ts +29 -0
  669. package/src/jose/jws/general/verifier.ts +113 -0
  670. package/src/schema-validator.ts +34 -0
  671. package/src/store/blockstore-level.ts +113 -0
  672. package/src/store/data-store-level.ts +188 -0
  673. package/src/store/index-level.ts +306 -0
  674. package/src/store/level-wrapper.ts +262 -0
  675. package/src/store/message-store-level.ts +284 -0
  676. package/src/store/storage-controller.ts +80 -0
  677. package/src/types/cache.ts +16 -0
  678. package/src/types/data-store.ts +78 -0
  679. package/src/types/delegated-grant-message.ts +15 -0
  680. package/src/types/did-types.ts +95 -0
  681. package/src/types/event-log.ts +46 -0
  682. package/src/types/event-types.ts +20 -0
  683. package/src/types/jose-types.ts +76 -0
  684. package/src/types/jws-types.ts +28 -0
  685. package/src/types/message-interface.ts +24 -0
  686. package/src/types/message-store.ts +56 -0
  687. package/src/types/message-types.ts +115 -0
  688. package/src/types/messages-types.ts +26 -0
  689. package/src/types/method-handler.ts +17 -0
  690. package/src/types/permissions-grant-descriptor.ts +79 -0
  691. package/src/types/permissions-types.ts +42 -0
  692. package/src/types/protocols-types.ts +154 -0
  693. package/src/types/records-types.ts +184 -0
  694. package/src/types/signer.ts +27 -0
  695. package/src/utils/abort.ts +31 -0
  696. package/src/utils/array.ts +39 -0
  697. package/src/utils/cid.ts +101 -0
  698. package/src/utils/data-stream.ts +85 -0
  699. package/src/utils/encoder.ts +54 -0
  700. package/src/utils/encryption.ts +145 -0
  701. package/src/utils/hd-key.ts +58 -0
  702. package/src/utils/jws.ts +95 -0
  703. package/src/utils/memory-cache.ts +31 -0
  704. package/src/utils/object.ts +55 -0
  705. package/src/utils/private-key-signer.ts +72 -0
  706. package/src/utils/protocols.ts +50 -0
  707. package/src/utils/records.ts +326 -0
  708. package/src/utils/secp256k1.ts +209 -0
  709. package/src/utils/string.ts +13 -0
  710. package/src/utils/time.ts +77 -0
  711. package/src/utils/url.ts +66 -0
@@ -0,0 +1,218 @@
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 chaiAsPromised from 'chai-as-promised';
11
+ import sinon from 'sinon';
12
+ import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' with { type: 'json' };
13
+ import { authenticate } from '../../src/core/auth.js';
14
+ import { DidKeyResolver } from '../../src/did/did-key-resolver.js';
15
+ import { Encoder } from '../../src/index.js';
16
+ import { HdKey } from '../../src/utils/hd-key.js';
17
+ import { KeyDerivationScheme } from '../../src/utils/hd-key.js';
18
+ import { TestDataGenerator } from '../utils/test-data-generator.js';
19
+ import { TestStores } from '../test-stores.js';
20
+ import { TestStubGenerator } from '../utils/test-stub-generator.js';
21
+ import chai, { expect } from 'chai';
22
+ import { DataStream, DidResolver, Dwn, Jws, Protocols, ProtocolsConfigure, ProtocolsQuery, Records, RecordsRead } from '../../src/index.js';
23
+ chai.use(chaiAsPromised);
24
+ export function testEndToEndScenarios() {
25
+ describe('End-to-end Scenarios Spanning Features', () => {
26
+ if (process.env.TESTSOFF === 'true') {
27
+ return;
28
+ }
29
+ let didResolver;
30
+ let messageStore;
31
+ let dataStore;
32
+ let eventLog;
33
+ let dwn;
34
+ // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
35
+ // so that different test suites can reuse the same backend store for testing
36
+ before(() => __awaiter(this, void 0, void 0, function* () {
37
+ didResolver = new DidResolver([new DidKeyResolver()]);
38
+ const stores = TestStores.get();
39
+ messageStore = stores.messageStore;
40
+ dataStore = stores.dataStore;
41
+ eventLog = stores.eventLog;
42
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog });
43
+ }));
44
+ beforeEach(() => __awaiter(this, void 0, void 0, function* () {
45
+ sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
46
+ // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
47
+ yield messageStore.clear();
48
+ yield dataStore.clear();
49
+ yield eventLog.clear();
50
+ }));
51
+ after(() => __awaiter(this, void 0, void 0, function* () {
52
+ yield dwn.close();
53
+ }));
54
+ it('should support a multi-participant encrypted chat protocol', () => __awaiter(this, void 0, void 0, function* () {
55
+ // Scenario:
56
+ // 1. Alice starts a chat thread
57
+ // 2. Alice adds Bob as a participant with [symmetric key] encrypted using [Bob's participant-level public key]
58
+ // 3. Alice writes a chat message(s) in the thread
59
+ // 4. Alice sends an invite to Bob's DWN with the [context/thread ID]
60
+ // 5. Bob fetches the invite from his DWN and obtains the [context/thread ID]
61
+ // 6. Bob fetches the entire thread using the [context/thread ID]
62
+ // 7. Bob is able to decrypt all thread content
63
+ // creating Alice and Bob persona and setting up a stub DID resolver
64
+ const alice = yield TestDataGenerator.generatePersona();
65
+ const bob = yield TestDataGenerator.generatePersona();
66
+ TestStubGenerator.stubDidResolver(didResolver, [alice, bob]);
67
+ const protocolDefinition = threadRoleProtocolDefinition;
68
+ // Alice configures chat protocol with encryption
69
+ const protocolDefinitionForAlice = yield Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, alice.keyId, alice.keyPair.privateJwk);
70
+ const protocolsConfigureForAlice = yield TestDataGenerator.generateProtocolsConfigure({
71
+ author: alice,
72
+ protocolDefinition: protocolDefinitionForAlice
73
+ });
74
+ const protocolsConfigureForAliceReply = yield dwn.processMessage(alice.did, protocolsConfigureForAlice.message);
75
+ expect(protocolsConfigureForAliceReply.status.code).to.equal(202);
76
+ // Bob configures chat protocol with encryption
77
+ const protocolDefinitionForBob = yield Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, bob.keyId, bob.keyPair.privateJwk);
78
+ const protocolsConfigureForBob = yield TestDataGenerator.generateProtocolsConfigure({
79
+ author: bob,
80
+ protocolDefinition: protocolDefinitionForBob
81
+ });
82
+ const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfigureForBob.message);
83
+ expect(protocolsConfigureReply.status.code).to.equal(202);
84
+ // 1. Alice starts a chat thread writing to her own DWN
85
+ const threadBytes = Encoder.objectToBytes({ title: 'Top Secret' });
86
+ const threadRecord = yield TestDataGenerator.generateProtocolEncryptedRecordsWrite({
87
+ plaintextBytes: threadBytes,
88
+ author: alice,
89
+ protocolDefinition: protocolDefinition,
90
+ protocolPath: 'thread',
91
+ encryptSymmetricKeyWithProtocolPathDerivedKey: false,
92
+ encryptSymmetricKeyWithProtocolContextDerivedKey: true
93
+ });
94
+ const threadRecordReply1 = yield dwn.processMessage(alice.did, threadRecord.message, threadRecord.dataStream);
95
+ expect(threadRecordReply1.status.code).to.equal(202);
96
+ // 2. Alice adds Bob as a participant giving him the [context-derived private key] encrypted using [Bob's participant-level public key]
97
+ // the context-derived key to be used for encrypting symmetric keys
98
+ const aliceRootKey = {
99
+ rootKeyId: alice.keyId,
100
+ derivationScheme: KeyDerivationScheme.ProtocolContext,
101
+ derivedPrivateKey: alice.keyPair.privateJwk
102
+ };
103
+ const contextDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(threadRecord.message.contextId);
104
+ const contextDerivedPrivateKey = yield HdKey.derivePrivateKey(aliceRootKey, contextDerivationPath);
105
+ const contextDerivedPublicKey = threadRecord.encryptionInput.keyEncryptionInputs[0].publicKey;
106
+ // Alice queries Bob's DWN for Bob's chat protocol definition containing public key declarations
107
+ const protocolsQuery = yield ProtocolsQuery.create({
108
+ filter: { protocol: threadRoleProtocolDefinition.protocol }
109
+ });
110
+ const protocolsQueryReply = yield dwn.processMessage(bob.did, protocolsQuery.message);
111
+ const protocolConfigureMessageOfBobFetched = protocolsQueryReply.entries[0];
112
+ // Alice verifies that the chat protocol definition is authored by Bob
113
+ yield authenticate(protocolConfigureMessageOfBobFetched.authorization, didResolver);
114
+ const protocolsConfigureOfBobFetched = yield ProtocolsConfigure.parse(protocolConfigureMessageOfBobFetched);
115
+ expect(protocolsConfigureOfBobFetched.author).to.equal(bob.did);
116
+ // generate the encrypted participant record using Bob's protocol configuration fetched
117
+ const participantBobRecord = yield TestDataGenerator.generateProtocolEncryptedRecordsWrite({
118
+ plaintextBytes: Encoder.objectToBytes(contextDerivedPrivateKey),
119
+ author: alice,
120
+ recipient: bob.did,
121
+ protocolDefinition: protocolsConfigureOfBobFetched.message.descriptor.definition,
122
+ protocolPath: 'thread/participant',
123
+ protocolContextId: threadRecord.message.contextId,
124
+ protocolParentId: threadRecord.message.recordId,
125
+ encryptSymmetricKeyWithProtocolPathDerivedKey: true,
126
+ encryptSymmetricKeyWithProtocolContextDerivedKey: false // this could be `true` also, but mostly orthogonal to the scenario
127
+ });
128
+ const participantRecordReply = yield dwn.processMessage(alice.did, participantBobRecord.message, participantBobRecord.dataStream);
129
+ expect(participantRecordReply.status.code).to.equal(202);
130
+ // 3. Alice writes a chat message(s) in the thread
131
+ const messageByAlice = 'Message from Alice';
132
+ const chatMessageByAlice = yield TestDataGenerator.generateProtocolEncryptedRecordsWrite({
133
+ plaintextBytes: Encoder.stringToBytes(messageByAlice),
134
+ author: alice,
135
+ recipient: alice.did, // this is arguably irrelevant in multi-party communication
136
+ protocolDefinition: protocolDefinition,
137
+ protocolPath: 'thread/chat',
138
+ protocolContextId: threadRecord.message.contextId,
139
+ protocolContextDerivingRootKeyId: aliceRootKey.rootKeyId,
140
+ protocolContextDerivedPublicJwk: contextDerivedPublicKey,
141
+ protocolParentId: threadRecord.message.recordId,
142
+ encryptSymmetricKeyWithProtocolPathDerivedKey: false,
143
+ encryptSymmetricKeyWithProtocolContextDerivedKey: true
144
+ });
145
+ const chatMessageReply = yield dwn.processMessage(alice.did, chatMessageByAlice.message, chatMessageByAlice.dataStream);
146
+ expect(chatMessageReply.status.code).to.equal(202);
147
+ // Assume the below steps can be done since it is a common DWN usage pattern
148
+ // 4. Alice sends an invite to Bob's DWN with the [context/thread ID]
149
+ // 5. Bob fetches the invite from his DWN and obtains the [context/thread ID]
150
+ // 6. Bob fetches the entire thread using the [context/thread ID]
151
+ // Test that Bob is able to read his 'participant' role to obtain the context-derived private key for message decryption.
152
+ // He doesn't need to invoke the role because recipients of a record are always authorized to read it
153
+ const participantRead = yield RecordsRead.create({
154
+ signer: Jws.createSigner(bob),
155
+ filter: {
156
+ protocolPath: 'thread/participant',
157
+ recipient: bob.did,
158
+ contextId: threadRecord.message.contextId
159
+ },
160
+ });
161
+ const participantReadReply = yield dwn.processMessage(alice.did, participantRead.message);
162
+ expect(participantReadReply.status.code).to.equal(200);
163
+ // Test that Bob is able to read the thread root record
164
+ const threadRead = yield RecordsRead.create({
165
+ signer: Jws.createSigner(bob),
166
+ filter: {
167
+ protocolPath: 'thread',
168
+ contextId: threadRecord.message.contextId
169
+ },
170
+ protocolRole: 'thread/participant'
171
+ });
172
+ const threadReadReply = yield dwn.processMessage(alice.did, threadRead.message);
173
+ expect(threadReadReply.status.code).to.equal(200);
174
+ expect(threadReadReply.record).to.exist;
175
+ // Test Bob can invoke his 'participant' role to read the chat message
176
+ const chatRead = yield RecordsRead.create({
177
+ signer: Jws.createSigner(bob),
178
+ filter: {
179
+ protocolPath: 'thread/chat',
180
+ contextId: threadRecord.message.contextId
181
+ },
182
+ protocolRole: 'thread/participant'
183
+ });
184
+ const chatReadReply = yield dwn.processMessage(alice.did, chatRead.message);
185
+ expect(chatReadReply.status.code).to.equal(200);
186
+ expect(chatReadReply.record).to.exist;
187
+ // 7. Bob is able to decrypt all thread content
188
+ // Bob decrypts the participant message to obtain the context-derived private key
189
+ const bobRootKey = {
190
+ rootKeyId: bob.keyId,
191
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
192
+ derivedPrivateKey: bob.keyPair.privateJwk
193
+ };
194
+ const participantRecordFetched = participantReadReply.record;
195
+ const encryptedContextDerivedPrivateKeyBytes = yield DataStream.toBytes(participantRecordFetched.data); // to create streams for testing
196
+ const derivationPathFromProtocolPath = Records.constructKeyDerivationPathUsingProtocolPathScheme(participantRecordFetched.descriptor);
197
+ const bobProtocolPathDerivedPrivateKey = yield HdKey.derivePrivateKey(bobRootKey, derivationPathFromProtocolPath);
198
+ const decryptedContextDerivedKeyStream = yield Records.decrypt(participantRecordFetched, bobProtocolPathDerivedPrivateKey, DataStream.fromBytes(encryptedContextDerivedPrivateKeyBytes));
199
+ const decryptedContextDerivedPrivateKey = yield DataStream.toObject(decryptedContextDerivedKeyStream);
200
+ expect(decryptedContextDerivedPrivateKey).to.deep.equal(contextDerivedPrivateKey);
201
+ // Arguably unrelated to the scenario, but let's sanity check that Bob's root key can also decrypt the encrypted context-derived private key
202
+ const decryptedContextDerivedKeyStream2 = yield Records.decrypt(participantRecordFetched, bobRootKey, DataStream.fromBytes(encryptedContextDerivedPrivateKeyBytes));
203
+ const decryptedContextDerivedPrivateKey2 = yield DataStream.toObject(decryptedContextDerivedKeyStream2);
204
+ expect(decryptedContextDerivedPrivateKey2).to.deep.equal(contextDerivedPrivateKey);
205
+ // Verify that Bob can now decrypt Alice's chat thread record using the decrypted context-derived key
206
+ const decryptedChatThread = yield Records.decrypt(threadReadReply.record, decryptedContextDerivedPrivateKey, threadReadReply.record.data);
207
+ expect(yield DataStream.toBytes(decryptedChatThread)).to.deep.equal(threadBytes);
208
+ // Verify that Bob can now decrypt Alice's chat message using the decrypted context-derived key
209
+ const encryptedChatMessageBytes = yield DataStream.toBytes(chatReadReply.record.data); // to create streams for testing
210
+ const decryptedChatMessage = yield Records.decrypt(chatReadReply.record, decryptedContextDerivedPrivateKey, DataStream.fromBytes(encryptedChatMessageBytes));
211
+ expect(yield DataStream.toBytes(decryptedChatMessage)).to.deep.equal(Encoder.stringToBytes(messageByAlice));
212
+ // Arguably unrelated to the scenario, but let's also sanity check that Alice's root key can also decrypt the encrypted chat message
213
+ const decryptedChatMessageStream2 = yield Records.decrypt(chatReadReply.record, aliceRootKey, DataStream.fromBytes(encryptedChatMessageBytes));
214
+ expect(yield DataStream.toBytes(decryptedChatMessageStream2)).to.deep.equal(Encoder.stringToBytes(messageByAlice));
215
+ }));
216
+ });
217
+ }
218
+ //# sourceMappingURL=end-to-end-tests.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"end-to-end-tests.spec.js","sourceRoot":"","sources":["../../../../tests/scenarios/end-to-end-tests.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
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 chaiAsPromised from 'chai-as-promised';
11
+ import chai, { expect } from 'chai';
12
+ import { ArrayUtility } from '../../src/utils/array.js';
13
+ import { Cid } from '../../src/utils/cid.js';
14
+ import { DataStoreLevel } from '../../src/store/data-store-level.js';
15
+ import { DataStream } from '../../src/index.js';
16
+ import { TestDataGenerator } from '../utils/test-data-generator.js';
17
+ chai.use(chaiAsPromised);
18
+ let store;
19
+ describe('DataStoreLevel Test Suite', () => {
20
+ if (process.env.TESTSOFF === 'true') {
21
+ return;
22
+ }
23
+ before(() => __awaiter(void 0, void 0, void 0, function* () {
24
+ store = new DataStoreLevel({ blockstoreLocation: 'tests/data/TEST-DATASTORE' });
25
+ yield store.open();
26
+ }));
27
+ beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
28
+ yield store.clear(); // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
29
+ }));
30
+ after(() => __awaiter(void 0, void 0, void 0, function* () {
31
+ yield store.close();
32
+ }));
33
+ describe('put', function () {
34
+ it('should return the correct size of the data stored', () => __awaiter(this, void 0, void 0, function* () {
35
+ const tenant = yield TestDataGenerator.randomCborSha256Cid();
36
+ const messageCid = yield TestDataGenerator.randomCborSha256Cid();
37
+ let dataSizeInBytes = 10;
38
+ // iterate through order of magnitude in size until hitting 10MB
39
+ while (dataSizeInBytes <= 10000000) {
40
+ const dataBytes = TestDataGenerator.randomBytes(dataSizeInBytes);
41
+ const dataStream = DataStream.fromBytes(dataBytes);
42
+ const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
43
+ const { dataSize } = yield store.put(tenant, messageCid, dataCid, dataStream);
44
+ expect(dataSize).to.equal(dataSizeInBytes);
45
+ const result = (yield store.get(tenant, messageCid, dataCid));
46
+ const storedDataBytes = yield DataStream.toBytes(result.dataStream);
47
+ expect(storedDataBytes).to.eql(dataBytes);
48
+ dataSizeInBytes *= 10;
49
+ }
50
+ }));
51
+ it('should duplicate same data if written to different tenants', () => __awaiter(this, void 0, void 0, function* () {
52
+ const alice = yield TestDataGenerator.randomCborSha256Cid();
53
+ const bob = yield TestDataGenerator.randomCborSha256Cid();
54
+ const dataBytes = TestDataGenerator.randomBytes(100);
55
+ const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
56
+ const blockstoreForData = yield store.blockstore.partition('data');
57
+ const blockstoreOfAlice = yield blockstoreForData.partition(alice);
58
+ const blockstoreOfAliceOfDataCid = yield blockstoreOfAlice.partition(dataCid);
59
+ const blockstoreOfBob = yield blockstoreForData.partition(bob);
60
+ const blockstoreOfBobOfDataCid = yield blockstoreOfBob.partition(dataCid);
61
+ // write data to alice's DWN
62
+ const dataStream1 = DataStream.fromBytes(dataBytes);
63
+ const messageCid1 = yield TestDataGenerator.randomCborSha256Cid();
64
+ yield store.put(alice, messageCid1, dataCid, dataStream1);
65
+ // write same data to bob's DWN
66
+ const dataStream2 = DataStream.fromBytes(dataBytes);
67
+ const messageCid2 = yield TestDataGenerator.randomCborSha256Cid();
68
+ yield store.put(bob, messageCid2, dataCid, dataStream2);
69
+ // verify that both alice and bob's blockstore have their own reference to data CID
70
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
71
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
72
+ }));
73
+ });
74
+ describe('get', function () {
75
+ it('should return `undefined if unable to find the data specified`', () => __awaiter(this, void 0, void 0, function* () {
76
+ const tenant = yield TestDataGenerator.randomCborSha256Cid();
77
+ const messageCid = yield TestDataGenerator.randomCborSha256Cid();
78
+ const randomCid = yield TestDataGenerator.randomCborSha256Cid();
79
+ const result = yield store.get(tenant, messageCid, randomCid);
80
+ expect(result).to.be.undefined;
81
+ }));
82
+ it('should return `undefined if the dataCid is different than the dataStream`', () => __awaiter(this, void 0, void 0, function* () {
83
+ const tenant = yield TestDataGenerator.randomCborSha256Cid();
84
+ const messageCid = yield TestDataGenerator.randomCborSha256Cid();
85
+ const randomCid = yield TestDataGenerator.randomCborSha256Cid();
86
+ const dataBytes = TestDataGenerator.randomBytes(10000000);
87
+ const dataStream = DataStream.fromBytes(dataBytes);
88
+ const { dataCid } = yield store.put(tenant, messageCid, randomCid, dataStream);
89
+ expect(dataCid).to.not.equal(randomCid);
90
+ const result = yield store.get(tenant, messageCid, randomCid);
91
+ expect(result).to.be.undefined;
92
+ }));
93
+ });
94
+ describe('associate', function () {
95
+ it('should return `false` if tenant missing', () => __awaiter(this, void 0, void 0, function* () {
96
+ const tenant = yield TestDataGenerator.randomCborSha256Cid();
97
+ const messageCid = yield TestDataGenerator.randomCborSha256Cid();
98
+ const randomCid = yield TestDataGenerator.randomCborSha256Cid();
99
+ const keysBeforeAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
100
+ expect(keysBeforeAssociate.length).to.equal(0);
101
+ const result = yield store.associate(tenant, messageCid, randomCid);
102
+ expect(result).to.be.undefined;
103
+ const keysAfterAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
104
+ expect(keysAfterAssociate.length).to.equal(0);
105
+ }));
106
+ it('should return `false` if data missing', () => __awaiter(this, void 0, void 0, function* () {
107
+ const tenant = yield TestDataGenerator.randomCborSha256Cid();
108
+ const messageCid = yield TestDataGenerator.randomCborSha256Cid();
109
+ const randomCid = yield TestDataGenerator.randomCborSha256Cid();
110
+ const dataBytes = TestDataGenerator.randomBytes(10);
111
+ const dataStream = DataStream.fromBytes(dataBytes);
112
+ const { dataCid } = yield store.put(tenant, messageCid, randomCid, dataStream);
113
+ expect(dataCid).to.not.equal(randomCid);
114
+ const keysBeforeAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
115
+ expect(keysBeforeAssociate.length).to.equal(2);
116
+ const result = yield store.associate(tenant, messageCid, randomCid);
117
+ expect(result).to.be.undefined;
118
+ const keysAfterAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
119
+ expect(keysAfterAssociate.length).to.equal(2);
120
+ }));
121
+ it('should return the root CID', () => __awaiter(this, void 0, void 0, function* () {
122
+ const tenant = yield TestDataGenerator.randomCborSha256Cid();
123
+ const messageCid = yield TestDataGenerator.randomCborSha256Cid();
124
+ const dataBytes = TestDataGenerator.randomBytes(10000000);
125
+ const dataStream = DataStream.fromBytes(dataBytes);
126
+ const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
127
+ yield store.put(tenant, messageCid, dataCid, dataStream);
128
+ const keysBeforeDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
129
+ expect(keysBeforeDelete.length).to.equal(41);
130
+ const result = (yield store.associate(tenant, messageCid, dataCid));
131
+ expect(result.dataCid).to.equal(dataCid);
132
+ expect(result.dataSize).to.equal(10000000);
133
+ const keysAfterDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
134
+ expect(keysAfterDelete.length).to.equal(41);
135
+ }));
136
+ });
137
+ describe('delete', function () {
138
+ it('should not leave anything behind when deleting a the root CID', () => __awaiter(this, void 0, void 0, function* () {
139
+ const tenant = yield TestDataGenerator.randomCborSha256Cid();
140
+ const messageCid = yield TestDataGenerator.randomCborSha256Cid();
141
+ const dataBytes = TestDataGenerator.randomBytes(10000000);
142
+ const dataStream = DataStream.fromBytes(dataBytes);
143
+ const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
144
+ yield store.put(tenant, messageCid, dataCid, dataStream);
145
+ const keysBeforeDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
146
+ expect(keysBeforeDelete.length).to.equal(41);
147
+ yield store.delete(tenant, messageCid, dataCid);
148
+ const keysAfterDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
149
+ expect(keysAfterDelete.length).to.equal(0);
150
+ }));
151
+ it('should only delete data after all messages referencing it are deleted', () => __awaiter(this, void 0, void 0, function* () {
152
+ const alice = yield TestDataGenerator.randomCborSha256Cid();
153
+ const bob = yield TestDataGenerator.randomCborSha256Cid();
154
+ const dataBytes = TestDataGenerator.randomBytes(100);
155
+ const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
156
+ const blockstoreForData = yield store.blockstore.partition('data');
157
+ const blockstoreOfAlice = yield blockstoreForData.partition(alice);
158
+ const blockstoreOfAliceOfDataCid = yield blockstoreOfAlice.partition(dataCid);
159
+ const blockstoreOfBob = yield blockstoreForData.partition(bob);
160
+ const blockstoreOfBobOfDataCid = yield blockstoreOfBob.partition(dataCid);
161
+ // alice writes a records with data
162
+ const dataStream1 = DataStream.fromBytes(dataBytes);
163
+ const messageCid1 = yield TestDataGenerator.randomCborSha256Cid();
164
+ yield store.put(alice, messageCid1, dataCid, dataStream1);
165
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
166
+ // alice writes a different record with same data again
167
+ const dataStream2 = DataStream.fromBytes(dataBytes);
168
+ const messageCid2 = yield TestDataGenerator.randomCborSha256Cid();
169
+ yield store.put(alice, messageCid2, dataCid, dataStream2);
170
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
171
+ // bob writes a records with same data
172
+ const dataStream3 = DataStream.fromBytes(dataBytes);
173
+ const messageCid3 = yield TestDataGenerator.randomCborSha256Cid();
174
+ yield store.put(bob, messageCid3, dataCid, dataStream3);
175
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
176
+ // bob writes a different record with same data again
177
+ const dataStream4 = DataStream.fromBytes(dataBytes);
178
+ const messageCid4 = yield TestDataGenerator.randomCborSha256Cid();
179
+ yield store.put(bob, messageCid4, dataCid, dataStream4);
180
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
181
+ // alice deletes one of the two records
182
+ yield store.delete(alice, messageCid1, dataCid);
183
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
184
+ // alice deletes the other record
185
+ yield store.delete(alice, messageCid2, dataCid);
186
+ // verify that data is deleted in alice's blockstore, but remains in bob's blockstore
187
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([]);
188
+ yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
189
+ }));
190
+ });
191
+ });
192
+ //# sourceMappingURL=data-store-level.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-store-level.spec.js","sourceRoot":"","sources":["../../../../tests/store/data-store-level.spec.ts"],"names":[],"mappings":"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"}