@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,677 @@
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 { Cid } from '../utils/cid.js';
11
+ import { Encoder } from '../utils/encoder.js';
12
+ import { Encryption } from '../utils/encryption.js';
13
+ import { EncryptionAlgorithm } from '../utils/encryption.js';
14
+ import { GeneralJwsBuilder } from '../jose/jws/general/builder.js';
15
+ import { Jws } from '../utils/jws.js';
16
+ import { KeyDerivationScheme } from '../utils/hd-key.js';
17
+ import { Message } from '../core/message.js';
18
+ import { Records } from '../utils/records.js';
19
+ import { RecordsGrantAuthorization } from '../core/records-grant-authorization.js';
20
+ import { removeUndefinedProperties } from '../utils/object.js';
21
+ import { Secp256k1 } from '../utils/secp256k1.js';
22
+ import { Time } from '../utils/time.js';
23
+ import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
24
+ import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
25
+ import { normalizeProtocolUrl, normalizeSchemaUrl, validateProtocolUrlNormalized, validateSchemaUrlNormalized } from '../utils/url.js';
26
+ /**
27
+ * A class representing a RecordsWrite DWN message.
28
+ * NOTE: Unable to extend `AbstractMessage` directly because the incompatible `_message` type, which is not just a generic `<M>` type.
29
+ */
30
+ export class RecordsWrite {
31
+ /**
32
+ * Valid JSON message representing this RecordsWrite.
33
+ * @throws `DwnErrorCode.RecordsWriteMissingSigner` if the message is not signed yet.
34
+ */
35
+ get message() {
36
+ if (this._message.authorization === undefined) {
37
+ throw new DwnError(DwnErrorCode.RecordsWriteMissingSigner, 'This RecordsWrite is not yet signed, JSON message cannot be generated from an incomplete state.');
38
+ }
39
+ return this._message;
40
+ }
41
+ get author() {
42
+ return this._author;
43
+ }
44
+ get signaturePayload() {
45
+ return this._signaturePayload;
46
+ }
47
+ get owner() {
48
+ return this._owner;
49
+ }
50
+ /**
51
+ * Decoded owner signature payload.
52
+ */
53
+ get ownerSignaturePayload() {
54
+ return this._ownerSignaturePayload;
55
+ }
56
+ /**
57
+ * If this message is signed by a delegated entity.
58
+ */
59
+ get isSignedByDelegatee() {
60
+ var _a;
61
+ return ((_a = this._message.authorization) === null || _a === void 0 ? void 0 : _a.authorDelegatedGrant) !== undefined;
62
+ }
63
+ /**
64
+ * Gets the signer of this message.
65
+ * This is not to be confused with the logical author of the message.
66
+ */
67
+ get signer() {
68
+ return Message.getSigner(this._message);
69
+ }
70
+ constructor(message) {
71
+ this._message = message;
72
+ if (message.authorization !== undefined) {
73
+ // if the message authorization contains author delegated grant, the author would be the grantor of the grant
74
+ // else the author would be the signer of the message
75
+ if (message.authorization.authorDelegatedGrant !== undefined) {
76
+ this._author = Message.getSigner(message.authorization.authorDelegatedGrant);
77
+ }
78
+ else {
79
+ this._author = Message.getSigner(message);
80
+ }
81
+ this._signaturePayload = Jws.decodePlainObjectPayload(message.authorization.signature);
82
+ if (message.authorization.ownerSignature !== undefined) {
83
+ this._owner = Jws.getSignerDid(message.authorization.ownerSignature.signatures[0]);
84
+ this._ownerSignaturePayload = Jws.decodePlainObjectPayload(message.authorization.ownerSignature);
85
+ }
86
+ }
87
+ this.attesters = RecordsWrite.getAttesters(message);
88
+ // consider converting isInitialWrite() & getEntryId() into properties for performance and convenience
89
+ }
90
+ static parse(message) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ // asynchronous checks that are required by the constructor to initialize members properly
93
+ yield Message.validateMessageSignatureIntegrity(message.authorization.signature, message.descriptor, 'RecordsWriteSignaturePayload');
94
+ if (message.authorization.ownerSignature !== undefined) {
95
+ yield Message.validateMessageSignatureIntegrity(message.authorization.ownerSignature, message.descriptor);
96
+ }
97
+ yield RecordsWrite.validateAttestationIntegrity(message);
98
+ const recordsWrite = new RecordsWrite(message);
99
+ yield recordsWrite.validateIntegrity(); // RecordsWrite specific data integrity check
100
+ return recordsWrite;
101
+ });
102
+ }
103
+ /**
104
+ * Creates a RecordsWrite message.
105
+ * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.
106
+ * @param options.data Data used to compute the `dataCid`, must be the encrypted data bytes if `options.encryptionInput` is given.
107
+ * Must specify `options.dataCid` if `undefined`.
108
+ * @param options.dataCid CID of the data that is already stored in the DWN. Must specify `options.data` if `undefined`.
109
+ * @param options.dataSize Size of data in number of bytes. Must be defined if `options.dataCid` is defined; must be `undefined` otherwise.
110
+ * @param options.dateCreated If `undefined`, it will be auto-filled with current time.
111
+ * @param options.messageTimestamp If `undefined`, it will be auto-filled with current time.
112
+ */
113
+ static create(options) {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ var _a, _b, _c, _d;
116
+ if ((options.protocol === undefined && options.protocolPath !== undefined) ||
117
+ (options.protocol !== undefined && options.protocolPath === undefined)) {
118
+ throw new DwnError(DwnErrorCode.RecordsWriteCreateProtocolAndProtocolPathMutuallyInclusive, '`protocol` and `protocolPath` must both be defined or undefined at the same time');
119
+ }
120
+ if ((options.data === undefined && options.dataCid === undefined) ||
121
+ (options.data !== undefined && options.dataCid !== undefined)) {
122
+ throw new DwnError(DwnErrorCode.RecordsWriteCreateDataAndDataCidMutuallyExclusive, 'one and only one parameter between `data` and `dataCid` is allowed');
123
+ }
124
+ if ((options.dataCid === undefined && options.dataSize !== undefined) ||
125
+ (options.dataCid !== undefined && options.dataSize === undefined)) {
126
+ throw new DwnError(DwnErrorCode.RecordsWriteCreateDataCidAndDataSizeMutuallyInclusive, '`dataCid` and `dataSize` must both be defined or undefined at the same time');
127
+ }
128
+ if (options.parentId !== undefined && options.contextId === undefined) {
129
+ throw new DwnError(DwnErrorCode.RecordsWriteCreateContextIdAndParentIdMutuallyInclusive, '`contextId` must also be given when `parentId` is specified');
130
+ }
131
+ if (options.signer === undefined && options.delegatedGrant !== undefined) {
132
+ throw new DwnError(DwnErrorCode.RecordsWriteCreateMissingSigner, '`signer` must be given when `delegatedGrant` is given');
133
+ }
134
+ const dataCid = (_a = options.dataCid) !== null && _a !== void 0 ? _a : yield Cid.computeDagPbCidFromBytes(options.data);
135
+ const dataSize = (_b = options.dataSize) !== null && _b !== void 0 ? _b : options.data.length;
136
+ const currentTime = Time.getCurrentTimestamp();
137
+ const descriptor = {
138
+ interface: DwnInterfaceName.Records,
139
+ method: DwnMethodName.Write,
140
+ protocol: options.protocol !== undefined ? normalizeProtocolUrl(options.protocol) : undefined,
141
+ protocolPath: options.protocolPath,
142
+ recipient: options.recipient,
143
+ schema: options.schema !== undefined ? normalizeSchemaUrl(options.schema) : undefined,
144
+ parentId: options.parentId,
145
+ dataCid,
146
+ dataSize,
147
+ dateCreated: (_c = options.dateCreated) !== null && _c !== void 0 ? _c : currentTime,
148
+ messageTimestamp: (_d = options.messageTimestamp) !== null && _d !== void 0 ? _d : currentTime,
149
+ published: options.published,
150
+ datePublished: options.datePublished,
151
+ dataFormat: options.dataFormat
152
+ };
153
+ // generate `datePublished` if the message is to be published but `datePublished` is not given
154
+ if (options.published === true &&
155
+ options.datePublished === undefined) {
156
+ descriptor.datePublished = currentTime;
157
+ }
158
+ // delete all descriptor properties that are `undefined` else the code will encounter the following IPLD issue when attempting to generate CID:
159
+ // Error: `undefined` is not supported by the IPLD Data Model and cannot be encoded
160
+ removeUndefinedProperties(descriptor);
161
+ // `recordId` computation
162
+ const recordId = options.recordId;
163
+ // `contextId` computation
164
+ const contextId = options.contextId;
165
+ // `attestation` generation
166
+ const descriptorCid = yield Cid.computeCid(descriptor);
167
+ const attestation = yield RecordsWrite.createAttestation(descriptorCid, options.attestationSigners);
168
+ // `encryption` generation
169
+ const encryption = yield RecordsWrite.createEncryptionProperty(descriptor, options.encryptionInput);
170
+ const message = {
171
+ recordId,
172
+ descriptor
173
+ };
174
+ // assign optional properties only if they exist
175
+ if (contextId !== undefined) {
176
+ message.contextId = contextId;
177
+ }
178
+ if (attestation !== undefined) {
179
+ message.attestation = attestation;
180
+ }
181
+ if (encryption !== undefined) {
182
+ message.encryption = encryption;
183
+ }
184
+ const recordsWrite = new RecordsWrite(message);
185
+ if (options.signer !== undefined) {
186
+ yield recordsWrite.sign({
187
+ signer: options.signer,
188
+ delegatedGrant: options.delegatedGrant,
189
+ permissionsGrantId: options.permissionsGrantId,
190
+ protocolRole: options.protocolRole
191
+ });
192
+ }
193
+ return recordsWrite;
194
+ });
195
+ }
196
+ /**
197
+ * Convenience method that creates a message by:
198
+ * 1. Copying over immutable properties from the given source message
199
+ * 2. Copying over mutable properties that are not overwritten from the given source message
200
+ * 3. Replace the mutable properties that are given new value
201
+ * @param options.recordsWriteMessage Message that the new RecordsWrite will be based from.
202
+ * @param options.messageTimestamp The new date the record is modified. If not given, current time will be used .
203
+ * @param options.data The new data or the record. If not given, data from given message will be used.
204
+ * @param options.published The new published state. If not given, then will be set to `true` if {options.messageTimestamp} is given;
205
+ * else the state from given message will be used.
206
+ * @param options.publishedDate The new date the record is modified. If not given, then:
207
+ * - will not be set if the record will be unpublished as the result of this RecordsWrite; else
208
+ * - will be set to the same published date as the given message if it wss already published; else
209
+ * - will be set to current time (because this is a toggle from unpublished to published)
210
+ */
211
+ static createFrom(options) {
212
+ return __awaiter(this, void 0, void 0, function* () {
213
+ var _a, _b;
214
+ const sourceMessage = options.recordsWriteMessage;
215
+ const currentTime = Time.getCurrentTimestamp();
216
+ // inherit published value from parent if neither published nor datePublished is specified
217
+ const published = (_a = options.published) !== null && _a !== void 0 ? _a : (options.datePublished ? true : sourceMessage.descriptor.published);
218
+ // use current time if published but no explicit time given
219
+ let datePublished = undefined;
220
+ // if given explicitly published dated
221
+ if (options.datePublished) {
222
+ datePublished = options.datePublished;
223
+ }
224
+ else {
225
+ // if this RecordsWrite will publish the record
226
+ if (published) {
227
+ // the parent was already published, inherit the same published date
228
+ if (sourceMessage.descriptor.published) {
229
+ datePublished = sourceMessage.descriptor.datePublished;
230
+ }
231
+ else {
232
+ // this is a toggle from unpublished to published, use current time
233
+ datePublished = currentTime;
234
+ }
235
+ }
236
+ }
237
+ const createOptions = {
238
+ // immutable properties below, just inherit from the message given
239
+ recipient: sourceMessage.descriptor.recipient,
240
+ recordId: sourceMessage.recordId,
241
+ dateCreated: sourceMessage.descriptor.dateCreated,
242
+ contextId: sourceMessage.contextId,
243
+ protocol: sourceMessage.descriptor.protocol,
244
+ protocolPath: sourceMessage.descriptor.protocolPath,
245
+ parentId: sourceMessage.descriptor.parentId,
246
+ schema: sourceMessage.descriptor.schema,
247
+ dataFormat: sourceMessage.descriptor.dataFormat,
248
+ // mutable properties below
249
+ messageTimestamp: (_b = options.messageTimestamp) !== null && _b !== void 0 ? _b : currentTime,
250
+ published,
251
+ datePublished,
252
+ data: options.data,
253
+ dataCid: options.data ? undefined : sourceMessage.descriptor.dataCid, // if data not given, use base message dataCid
254
+ dataSize: options.data ? undefined : sourceMessage.descriptor.dataSize, // if data not given, use base message dataSize
255
+ protocolRole: options.protocolRole,
256
+ delegatedGrant: options.delegatedGrant,
257
+ // finally still need signers
258
+ signer: options.signer,
259
+ attestationSigners: options.attestationSigners
260
+ };
261
+ const recordsWrite = yield RecordsWrite.create(createOptions);
262
+ return recordsWrite;
263
+ });
264
+ }
265
+ /**
266
+ * Called by `JSON.stringify(...)` automatically.
267
+ */
268
+ toJSON() {
269
+ return this.message;
270
+ }
271
+ /**
272
+ * Encrypts the symmetric encryption key using the public keys given and attach the resulting `encryption` property to the RecordsWrite.
273
+ */
274
+ encryptSymmetricEncryptionKey(encryptionInput) {
275
+ return __awaiter(this, void 0, void 0, function* () {
276
+ this._message.encryption = yield RecordsWrite.createEncryptionProperty(this._message.descriptor, encryptionInput);
277
+ // opportunity here to re-sign instead of remove
278
+ delete this._message.authorization;
279
+ this._signaturePayload = undefined;
280
+ this._author = undefined;
281
+ });
282
+ }
283
+ /**
284
+ * Signs the RecordsWrite, commonly as author, but can also be a delegate.
285
+ */
286
+ sign(options) {
287
+ return __awaiter(this, void 0, void 0, function* () {
288
+ var _a;
289
+ const { signer, delegatedGrant, permissionsGrantId, protocolRole } = options;
290
+ // compute delegated grant ID and author if delegated grant is given
291
+ let delegatedGrantId;
292
+ let authorDid;
293
+ if (delegatedGrant !== undefined) {
294
+ delegatedGrantId = yield Message.getCid(delegatedGrant);
295
+ authorDid = Jws.getSignerDid(delegatedGrant.authorization.signature.signatures[0]);
296
+ }
297
+ else {
298
+ authorDid = Jws.extractDid(signer.keyId);
299
+ }
300
+ const descriptor = this._message.descriptor;
301
+ const descriptorCid = yield Cid.computeCid(descriptor);
302
+ // `recordId` computation if not given at construction time
303
+ this._message.recordId = (_a = this._message.recordId) !== null && _a !== void 0 ? _a : yield RecordsWrite.getEntryId(authorDid, descriptor);
304
+ // `contextId` computation if not given at construction time and this is a protocol-space record
305
+ if (this._message.contextId === undefined && this._message.descriptor.protocol !== undefined) {
306
+ this._message.contextId = yield RecordsWrite.getEntryId(authorDid, descriptor);
307
+ }
308
+ // `signature` generation
309
+ const signature = yield RecordsWrite.createSignerSignature({
310
+ recordId: this._message.recordId,
311
+ contextId: this._message.contextId,
312
+ descriptorCid,
313
+ attestation: this._message.attestation,
314
+ encryption: this._message.encryption,
315
+ signer,
316
+ delegatedGrantId,
317
+ permissionsGrantId,
318
+ protocolRole
319
+ });
320
+ this._message.authorization = { signature };
321
+ if (delegatedGrant !== undefined) {
322
+ this._message.authorization.authorDelegatedGrant = delegatedGrant;
323
+ }
324
+ // there is opportunity to optimize here as the payload is constructed within `createAuthorization(...)`
325
+ this._signaturePayload = Jws.decodePlainObjectPayload(signature);
326
+ this._author = authorDid;
327
+ });
328
+ }
329
+ /**
330
+ * Signs the `RecordsWrite` as the DWN owner.
331
+ * This is used when the DWN owner wants to retain a copy of a message that the owner did not author.
332
+ * NOTE: requires the `RecordsWrite` to already have the author's signature already.
333
+ */
334
+ signAsOwner(signer, permissionsGrantId) {
335
+ return __awaiter(this, void 0, void 0, function* () {
336
+ if (this._author === undefined) {
337
+ throw new DwnError(DwnErrorCode.RecordsWriteSignAsOwnerUnknownAuthor, 'Unable to sign as owner if without message signature because owner needs to sign over `recordId` which depends on author DID.');
338
+ }
339
+ const descriptor = this._message.descriptor;
340
+ const ownerSignature = yield Message.createSignature(descriptor, signer, { permissionsGrantId });
341
+ this._message.authorization.ownerSignature = ownerSignature;
342
+ this._ownerSignaturePayload = Jws.decodePlainObjectPayload(ownerSignature);
343
+ this._owner = Jws.extractDid(signer.keyId);
344
+ ;
345
+ });
346
+ }
347
+ /**
348
+ * Validates the integrity of the RecordsWrite message assuming the message passed basic schema validation.
349
+ * There is opportunity to integrate better with `validateSchema(...)`
350
+ */
351
+ validateIntegrity() {
352
+ return __awaiter(this, void 0, void 0, function* () {
353
+ // if the new message is the initial write
354
+ const isInitialWrite = yield this.isInitialWrite();
355
+ if (isInitialWrite) {
356
+ // `messageTimestamp` and `dateCreated` equality check
357
+ const dateRecordCreated = this.message.descriptor.dateCreated;
358
+ const messageTimestamp = this.message.descriptor.messageTimestamp;
359
+ if (messageTimestamp !== dateRecordCreated) {
360
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityDateCreatedMismatch, `messageTimestamp ${messageTimestamp} must match dateCreated ${dateRecordCreated} for the initial write`);
361
+ }
362
+ // if the message is also a protocol context root, the `contextId` must match the expected deterministic value
363
+ if (this.message.descriptor.protocol !== undefined &&
364
+ this.message.descriptor.parentId === undefined) {
365
+ const expectedContextId = yield this.getEntryId();
366
+ if (this.message.contextId !== expectedContextId) {
367
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityContextIdMismatch, `contextId in message: ${this.message.contextId} does not match deterministic contextId: ${expectedContextId}`);
368
+ }
369
+ }
370
+ }
371
+ // NOTE: validateMessageSignatureIntegrity() call earlier enforces the presence of `authorization` and thus `signature` in RecordsWrite
372
+ const signaturePayload = this.signaturePayload;
373
+ // make sure the `recordId` in message is the same as the `recordId` in the payload of the message signature
374
+ if (this.message.recordId !== signaturePayload.recordId) {
375
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityRecordIdUnauthorized, `recordId in message ${this.message.recordId} does not match recordId in authorization: ${signaturePayload.recordId}`);
376
+ }
377
+ // if `contextId` is given in message, make sure the same `contextId` is in the the payload of the message signature
378
+ if (this.message.contextId !== signaturePayload.contextId) {
379
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityContextIdNotInSignerSignaturePayload, `contextId in message ${this.message.contextId} does not match contextId in authorization: ${signaturePayload.contextId}`);
380
+ }
381
+ Records.validateDelegatedGrantReferentialIntegrity(this.message, signaturePayload);
382
+ // if `attestation` is given in message, make sure the correct `attestationCid` is in the payload of the message signature
383
+ if (signaturePayload.attestationCid !== undefined) {
384
+ const expectedAttestationCid = yield Cid.computeCid(this.message.attestation);
385
+ const actualAttestationCid = signaturePayload.attestationCid;
386
+ if (actualAttestationCid !== expectedAttestationCid) {
387
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityAttestationMismatch, `CID ${expectedAttestationCid} of attestation property in message does not match attestationCid in authorization: ${actualAttestationCid}`);
388
+ }
389
+ }
390
+ // if `encryption` is given in message, make sure the correct `encryptionCid` is in the payload of the message signature
391
+ if (signaturePayload.encryptionCid !== undefined) {
392
+ const expectedEncryptionCid = yield Cid.computeCid(this.message.encryption);
393
+ const actualEncryptionCid = signaturePayload.encryptionCid;
394
+ if (actualEncryptionCid !== expectedEncryptionCid) {
395
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityEncryptionCidMismatch, `CID ${expectedEncryptionCid} of encryption property in message does not match encryptionCid in authorization: ${actualEncryptionCid}`);
396
+ }
397
+ }
398
+ if (this.message.descriptor.protocol !== undefined) {
399
+ validateProtocolUrlNormalized(this.message.descriptor.protocol);
400
+ }
401
+ if (this.message.descriptor.schema !== undefined) {
402
+ validateSchemaUrlNormalized(this.message.descriptor.schema);
403
+ }
404
+ Time.validateTimestamp(this.message.descriptor.messageTimestamp);
405
+ Time.validateTimestamp(this.message.descriptor.dateCreated);
406
+ if (this.message.descriptor.datePublished) {
407
+ Time.validateTimestamp(this.message.descriptor.datePublished);
408
+ }
409
+ });
410
+ }
411
+ /**
412
+ * Validates the structural integrity of the `attestation` property.
413
+ * NOTE: signature is not verified.
414
+ */
415
+ static validateAttestationIntegrity(message) {
416
+ return __awaiter(this, void 0, void 0, function* () {
417
+ if (message.attestation === undefined) {
418
+ return;
419
+ }
420
+ if (message.attestation.signatures.length !== 1) {
421
+ throw new DwnError(DwnErrorCode.RecordsWriteAttestationIntegrityMoreThanOneSignature, `Currently implementation only supports 1 attester, but got ${message.attestation.signatures.length}`);
422
+ }
423
+ const payloadJson = Jws.decodePlainObjectPayload(message.attestation);
424
+ const { descriptorCid } = payloadJson;
425
+ // `descriptorCid` validation - ensure that the provided descriptorCid matches the CID of the actual message
426
+ const expectedDescriptorCid = yield Cid.computeCid(message.descriptor);
427
+ if (descriptorCid !== expectedDescriptorCid) {
428
+ throw new DwnError(DwnErrorCode.RecordsWriteAttestationIntegrityDescriptorCidMismatch, `descriptorCid ${descriptorCid} does not match expected descriptorCid ${expectedDescriptorCid}`);
429
+ }
430
+ // check to ensure that no other unexpected properties exist in payload.
431
+ const propertyCount = Object.keys(payloadJson).length;
432
+ if (propertyCount > 1) {
433
+ throw new DwnError(DwnErrorCode.RecordsWriteAttestationIntegrityInvalidPayloadProperty, `Only 'descriptorCid' is allowed in attestation payload, but got ${propertyCount} properties.`);
434
+ }
435
+ });
436
+ }
437
+ ;
438
+ /**
439
+ * Computes the deterministic Entry ID of this message.
440
+ */
441
+ getEntryId() {
442
+ return __awaiter(this, void 0, void 0, function* () {
443
+ const entryId = yield RecordsWrite.getEntryId(this.author, this.message.descriptor);
444
+ return entryId;
445
+ });
446
+ }
447
+ ;
448
+ /**
449
+ * Computes the deterministic Entry ID of this message.
450
+ */
451
+ static getEntryId(author, descriptor) {
452
+ return __awaiter(this, void 0, void 0, function* () {
453
+ if (author === undefined) {
454
+ throw new DwnError(DwnErrorCode.RecordsWriteGetEntryIdUndefinedAuthor, 'Property `author` is needed to compute entry ID.');
455
+ }
456
+ const entryIdInput = Object.assign({}, descriptor);
457
+ entryIdInput.author = author;
458
+ const cid = yield Cid.computeCid(entryIdInput);
459
+ return cid;
460
+ });
461
+ }
462
+ ;
463
+ /**
464
+ * Checks if the given message is the initial entry of a record.
465
+ */
466
+ isInitialWrite() {
467
+ return __awaiter(this, void 0, void 0, function* () {
468
+ const entryId = yield this.getEntryId();
469
+ return (entryId === this.message.recordId);
470
+ });
471
+ }
472
+ /**
473
+ * Checks if the author of the RecordsWrite is the same as the author of the initial RecordsWrite for the record.
474
+ * Returns true if `this` is the initial RecordsWrite.
475
+ */
476
+ isAuthoredByInitialRecordAuthor(tenant, messageStore) {
477
+ return __awaiter(this, void 0, void 0, function* () {
478
+ // fetch the initialWrite
479
+ const query = {
480
+ entryId: this.message.recordId
481
+ };
482
+ const { messages: result } = yield messageStore.query(tenant, [query]);
483
+ const initialRecordsWrite = yield RecordsWrite.parse(result[0]);
484
+ return initialRecordsWrite.author === this.author;
485
+ });
486
+ }
487
+ constructRecordsWriteIndexes(isLatestBaseState) {
488
+ return __awaiter(this, void 0, void 0, function* () {
489
+ const message = this.message;
490
+ const descriptor = Object.assign({}, message.descriptor);
491
+ delete descriptor.published; // handle `published` specifically further down
492
+ const indexes = Object.assign(Object.assign({}, descriptor), { isLatestBaseState, published: !!message.descriptor.published, author: this.author, recordId: message.recordId, entryId: yield RecordsWrite.getEntryId(this.author, this.message.descriptor) });
493
+ // add additional indexes to optional values if given
494
+ if (this.attesters.length > 0) {
495
+ indexes.attester = this.attesters[0];
496
+ }
497
+ if (message.contextId !== undefined) {
498
+ indexes.contextId = message.contextId;
499
+ }
500
+ return indexes;
501
+ });
502
+ }
503
+ authorizeDelegatee(messageStore) {
504
+ return __awaiter(this, void 0, void 0, function* () {
505
+ const grantedTo = this.signer;
506
+ const grantedFor = this.author;
507
+ const delegatedGrant = this.message.authorization.authorDelegatedGrant;
508
+ yield RecordsGrantAuthorization.authorizeWrite(grantedFor, this.message, grantedTo, delegatedGrant, messageStore);
509
+ });
510
+ }
511
+ /**
512
+ * Checks if the given message is the initial entry of a record.
513
+ */
514
+ static isInitialWrite(message) {
515
+ return __awaiter(this, void 0, void 0, function* () {
516
+ // can't be the initial write if the message is not a Records Write
517
+ if (message.descriptor.interface !== DwnInterfaceName.Records ||
518
+ message.descriptor.method !== DwnMethodName.Write) {
519
+ return false;
520
+ }
521
+ const recordsWriteMessage = message;
522
+ const author = RecordsWrite.getAuthor(recordsWriteMessage);
523
+ const entryId = yield RecordsWrite.getEntryId(author, recordsWriteMessage.descriptor);
524
+ return (entryId === recordsWriteMessage.recordId);
525
+ });
526
+ }
527
+ /**
528
+ * Gets the DID of the author of the given message.
529
+ */
530
+ static getAuthor(message) {
531
+ let author;
532
+ if (message.authorization.authorDelegatedGrant !== undefined) {
533
+ author = Message.getSigner(message.authorization.authorDelegatedGrant);
534
+ }
535
+ else {
536
+ author = Message.getSigner(message);
537
+ }
538
+ return author;
539
+ }
540
+ /**
541
+ * Creates the `encryption` property if encryption input is given. Else `undefined` is returned.
542
+ */
543
+ static createEncryptionProperty(descriptor, encryptionInput) {
544
+ return __awaiter(this, void 0, void 0, function* () {
545
+ var _a, _b;
546
+ if (encryptionInput === undefined) {
547
+ return undefined;
548
+ }
549
+ // encrypt the data encryption key once per encryption input
550
+ const keyEncryption = [];
551
+ for (const keyEncryptionInput of encryptionInput.keyEncryptionInputs) {
552
+ if (keyEncryptionInput.derivationScheme === KeyDerivationScheme.ProtocolPath && descriptor.protocol === undefined) {
553
+ throw new DwnError(DwnErrorCode.RecordsWriteMissingProtocol, '`protocols` encryption scheme cannot be applied to record without the `protocol` property.');
554
+ }
555
+ if (keyEncryptionInput.derivationScheme === KeyDerivationScheme.Schemas && descriptor.schema === undefined) {
556
+ throw new DwnError(DwnErrorCode.RecordsWriteMissingSchema, '`schemas` encryption scheme cannot be applied to record without the `schema` property.');
557
+ }
558
+ // NOTE: right now only `ECIES-ES256K` algorithm is supported for asymmetric encryption,
559
+ // so we will assume that's the algorithm without additional switch/if statements
560
+ const publicKeyBytes = Secp256k1.publicJwkToBytes(keyEncryptionInput.publicKey);
561
+ const keyEncryptionOutput = yield Encryption.eciesSecp256k1Encrypt(publicKeyBytes, encryptionInput.key);
562
+ const encryptedKey = Encoder.bytesToBase64Url(keyEncryptionOutput.ciphertext);
563
+ const ephemeralPublicKey = yield Secp256k1.publicKeyToJwk(keyEncryptionOutput.ephemeralPublicKey);
564
+ const keyEncryptionInitializationVector = Encoder.bytesToBase64Url(keyEncryptionOutput.initializationVector);
565
+ const messageAuthenticationCode = Encoder.bytesToBase64Url(keyEncryptionOutput.messageAuthenticationCode);
566
+ const encryptedKeyData = {
567
+ rootKeyId: keyEncryptionInput.publicKeyId,
568
+ algorithm: (_a = keyEncryptionInput.algorithm) !== null && _a !== void 0 ? _a : EncryptionAlgorithm.EciesSecp256k1,
569
+ derivationScheme: keyEncryptionInput.derivationScheme,
570
+ ephemeralPublicKey,
571
+ initializationVector: keyEncryptionInitializationVector,
572
+ messageAuthenticationCode,
573
+ encryptedKey
574
+ };
575
+ // we need to attach the actual public key if derivation scheme is protocol-context,
576
+ // so that the responder to this message is able to encrypt the message/symmetric key using the same protocol-context derived public key,
577
+ // without needing the knowledge of the corresponding private key
578
+ if (keyEncryptionInput.derivationScheme === KeyDerivationScheme.ProtocolContext) {
579
+ encryptedKeyData.derivedPublicKey = keyEncryptionInput.publicKey;
580
+ }
581
+ keyEncryption.push(encryptedKeyData);
582
+ }
583
+ const encryption = {
584
+ algorithm: (_b = encryptionInput.algorithm) !== null && _b !== void 0 ? _b : EncryptionAlgorithm.Aes256Ctr,
585
+ initializationVector: Encoder.bytesToBase64Url(encryptionInput.initializationVector),
586
+ keyEncryption
587
+ };
588
+ return encryption;
589
+ });
590
+ }
591
+ /**
592
+ * Creates the `attestation` property of a RecordsWrite message if given signature inputs; returns `undefined` otherwise.
593
+ */
594
+ static createAttestation(descriptorCid, signers) {
595
+ return __awaiter(this, void 0, void 0, function* () {
596
+ if (signers === undefined || signers.length === 0) {
597
+ return undefined;
598
+ }
599
+ const attestationPayload = { descriptorCid };
600
+ const attestationPayloadBytes = Encoder.objectToBytes(attestationPayload);
601
+ const builder = yield GeneralJwsBuilder.create(attestationPayloadBytes, signers);
602
+ return builder.getJws();
603
+ });
604
+ }
605
+ /**
606
+ * Creates the `signature` property in the `authorization` of a `RecordsWrite` message.
607
+ */
608
+ static createSignerSignature(input) {
609
+ return __awaiter(this, void 0, void 0, function* () {
610
+ const { recordId, contextId, descriptorCid, attestation, encryption, signer, delegatedGrantId, permissionsGrantId, protocolRole } = input;
611
+ const attestationCid = attestation ? yield Cid.computeCid(attestation) : undefined;
612
+ const encryptionCid = encryption ? yield Cid.computeCid(encryption) : undefined;
613
+ const signaturePayload = {
614
+ recordId,
615
+ descriptorCid,
616
+ contextId,
617
+ attestationCid,
618
+ encryptionCid,
619
+ delegatedGrantId,
620
+ permissionsGrantId,
621
+ protocolRole
622
+ };
623
+ removeUndefinedProperties(signaturePayload);
624
+ const signaturePayloadBytes = Encoder.objectToBytes(signaturePayload);
625
+ const builder = yield GeneralJwsBuilder.create(signaturePayloadBytes, [signer]);
626
+ const signature = builder.getJws();
627
+ return signature;
628
+ });
629
+ }
630
+ /**
631
+ * Gets the initial write from the given list or record write.
632
+ */
633
+ static getInitialWrite(messages) {
634
+ return __awaiter(this, void 0, void 0, function* () {
635
+ for (const message of messages) {
636
+ if (yield RecordsWrite.isInitialWrite(message)) {
637
+ return message;
638
+ }
639
+ }
640
+ throw new DwnError(DwnErrorCode.RecordsWriteGetInitialWriteNotFound, `initial write is not found`);
641
+ });
642
+ }
643
+ /**
644
+ * Verifies that immutable properties of the two given messages are identical.
645
+ * @throws {Error} if immutable properties between two RecordsWrite message
646
+ */
647
+ static verifyEqualityOfImmutableProperties(existingWriteMessage, newMessage) {
648
+ const mutableDescriptorProperties = ['dataCid', 'dataSize', 'datePublished', 'published', 'messageTimestamp'];
649
+ // get distinct property names that exist in either the existing message given or new message
650
+ let descriptorPropertyNames = [];
651
+ descriptorPropertyNames.push(...Object.keys(existingWriteMessage.descriptor));
652
+ descriptorPropertyNames.push(...Object.keys(newMessage.descriptor));
653
+ descriptorPropertyNames = [...new Set(descriptorPropertyNames)]; // step to remove duplicates
654
+ // ensure all immutable properties are not modified
655
+ for (const descriptorPropertyName of descriptorPropertyNames) {
656
+ // if property is supposed to be immutable
657
+ if (mutableDescriptorProperties.indexOf(descriptorPropertyName) === -1) {
658
+ const valueInExistingWrite = existingWriteMessage.descriptor[descriptorPropertyName];
659
+ const valueInNewMessage = newMessage.descriptor[descriptorPropertyName];
660
+ if (valueInNewMessage !== valueInExistingWrite) {
661
+ throw new DwnError(DwnErrorCode.RecordsWriteImmutablePropertyChanged, `${descriptorPropertyName} is an immutable property: cannot change '${valueInExistingWrite}' to '${valueInNewMessage}'`);
662
+ }
663
+ }
664
+ }
665
+ return true;
666
+ }
667
+ /**
668
+ * Gets the DID of the author of the given message.
669
+ */
670
+ static getAttesters(message) {
671
+ var _a, _b;
672
+ const attestationSignatures = (_b = (_a = message.attestation) === null || _a === void 0 ? void 0 : _a.signatures) !== null && _b !== void 0 ? _b : [];
673
+ const attesters = attestationSignatures.map((signature) => Jws.getSignerDid(signature));
674
+ return attesters;
675
+ }
676
+ }
677
+ //# sourceMappingURL=records-write.js.map