@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,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
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
11
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
12
+ var m = o[Symbol.asyncIterator], i;
13
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
14
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
15
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
16
+ };
17
+ import { BlockstoreLevel } from './blockstore-level.js';
18
+ import { createLevelDatabase } from './level-wrapper.js';
19
+ import { exporter } from 'ipfs-unixfs-exporter';
20
+ import { importer } from 'ipfs-unixfs-importer';
21
+ import { Readable } from 'readable-stream';
22
+ // `BlockstoreLevel` doesn't support being a `Set` (i.e. it always requires a value), so use a placeholder instead.
23
+ const PLACEHOLDER_VALUE = new Uint8Array();
24
+ /**
25
+ * A simple implementation of {@link DataStore} that works in both the browser and server-side.
26
+ * Leverages LevelDB under the hood.
27
+ *
28
+ * It has the following structure (`+` represents a sublevel and `->` represents a key->value pair):
29
+ * 'data' + <tenant> + <dataCid> -> <data>
30
+ * 'references' + <tenant> + <dataCid> + <messageCid> -> PLACEHOLDER_VALUE
31
+ *
32
+ * This allows for the <data> to be shared for everything that uses the same <dataCid> while also making
33
+ * sure that the <data> can only be deleted if there are no <messageCid> for any <tenant> still using it.
34
+ */
35
+ export class DataStoreLevel {
36
+ constructor(config = {}) {
37
+ this.config = Object.assign({ blockstoreLocation: 'data/DATASTORE', createLevelDatabase }, config);
38
+ this.blockstore = new BlockstoreLevel({
39
+ location: this.config.blockstoreLocation,
40
+ createLevelDatabase: this.config.createLevelDatabase,
41
+ });
42
+ }
43
+ open() {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ yield this.blockstore.open();
46
+ });
47
+ }
48
+ close() {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ yield this.blockstore.close();
51
+ });
52
+ }
53
+ put(tenant, messageCid, dataCid, dataStream) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ var _a, e_1, _b, _c;
56
+ var _d, _e;
57
+ const blockstoreForReferenceCounting = yield this.getBlockstoreForReferenceCounting(tenant, dataCid);
58
+ yield blockstoreForReferenceCounting.put(messageCid, PLACEHOLDER_VALUE);
59
+ const blockstoreForData = yield this.getBlockstoreForStoringData(tenant, dataCid);
60
+ const asyncDataBlocks = importer([{ content: dataStream }], blockstoreForData, { cidVersion: 1 });
61
+ // NOTE: the last block contains the root CID as well as info to derive the data size
62
+ let dataDagRoot;
63
+ try {
64
+ for (var _f = true, asyncDataBlocks_1 = __asyncValues(asyncDataBlocks), asyncDataBlocks_1_1; asyncDataBlocks_1_1 = yield asyncDataBlocks_1.next(), _a = asyncDataBlocks_1_1.done, !_a; _f = true) {
65
+ _c = asyncDataBlocks_1_1.value;
66
+ _f = false;
67
+ dataDagRoot = _c;
68
+ ;
69
+ }
70
+ }
71
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
72
+ finally {
73
+ try {
74
+ if (!_f && !_a && (_b = asyncDataBlocks_1.return)) yield _b.call(asyncDataBlocks_1);
75
+ }
76
+ finally { if (e_1) throw e_1.error; }
77
+ }
78
+ return {
79
+ dataCid: String(dataDagRoot.cid),
80
+ dataSize: Number((_e = (_d = dataDagRoot.unixfs) === null || _d === void 0 ? void 0 : _d.fileSize()) !== null && _e !== void 0 ? _e : dataDagRoot.size)
81
+ };
82
+ });
83
+ }
84
+ get(tenant, messageCid, dataCid) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ const blockstoreForReferenceCounting = yield this.getBlockstoreForReferenceCounting(tenant, dataCid);
87
+ const allowed = yield blockstoreForReferenceCounting.has(messageCid);
88
+ if (!allowed) {
89
+ return undefined;
90
+ }
91
+ const blockstoreForData = yield this.getBlockstoreForStoringData(tenant, dataCid);
92
+ const exists = yield blockstoreForData.has(dataCid);
93
+ if (!exists) {
94
+ return undefined;
95
+ }
96
+ // data is chunked into dag-pb unixfs blocks. re-inflate the chunks.
97
+ const dataDagRoot = yield exporter(dataCid, blockstoreForData);
98
+ const contentIterator = dataDagRoot.content();
99
+ const dataStream = new Readable({
100
+ read() {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ const result = yield contentIterator.next();
103
+ if (result.done) {
104
+ this.push(null); // end the stream
105
+ }
106
+ else {
107
+ this.push(result.value);
108
+ }
109
+ });
110
+ }
111
+ });
112
+ let dataSize = dataDagRoot.size;
113
+ if (dataDagRoot.type === 'file' || dataDagRoot.type === 'directory') {
114
+ dataSize = dataDagRoot.unixfs.fileSize();
115
+ }
116
+ return {
117
+ dataCid: String(dataDagRoot.cid),
118
+ dataSize: Number(dataSize),
119
+ dataStream,
120
+ };
121
+ });
122
+ }
123
+ associate(tenant, messageCid, dataCid) {
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ const blockstoreForReferenceCounting = yield this.getBlockstoreForReferenceCounting(tenant, dataCid);
126
+ const noExistingReference = yield blockstoreForReferenceCounting.isEmpty();
127
+ if (noExistingReference) {
128
+ return undefined;
129
+ }
130
+ const blockstoreForData = yield this.getBlockstoreForStoringData(tenant, dataCid);
131
+ const dataExists = yield blockstoreForData.has(dataCid);
132
+ if (!dataExists) {
133
+ return undefined;
134
+ }
135
+ yield blockstoreForReferenceCounting.put(messageCid, PLACEHOLDER_VALUE);
136
+ const dataDagRoot = yield exporter(dataCid, blockstoreForData);
137
+ let dataSize = dataDagRoot.size;
138
+ if (dataDagRoot.type === 'file' || dataDagRoot.type === 'directory') {
139
+ dataSize = dataDagRoot.unixfs.fileSize();
140
+ }
141
+ return {
142
+ dataCid: String(dataDagRoot.cid),
143
+ dataSize: Number(dataSize)
144
+ };
145
+ });
146
+ }
147
+ delete(tenant, messageCid, dataCid) {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ const blockstoreForReferenceCounting = yield this.getBlockstoreForReferenceCounting(tenant, dataCid);
150
+ yield blockstoreForReferenceCounting.delete(messageCid);
151
+ const wasLastReference = yield blockstoreForReferenceCounting.isEmpty();
152
+ if (!wasLastReference) {
153
+ return;
154
+ }
155
+ const blockstoreForData = yield this.getBlockstoreForStoringData(tenant, dataCid);
156
+ yield blockstoreForData.clear();
157
+ });
158
+ }
159
+ /**
160
+ * Deletes everything in the store. Mainly used in tests.
161
+ */
162
+ clear() {
163
+ return __awaiter(this, void 0, void 0, function* () {
164
+ yield this.blockstore.clear();
165
+ });
166
+ }
167
+ /**
168
+ * Gets the blockstore used for reference counting purposes for the given `dataCid` in the given `tenant`.
169
+ */
170
+ getBlockstoreForReferenceCounting(tenant, dataCid) {
171
+ return __awaiter(this, void 0, void 0, function* () {
172
+ const referenceCountingPartitionName = 'references';
173
+ const blockstoreForReferenceCounting = yield this.blockstore.partition(referenceCountingPartitionName);
174
+ const blockstoreForReferenceCountingByTenant = yield blockstoreForReferenceCounting.partition(tenant);
175
+ const blockstoreForReferenceCountingDataCid = yield blockstoreForReferenceCountingByTenant.partition(dataCid);
176
+ return blockstoreForReferenceCountingDataCid;
177
+ });
178
+ }
179
+ /**
180
+ * Gets the blockstore used for storing data for the given `dataCid` in the given `tenant`.
181
+ */
182
+ getBlockstoreForStoringData(tenant, dataCid) {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ const dataPartitionName = 'data';
185
+ const blockstoreForData = yield this.blockstore.partition(dataPartitionName);
186
+ const blockstoreOfGivenTenant = yield blockstoreForData.partition(tenant);
187
+ const blockstoreOfGivenDataCid = yield blockstoreOfGivenTenant.partition(dataCid);
188
+ return blockstoreOfGivenDataCid;
189
+ });
190
+ }
191
+ }
192
+ //# sourceMappingURL=data-store-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-store-level.js","sourceRoot":"","sources":["../../../../src/store/data-store-level.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,302 @@
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
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
11
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
12
+ var m = o[Symbol.asyncIterator], i;
13
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
14
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
15
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
16
+ };
17
+ import { executeUnlessAborted } from '../utils/abort.js';
18
+ import { flatten } from '../utils/object.js';
19
+ import { createLevelDatabase, LevelWrapper } from './level-wrapper.js';
20
+ /**
21
+ * A LevelDB implementation for indexing the messages stored in the DWN.
22
+ */
23
+ export class IndexLevel {
24
+ constructor(config) {
25
+ this.config = Object.assign({ createLevelDatabase }, config);
26
+ this.db = new LevelWrapper(Object.assign(Object.assign({}, this.config), { valueEncoding: 'utf8' }));
27
+ }
28
+ open() {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ return this.db.open();
31
+ });
32
+ }
33
+ close() {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ return this.db.close();
36
+ });
37
+ }
38
+ /**
39
+ * Adds indexes for a specific data/object/content.
40
+ * @param dataId ID of the data/object/content being indexed.
41
+ */
42
+ put(tenant, dataId, indexes, options) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const partition = yield executeUnlessAborted(this.db.partition(tenant), options === null || options === void 0 ? void 0 : options.signal);
45
+ indexes = flatten(indexes);
46
+ const operations = [];
47
+ // create an index entry for each property in the `indexes`
48
+ for (const propertyName in indexes) {
49
+ const propertyValue = indexes[propertyName];
50
+ // NOTE: appending data ID after (property + value) serves two purposes:
51
+ // 1. creates a unique entry of the property-value pair per data/object
52
+ // 2. when we need to delete all indexes of a given data ID (`delete()`), we can reconstruct the index keys and remove the indexes efficiently
53
+ //
54
+ // example keys (\u0000 is just shown for illustration purpose because it is the delimiter used to join the string segments below):
55
+ // 'interface\u0000"Records"\u0000bafyreigs3em7lrclhntzhgvkrf75j2muk6e7ypq3lrw3ffgcpyazyw6pry'
56
+ // 'method\u0000"Write"\u0000bafyreigs3em7lrclhntzhgvkrf75j2muk6e7ypq3lrw3ffgcpyazyw6pry'
57
+ // 'schema\u0000"http://ud4kyzon6ugxn64boz7v"\u0000bafyreigs3em7lrclhntzhgvkrf75j2muk6e7ypq3lrw3ffgcpyazyw6pry'
58
+ // 'dataCid\u0000"bafkreic3ie3cxsblp46vn3ofumdnwiqqk4d5ah7uqgpcn6xps4skfvagze"\u0000bafyreigs3em7lrclhntzhgvkrf75j2muk6e7ypq3lrw3ffgcpyazyw6pry'
59
+ // 'dateCreated\u0000"2023-05-25T18:23:29.425008Z"\u0000bafyreigs3em7lrclhntzhgvkrf75j2muk6e7ypq3lrw3ffgcpyazyw6pry'
60
+ const key = this.join(propertyName, this.encodeValue(propertyValue), dataId);
61
+ operations.push({ type: 'put', key, value: dataId });
62
+ }
63
+ // create a reverse lookup entry for data ID -> its indexes
64
+ // this is for indexes deletion (`delete()`): so that given the data ID, we are able to delete all its indexes
65
+ // we can consider putting this info in a different data partition if this ever becomes more complex/confusing
66
+ operations.push({ type: 'put', key: `__${dataId}__indexes`, value: JSON.stringify(indexes) });
67
+ yield partition.batch(operations, options);
68
+ });
69
+ }
70
+ /**
71
+ * Executes the given single filter query and appends the results without duplicate into `matchedIDs`.
72
+ */
73
+ executeSingleFilterQuery(tenant, filter, matchedIDs, options) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ var _a;
76
+ // Note: We have an array of Promises in order to support OR (anyOf) matches when given a list of accepted values for a property
77
+ const propertyNameToPromises = {};
78
+ // Do a separate DB query for each property in `filter`
79
+ // We will find the union of these many individual queries later.
80
+ for (const propertyName in filter) {
81
+ const propertyFilter = filter[propertyName];
82
+ if (typeof propertyFilter === 'object') {
83
+ if (Array.isArray(propertyFilter)) {
84
+ // `propertyFilter` is a AnyOfFilter
85
+ // Support OR matches by querying for each values separately,
86
+ // then adding them to the promises associated with `propertyName`
87
+ propertyNameToPromises[propertyName] = [];
88
+ for (const propertyValue of new Set(propertyFilter)) {
89
+ const exactMatchesPromise = this.findExactMatches(tenant, propertyName, propertyValue, options);
90
+ propertyNameToPromises[propertyName].push(exactMatchesPromise);
91
+ }
92
+ }
93
+ else {
94
+ // `propertyFilter` is a `RangeFilter`
95
+ const rangeMatchesPromise = this.findRangeMatches(tenant, propertyName, propertyFilter, options);
96
+ propertyNameToPromises[propertyName] = [rangeMatchesPromise];
97
+ }
98
+ }
99
+ else {
100
+ // propertyFilter is an EqualFilter, meaning it is a non-object primitive type
101
+ const exactMatchesPromise = this.findExactMatches(tenant, propertyName, propertyFilter, options);
102
+ propertyNameToPromises[propertyName] = [exactMatchesPromise];
103
+ }
104
+ }
105
+ // map of ID of all data/object -> list of missing property matches
106
+ // if count of missing property matches is 0, it means the data/object fully matches the filter
107
+ const missingPropertyMatchesForId = {};
108
+ // resolve promises for each property match and
109
+ // eliminate matched property from `missingPropertyMatchesForId` iteratively to work out complete matches
110
+ for (const [propertyName, promises] of Object.entries(propertyNameToPromises)) {
111
+ // acting as an OR match for the property, any of the promises returning a match will be treated as a property match
112
+ for (const promise of promises) {
113
+ // reminder: the promise returns a list of IDs of data satisfying a particular match
114
+ for (const dataId of yield promise) {
115
+ // short circuit: if a data is already included to the final matched ID set (by a different `Filter`),
116
+ // no need to evaluate if the data satisfies this current filter being evaluated
117
+ if (matchedIDs.has(dataId)) {
118
+ continue;
119
+ }
120
+ // if first time seeing a property matching for the data/object, record all properties needing a match to track progress
121
+ (_a = missingPropertyMatchesForId[dataId]) !== null && _a !== void 0 ? _a : (missingPropertyMatchesForId[dataId] = new Set([...Object.keys(filter)]));
122
+ missingPropertyMatchesForId[dataId].delete(propertyName);
123
+ if (missingPropertyMatchesForId[dataId].size === 0) {
124
+ // full filter match, add it to return list
125
+ matchedIDs.add(dataId);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ });
131
+ }
132
+ query(tenant, filters, options) {
133
+ return __awaiter(this, void 0, void 0, function* () {
134
+ const matchedIDs = new Set();
135
+ for (const filter of filters) {
136
+ yield this.executeSingleFilterQuery(tenant, filter, matchedIDs, options);
137
+ }
138
+ return [...matchedIDs];
139
+ });
140
+ }
141
+ delete(tenant, dataId, options) {
142
+ return __awaiter(this, void 0, void 0, function* () {
143
+ const partition = yield executeUnlessAborted(this.db.partition(tenant), options === null || options === void 0 ? void 0 : options.signal);
144
+ const serializedIndexes = yield partition.get(`__${dataId}__indexes`, options);
145
+ if (!serializedIndexes) {
146
+ return;
147
+ }
148
+ const indexes = JSON.parse(serializedIndexes);
149
+ // delete all indexes associated with the data of the given ID
150
+ const ops = [];
151
+ for (const propertyName in indexes) {
152
+ const propertyValue = indexes[propertyName];
153
+ const key = this.join(propertyName, this.encodeValue(propertyValue), dataId);
154
+ ops.push({ type: 'del', key });
155
+ }
156
+ ops.push({ type: 'del', key: `__${dataId}__indexes` });
157
+ yield partition.batch(ops, options);
158
+ });
159
+ }
160
+ clear() {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ return this.db.clear();
163
+ });
164
+ }
165
+ /**
166
+ * @returns IDs of data that matches the exact property and value.
167
+ */
168
+ findExactMatches(tenant, propertyName, propertyValue, options) {
169
+ return __awaiter(this, void 0, void 0, function* () {
170
+ var _a, e_1, _b, _c;
171
+ const partition = yield executeUnlessAborted(this.db.partition(tenant), options === null || options === void 0 ? void 0 : options.signal);
172
+ const propertyValuePrefix = this.join(propertyName, this.encodeValue(propertyValue), '');
173
+ const iteratorOptions = {
174
+ gt: propertyValuePrefix
175
+ };
176
+ const matches = [];
177
+ try {
178
+ for (var _d = true, _e = __asyncValues(partition.iterator(iteratorOptions, options)), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
179
+ _c = _f.value;
180
+ _d = false;
181
+ const [key, dataId] = _c;
182
+ if (!key.startsWith(propertyValuePrefix)) {
183
+ break;
184
+ }
185
+ matches.push(dataId);
186
+ }
187
+ }
188
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
189
+ finally {
190
+ try {
191
+ if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
192
+ }
193
+ finally { if (e_1) throw e_1.error; }
194
+ }
195
+ return matches;
196
+ });
197
+ }
198
+ /**
199
+ * @returns IDs of data that matches the range filter.
200
+ */
201
+ findRangeMatches(tenant, propertyName, rangeFilter, options) {
202
+ return __awaiter(this, void 0, void 0, function* () {
203
+ var _a, e_2, _b, _c;
204
+ const partition = yield executeUnlessAborted(this.db.partition(tenant), options === null || options === void 0 ? void 0 : options.signal);
205
+ const iteratorOptions = {};
206
+ for (const comparator in rangeFilter) {
207
+ const comparatorName = comparator;
208
+ iteratorOptions[comparatorName] = this.join(propertyName, this.encodeValue(rangeFilter[comparatorName]));
209
+ }
210
+ // if there is no lower bound specified (`gt` or `gte`), we need to iterate from the upper bound,
211
+ // so that we will iterate over all the matches before hitting mismatches.
212
+ if (iteratorOptions.gt === undefined && iteratorOptions.gte === undefined) {
213
+ iteratorOptions.reverse = true;
214
+ }
215
+ const matches = [];
216
+ try {
217
+ for (var _d = true, _e = __asyncValues(partition.iterator(iteratorOptions, options)), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
218
+ _c = _f.value;
219
+ _d = false;
220
+ const [key, dataId] = _c;
221
+ // if "greater-than" is specified, skip all keys that contains the exact value given in the "greater-than" condition
222
+ if ('gt' in rangeFilter && IndexLevel.extractValueFromKey(key) === this.encodeValue(rangeFilter.gt)) {
223
+ continue;
224
+ }
225
+ // immediately stop if we arrive at an index entry for a different property
226
+ if (!key.startsWith(propertyName)) {
227
+ break;
228
+ }
229
+ matches.push(dataId);
230
+ }
231
+ }
232
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
233
+ finally {
234
+ try {
235
+ if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
236
+ }
237
+ finally { if (e_2) throw e_2.error; }
238
+ }
239
+ if ('lte' in rangeFilter) {
240
+ // When `lte` is used, we must also query the exact match explicitly because the exact match will not be included in the iterator above.
241
+ // This is due to the extra data (CID) appended to the (property + value) key prefix, e.g.
242
+ // key = 'dateCreated\u0000"2023-05-25T11:22:33.000000Z"\u0000bafyreigs3em7lrclhntzhgvkrf75j2muk6e7ypq3lrw3ffgcpyazyw6pry'
243
+ // the value would be considered greater than { lte: `dateCreated\u0000"2023-05-25T11:22:33.000000Z"` } used in the iterator options,
244
+ // thus would not be included in the iterator even though we'd like it to be.
245
+ for (const dataId of yield this.findExactMatches(tenant, propertyName, rangeFilter.lte, options)) {
246
+ matches.push(dataId);
247
+ }
248
+ }
249
+ return matches;
250
+ });
251
+ }
252
+ encodeValue(value) {
253
+ switch (typeof value) {
254
+ case 'string':
255
+ // We can't just `JSON.stringify` as that'll affect the sort order of strings.
256
+ // For example, `'\x00'` becomes `'\\u0000'`.
257
+ return `"${value}"`;
258
+ case 'number':
259
+ return IndexLevel.encodeNumberValue(value);
260
+ default:
261
+ return String(value);
262
+ }
263
+ }
264
+ /**
265
+ * Encodes a numerical value as a string for lexicographical comparison.
266
+ * If the number is positive it simply pads it with leading zeros.
267
+ * ex.: input: 1024 => "0000000000001024"
268
+ * input: -1024 => "!9007199254739967"
269
+ *
270
+ * @param value the number to encode.
271
+ * @returns a string representation of the number.
272
+ */
273
+ static encodeNumberValue(value) {
274
+ const NEGATIVE_OFFSET = Number.MAX_SAFE_INTEGER;
275
+ const NEGATIVE_PREFIX = '!'; // this will be sorted below positive numbers lexicographically
276
+ const PADDING_LENGTH = String(Number.MAX_SAFE_INTEGER).length;
277
+ const prefix = value < 0 ? NEGATIVE_PREFIX : '';
278
+ const offset = value < 0 ? NEGATIVE_OFFSET : 0;
279
+ return prefix + String(value + offset).padStart(PADDING_LENGTH, '0');
280
+ }
281
+ /**
282
+ * Extracts the value encoded within the indexed key when a record is inserted.
283
+ *
284
+ * ex. key: 'dateCreated\u0000"2023-05-25T18:23:29.425008Z"\u0000bafyreigs3em7lrclhntzhgvkrf75j2muk6e7ypq3lrw3ffgcpyazyw6pry'
285
+ * extracted value: "2023-05-25T18:23:29.425008Z"
286
+ *
287
+ * @param key an IndexLevel db key.
288
+ * @returns the extracted encodedValue from the key.
289
+ */
290
+ static extractValueFromKey(key) {
291
+ const [, value] = key.split(this.delimiter);
292
+ return value;
293
+ }
294
+ join(...values) {
295
+ return values.join(IndexLevel.delimiter);
296
+ }
297
+ }
298
+ /**
299
+ * Joins the given values using the `\x00` (\u0000) character.
300
+ */
301
+ IndexLevel.delimiter = `\x00`;
302
+ //# sourceMappingURL=index-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-level.js","sourceRoot":"","sources":["../../../../src/store/index-level.ts"],"names":[],"mappings":"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"}