@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,630 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chaiAsPromised from 'chai-as-promised';
11
+ import sinon from 'sinon';
12
+ import chai, { expect } from 'chai';
13
+ import anyoneCollaborateProtocolDefinition from '../vectors/protocol-definitions/anyone-collaborate.json' with { type: 'json' };
14
+ import authorCanProtocolDefinition from '../vectors/protocol-definitions/author-can.json' with { type: 'json' };
15
+ import friendRoleProtocolDefinition from '../vectors/protocol-definitions/friend-role.json' with { type: 'json' };
16
+ import recipientCanProtocolDefinition from '../vectors/protocol-definitions/recipient-can.json' with { type: 'json' };
17
+ import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' with { type: 'json' };
18
+ import { ArrayUtility } from '../../src/utils/array.js';
19
+ import { DidKeyResolver } from '../../src/did/did-key-resolver.js';
20
+ import { DwnErrorCode } from '../../src/index.js';
21
+ import { Message } from '../../src/core/message.js';
22
+ import { RecordsDeleteHandler } from '../../src/handlers/records-delete.js';
23
+ import { stubInterface } from 'ts-sinon';
24
+ import { TestDataGenerator } from '../utils/test-data-generator.js';
25
+ import { TestStores } from '../test-stores.js';
26
+ import { TestStubGenerator } from '../utils/test-stub-generator.js';
27
+ import { Time } from '../../src/utils/time.js';
28
+ import { DataStream, DidResolver, Dwn, Encoder, Jws, RecordsDelete, RecordsRead, RecordsWrite } from '../../src/index.js';
29
+ chai.use(chaiAsPromised);
30
+ export function testRecordsDeleteHandler() {
31
+ describe('RecordsDeleteHandler.handle()', () => {
32
+ if (process.env.TESTSOFF === 'true') {
33
+ return;
34
+ }
35
+ let didResolver;
36
+ let messageStore;
37
+ let dataStore;
38
+ let eventLog;
39
+ let dwn;
40
+ describe('functional tests', () => {
41
+ // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
42
+ // so that different test suites can reuse the same backend store for testing
43
+ before(() => __awaiter(this, void 0, void 0, function* () {
44
+ didResolver = new DidResolver([new DidKeyResolver()]);
45
+ const stores = TestStores.get();
46
+ messageStore = stores.messageStore;
47
+ dataStore = stores.dataStore;
48
+ eventLog = stores.eventLog;
49
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog });
50
+ }));
51
+ beforeEach(() => __awaiter(this, void 0, void 0, function* () {
52
+ sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
53
+ // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
54
+ yield messageStore.clear();
55
+ yield dataStore.clear();
56
+ yield eventLog.clear();
57
+ }));
58
+ after(() => __awaiter(this, void 0, void 0, function* () {
59
+ yield dwn.close();
60
+ }));
61
+ it('should handle RecordsDelete successfully and return 404 if deleting a deleted record', () => __awaiter(this, void 0, void 0, function* () {
62
+ var _a, _b;
63
+ const alice = yield DidKeyResolver.generate();
64
+ // insert data
65
+ const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
66
+ const writeReply = yield dwn.processMessage(alice.did, message, dataStream);
67
+ expect(writeReply.status.code).to.equal(202);
68
+ // ensure data is inserted
69
+ const queryData = yield TestDataGenerator.generateRecordsQuery({
70
+ author: alice,
71
+ filter: { recordId: message.recordId }
72
+ });
73
+ const reply = yield dwn.processMessage(alice.did, queryData.message);
74
+ expect(reply.status.code).to.equal(200);
75
+ expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
76
+ // testing delete
77
+ const recordsDelete = yield RecordsDelete.create({
78
+ recordId: message.recordId,
79
+ signer: Jws.createSigner(alice)
80
+ });
81
+ const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
82
+ expect(deleteReply.status.code).to.equal(202);
83
+ // ensure a query will no longer find the deleted record
84
+ const reply2 = yield dwn.processMessage(alice.did, queryData.message);
85
+ expect(reply2.status.code).to.equal(200);
86
+ expect((_b = reply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
87
+ // testing deleting a deleted record
88
+ const recordsDelete2 = yield RecordsDelete.create({
89
+ recordId: message.recordId,
90
+ signer: Jws.createSigner(alice)
91
+ });
92
+ const recordsDelete2Reply = yield dwn.processMessage(alice.did, recordsDelete2.message);
93
+ expect(recordsDelete2Reply.status.code).to.equal(404);
94
+ }));
95
+ it('should not affect other records or tenants with the same data', () => __awaiter(this, void 0, void 0, function* () {
96
+ const alice = yield DidKeyResolver.generate();
97
+ const bob = yield DidKeyResolver.generate();
98
+ const data = Encoder.stringToBytes('test');
99
+ // alice writes a records with data
100
+ const aliceWriteData = yield TestDataGenerator.generateRecordsWrite({ author: alice, data });
101
+ const aliceWriteReply = yield dwn.processMessage(alice.did, aliceWriteData.message, aliceWriteData.dataStream);
102
+ expect(aliceWriteReply.status.code).to.equal(202);
103
+ // alice writes another record with the same data
104
+ const aliceAssociateData = yield TestDataGenerator.generateRecordsWrite({ author: alice, data });
105
+ const aliceAssociateReply = yield dwn.processMessage(alice.did, aliceAssociateData.message, aliceAssociateData.dataStream);
106
+ expect(aliceAssociateReply.status.code).to.equal(202);
107
+ // bob writes a records with same data
108
+ const bobWriteData = yield TestDataGenerator.generateRecordsWrite({ author: bob, data });
109
+ const bobWriteReply = yield dwn.processMessage(bob.did, bobWriteData.message, bobWriteData.dataStream);
110
+ expect(bobWriteReply.status.code).to.equal(202);
111
+ // bob writes another record with the same data
112
+ const bobAssociateData = yield TestDataGenerator.generateRecordsWrite({ author: bob, data });
113
+ const bobAssociateReply = yield dwn.processMessage(bob.did, bobAssociateData.message, bobAssociateData.dataStream);
114
+ expect(bobAssociateReply.status.code).to.equal(202);
115
+ // alice deletes one of the two records
116
+ const aliceDeleteWriteData = yield TestDataGenerator.generateRecordsDelete({
117
+ author: alice,
118
+ recordId: aliceWriteData.message.recordId
119
+ });
120
+ const aliceDeleteWriteReply = yield dwn.processMessage(alice.did, aliceDeleteWriteData.message);
121
+ expect(aliceDeleteWriteReply.status.code).to.equal(202);
122
+ // verify the other record with the same data is unaffected
123
+ const aliceRead1 = yield RecordsRead.create({
124
+ filter: {
125
+ recordId: aliceAssociateData.message.recordId,
126
+ },
127
+ signer: Jws.createSigner(alice)
128
+ });
129
+ const aliceRead1Reply = yield dwn.processMessage(alice.did, aliceRead1.message);
130
+ expect(aliceRead1Reply.status.code).to.equal(200);
131
+ const aliceDataFetched = yield DataStream.toBytes(aliceRead1Reply.record.data);
132
+ expect(ArrayUtility.byteArraysEqual(aliceDataFetched, data)).to.be.true;
133
+ // alice deletes the other record
134
+ const aliceDeleteAssociateData = yield TestDataGenerator.generateRecordsDelete({
135
+ author: alice,
136
+ recordId: aliceAssociateData.message.recordId
137
+ });
138
+ const aliceDeleteAssociateReply = yield dwn.processMessage(alice.did, aliceDeleteAssociateData.message);
139
+ expect(aliceDeleteAssociateReply.status.code).to.equal(202);
140
+ // verify that alice can no longer fetch the 2nd record
141
+ const aliceRead2Reply = yield dwn.processMessage(alice.did, aliceRead1.message);
142
+ expect(aliceRead2Reply.status.code).to.equal(404);
143
+ // verify that bob can still fetch record with the same data
144
+ const bobRead1 = yield RecordsRead.create({
145
+ filter: {
146
+ recordId: bobAssociateData.message.recordId,
147
+ },
148
+ signer: Jws.createSigner(bob)
149
+ });
150
+ const bobRead1Reply = yield dwn.processMessage(bob.did, bobRead1.message);
151
+ expect(bobRead1Reply.status.code).to.equal(200);
152
+ const bobDataFetched = yield DataStream.toBytes(bobRead1Reply.record.data);
153
+ expect(ArrayUtility.byteArraysEqual(bobDataFetched, data)).to.be.true;
154
+ }));
155
+ it('should return 404 if deleting a non-existent record', () => __awaiter(this, void 0, void 0, function* () {
156
+ const alice = yield DidKeyResolver.generate();
157
+ // testing deleting a non-existent record
158
+ const recordsDelete = yield RecordsDelete.create({
159
+ recordId: 'nonExistentRecordId',
160
+ signer: Jws.createSigner(alice)
161
+ });
162
+ const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
163
+ expect(deleteReply.status.code).to.equal(404);
164
+ }));
165
+ it('should be disallowed if there is a newer RecordsWrite already in the DWN ', () => __awaiter(this, void 0, void 0, function* () {
166
+ var _a;
167
+ const alice = yield DidKeyResolver.generate();
168
+ // initial write
169
+ const initialWriteData = yield TestDataGenerator.generateRecordsWrite({ author: alice });
170
+ const initialWriteReply = yield dwn.processMessage(alice.did, initialWriteData.message, initialWriteData.dataStream);
171
+ expect(initialWriteReply.status.code).to.equal(202);
172
+ // generate subsequent write and delete with the delete having an earlier timestamp
173
+ // NOTE: creating RecordsDelete first ensures it has an earlier `messageTimestamp` time
174
+ const recordsDelete = yield RecordsDelete.create({
175
+ recordId: initialWriteData.message.recordId,
176
+ signer: Jws.createSigner(alice)
177
+ });
178
+ yield Time.minimalSleep();
179
+ const subsequentWriteData = yield TestDataGenerator.generateFromRecordsWrite({
180
+ existingWrite: initialWriteData.recordsWrite,
181
+ author: alice
182
+ });
183
+ // subsequent write
184
+ const subsequentWriteReply = yield dwn.processMessage(alice.did, subsequentWriteData.message, subsequentWriteData.dataStream);
185
+ expect(subsequentWriteReply.status.code).to.equal(202);
186
+ // test that a delete with an earlier `messageTimestamp` results in a 409
187
+ const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
188
+ expect(deleteReply.status.code).to.equal(409);
189
+ // ensure data still exists
190
+ const queryData = yield TestDataGenerator.generateRecordsQuery({
191
+ author: alice,
192
+ filter: { recordId: initialWriteData.message.recordId }
193
+ });
194
+ const expectedEncodedData = Encoder.bytesToBase64Url(subsequentWriteData.dataBytes);
195
+ const reply = yield dwn.processMessage(alice.did, queryData.message);
196
+ expect(reply.status.code).to.equal(200);
197
+ expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
198
+ expect(reply.entries[0].encodedData).to.equal(expectedEncodedData);
199
+ }));
200
+ it('should be able to delete then rewrite the same data', () => __awaiter(this, void 0, void 0, function* () {
201
+ var _a, _b, _c;
202
+ const alice = yield DidKeyResolver.generate();
203
+ const data = Encoder.stringToBytes('test');
204
+ const encodedData = Encoder.bytesToBase64Url(data);
205
+ // alice writes a record
206
+ const aliceWriteData = yield TestDataGenerator.generateRecordsWrite({
207
+ author: alice,
208
+ data
209
+ });
210
+ const aliceWriteReply = yield dwn.processMessage(alice.did, aliceWriteData.message, aliceWriteData.dataStream);
211
+ expect(aliceWriteReply.status.code).to.equal(202);
212
+ const aliceQueryWriteAfterAliceWriteData = yield TestDataGenerator.generateRecordsQuery({
213
+ author: alice,
214
+ filter: { recordId: aliceWriteData.message.recordId }
215
+ });
216
+ const aliceQueryWriteAfterAliceWriteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceWriteData.message);
217
+ expect(aliceQueryWriteAfterAliceWriteReply.status.code).to.equal(200);
218
+ expect((_a = aliceQueryWriteAfterAliceWriteReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
219
+ expect(aliceQueryWriteAfterAliceWriteReply.entries[0].encodedData).to.equal(encodedData);
220
+ // alice deleting the record
221
+ const aliceDeleteWriteData = yield TestDataGenerator.generateRecordsDelete({
222
+ author: alice,
223
+ recordId: aliceWriteData.message.recordId
224
+ });
225
+ const aliceDeleteWriteReply = yield dwn.processMessage(alice.did, aliceDeleteWriteData.message);
226
+ expect(aliceDeleteWriteReply.status.code).to.equal(202);
227
+ const aliceQueryWriteAfterAliceDeleteData = yield TestDataGenerator.generateRecordsQuery({
228
+ author: alice,
229
+ filter: { recordId: aliceWriteData.message.recordId }
230
+ });
231
+ const aliceQueryWriteAfterAliceDeleteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceDeleteData.message);
232
+ expect(aliceQueryWriteAfterAliceDeleteReply.status.code).to.equal(200);
233
+ expect((_b = aliceQueryWriteAfterAliceDeleteReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
234
+ // alice writes a new record with the same data
235
+ const aliceRewriteData = yield TestDataGenerator.generateRecordsWrite({
236
+ author: alice,
237
+ data
238
+ });
239
+ const aliceRewriteReply = yield dwn.processMessage(alice.did, aliceRewriteData.message, aliceRewriteData.dataStream);
240
+ expect(aliceRewriteReply.status.code).to.equal(202);
241
+ const aliceQueryWriteAfterAliceRewriteData = yield TestDataGenerator.generateRecordsQuery({
242
+ author: alice,
243
+ filter: { recordId: aliceRewriteData.message.recordId }
244
+ });
245
+ const aliceQueryWriteAfterAliceRewriteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceRewriteData.message);
246
+ expect(aliceQueryWriteAfterAliceRewriteReply.status.code).to.equal(200);
247
+ expect((_c = aliceQueryWriteAfterAliceRewriteReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(1);
248
+ expect(aliceQueryWriteAfterAliceRewriteReply.entries[0].encodedData).to.equal(encodedData);
249
+ }));
250
+ describe('protocol based deletes', () => {
251
+ it('should allow delete with allow-anyone rule', () => __awaiter(this, void 0, void 0, function* () {
252
+ // scenario: Alice creates a record in her DWN. Bob (anyone) is able to delete the record.
253
+ const protocolDefinition = anyoneCollaborateProtocolDefinition;
254
+ const alice = yield TestDataGenerator.generatePersona();
255
+ const bob = yield TestDataGenerator.generatePersona();
256
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
257
+ author: alice,
258
+ protocolDefinition
259
+ });
260
+ // setting up a stub DID resolver
261
+ TestStubGenerator.stubDidResolver(didResolver, [alice, bob]);
262
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
263
+ expect(protocolsConfigureReply.status.code).to.equal(202);
264
+ // Alice writes a record
265
+ const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
266
+ author: alice,
267
+ protocol: protocolDefinition.protocol,
268
+ protocolPath: 'doc',
269
+ });
270
+ const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, recordsWrite.dataStream);
271
+ expect(recordsWriteReply.status.code).to.eq(202);
272
+ // Bob (anyone) is able to delete the record
273
+ const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
274
+ author: bob,
275
+ recordId: recordsWrite.message.recordId,
276
+ });
277
+ const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
278
+ expect(recordsDeleteReply.status.code).to.eq(202);
279
+ }));
280
+ describe('recipient rules', () => {
281
+ it('should allow delete with ancestor recipient rule', () => __awaiter(this, void 0, void 0, function* () {
282
+ // scenario: Alice creates a 'post' with Bob as recipient and a 'post/tag'. Bob is able to delete
283
+ // the 'chat/tag' because he was recipient of the 'chat'. Carol is not able to delete.
284
+ const protocolDefinition = recipientCanProtocolDefinition;
285
+ const alice = yield TestDataGenerator.generatePersona();
286
+ const bob = yield TestDataGenerator.generatePersona();
287
+ const carol = yield TestDataGenerator.generatePersona();
288
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
289
+ author: alice,
290
+ protocolDefinition
291
+ });
292
+ // setting up a stub DID resolver
293
+ TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
294
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
295
+ expect(protocolsConfigureReply.status.code).to.equal(202);
296
+ // Alice writes a chat
297
+ const chatRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
298
+ author: alice,
299
+ recipient: bob.did,
300
+ protocol: protocolDefinition.protocol,
301
+ protocolPath: 'post',
302
+ });
303
+ const chatRecordsWriteReply = yield dwn.processMessage(alice.did, chatRecordsWrite.message, chatRecordsWrite.dataStream);
304
+ expect(chatRecordsWriteReply.status.code).to.eq(202);
305
+ // Alice writes a 'chat/tag'
306
+ const tagRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
307
+ author: alice,
308
+ protocol: protocolDefinition.protocol,
309
+ protocolPath: 'post/tag',
310
+ contextId: chatRecordsWrite.message.contextId,
311
+ parentId: chatRecordsWrite.message.recordId,
312
+ });
313
+ const tagRecordsWriteReply = yield dwn.processMessage(alice.did, tagRecordsWrite.message, tagRecordsWrite.dataStream);
314
+ expect(tagRecordsWriteReply.status.code).to.eq(202);
315
+ // Carol is unable to delete the 'chat/tag'
316
+ const recordsDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
317
+ author: carol,
318
+ recordId: tagRecordsWrite.message.recordId,
319
+ });
320
+ const recordsDeleteCarolReply = yield dwn.processMessage(alice.did, recordsDeleteCarol.message);
321
+ expect(recordsDeleteCarolReply.status.code).to.eq(401);
322
+ expect(recordsDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
323
+ // Bob is able to delete the 'chat/tag'
324
+ const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
325
+ author: bob,
326
+ recordId: tagRecordsWrite.message.recordId,
327
+ });
328
+ const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
329
+ expect(recordsDeleteReply.status.code).to.eq(202);
330
+ }));
331
+ it('should allow delete with direct recipient rule', () => __awaiter(this, void 0, void 0, function* () {
332
+ // scenario: Alice creates a 'post' with Bob as recipient. Bob is able to delete
333
+ // the 'post' because he was recipient of it. Carol is not able to delete.
334
+ const protocolDefinition = recipientCanProtocolDefinition;
335
+ const alice = yield TestDataGenerator.generatePersona();
336
+ const bob = yield TestDataGenerator.generatePersona();
337
+ const carol = yield TestDataGenerator.generatePersona();
338
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
339
+ author: alice,
340
+ protocolDefinition
341
+ });
342
+ // setting up a stub DID resolver
343
+ TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
344
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
345
+ expect(protocolsConfigureReply.status.code).to.equal(202);
346
+ // Alice creates a 'post' with Bob as recipient
347
+ const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
348
+ author: alice,
349
+ recipient: bob.did,
350
+ protocol: protocolDefinition.protocol,
351
+ protocolPath: 'post',
352
+ });
353
+ const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, recordsWrite.dataStream);
354
+ expect(recordsWriteReply.status.code).to.eq(202);
355
+ // Carol is unable to delete the 'post'
356
+ const carolRecordsDelete = yield TestDataGenerator.generateRecordsDelete({
357
+ author: carol,
358
+ recordId: recordsWrite.message.recordId,
359
+ });
360
+ const carolRecordsDeleteReply = yield dwn.processMessage(alice.did, carolRecordsDelete.message);
361
+ expect(carolRecordsDeleteReply.status.code).to.eq(401);
362
+ expect(carolRecordsDeleteReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
363
+ // Bob is able to delete the post
364
+ const bobRecordsDelete = yield TestDataGenerator.generateRecordsDelete({
365
+ author: bob,
366
+ recordId: recordsWrite.message.recordId,
367
+ });
368
+ const bobRecordsDeleteReply = yield dwn.processMessage(alice.did, bobRecordsDelete.message);
369
+ expect(bobRecordsDeleteReply.status.code).to.eq(202);
370
+ }));
371
+ });
372
+ describe('author action rules', () => {
373
+ it('allow author to delete with ancestor author rule', () => __awaiter(this, void 0, void 0, function* () {
374
+ // scenario: Bob writes a 'post' and Alice writes a 'post/comment' to her DWN. Bob deletes the comment
375
+ // because author of post can delete. Carol is unable to delete the comment.
376
+ const protocolDefinition = authorCanProtocolDefinition;
377
+ const alice = yield TestDataGenerator.generatePersona();
378
+ const bob = yield TestDataGenerator.generatePersona();
379
+ const carol = yield TestDataGenerator.generatePersona();
380
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
381
+ author: alice,
382
+ protocolDefinition
383
+ });
384
+ // setting up a stub DID resolver
385
+ TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
386
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
387
+ expect(protocolsConfigureReply.status.code).to.equal(202);
388
+ // Bob writes a post
389
+ const postRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
390
+ author: bob,
391
+ protocol: protocolDefinition.protocol,
392
+ protocolPath: 'post',
393
+ });
394
+ const postRecordsWriteReply = yield dwn.processMessage(alice.did, postRecordsWrite.message, postRecordsWrite.dataStream);
395
+ expect(postRecordsWriteReply.status.code).to.eq(202);
396
+ // Alice writes a 'post/comment'
397
+ const commentRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
398
+ author: alice,
399
+ protocol: protocolDefinition.protocol,
400
+ protocolPath: 'post/comment',
401
+ contextId: postRecordsWrite.message.contextId,
402
+ parentId: postRecordsWrite.message.recordId,
403
+ });
404
+ const commentRecordsWriteReply = yield dwn.processMessage(alice.did, commentRecordsWrite.message, commentRecordsWrite.dataStream);
405
+ expect(commentRecordsWriteReply.status.code).to.eq(202);
406
+ // Carol is unable to delete Alice's 'post/comment'
407
+ const recordsDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
408
+ author: carol,
409
+ recordId: commentRecordsWrite.message.recordId,
410
+ });
411
+ const recordsDeleteCarolReply = yield dwn.processMessage(alice.did, recordsDeleteCarol.message);
412
+ expect(recordsDeleteCarolReply.status.code).to.eq(401);
413
+ expect(recordsDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
414
+ // Bob is able to delete the Alice's 'post/comment'
415
+ const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
416
+ author: bob,
417
+ recordId: commentRecordsWrite.message.recordId,
418
+ });
419
+ const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
420
+ expect(recordsDeleteReply.status.code).to.eq(202);
421
+ }));
422
+ });
423
+ describe('role based deletes', () => {
424
+ it('should allow deletes with $contextRole', () => __awaiter(this, void 0, void 0, function* () {
425
+ // scenario: Alice adds Bob as a 'thread/admin' $contextRole. She writes a 'thread/chat'.
426
+ // Bob invokes his admin role to delete the 'thread/chat'. Carol is unable to delete
427
+ // the 'thread/chat'.
428
+ const alice = yield DidKeyResolver.generate();
429
+ const bob = yield DidKeyResolver.generate();
430
+ const carol = yield DidKeyResolver.generate();
431
+ const protocolDefinition = threadRoleProtocolDefinition;
432
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
433
+ author: alice,
434
+ protocolDefinition
435
+ });
436
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
437
+ expect(protocolsConfigureReply.status.code).to.equal(202);
438
+ // Alice creates a thread
439
+ const threadRecord = yield TestDataGenerator.generateRecordsWrite({
440
+ author: alice,
441
+ recipient: bob.did,
442
+ protocol: protocolDefinition.protocol,
443
+ protocolPath: 'thread'
444
+ });
445
+ const threadRecordReply = yield dwn.processMessage(alice.did, threadRecord.message, threadRecord.dataStream);
446
+ expect(threadRecordReply.status.code).to.equal(202);
447
+ // Alice adds Bob as a 'thread/admin' in that thread
448
+ const participantRecord = yield TestDataGenerator.generateRecordsWrite({
449
+ author: alice,
450
+ recipient: bob.did,
451
+ protocol: protocolDefinition.protocol,
452
+ protocolPath: 'thread/admin',
453
+ contextId: threadRecord.message.contextId,
454
+ parentId: threadRecord.message.recordId,
455
+ });
456
+ const participantRecordReply = yield dwn.processMessage(alice.did, participantRecord.message, participantRecord.dataStream);
457
+ expect(participantRecordReply.status.code).to.equal(202);
458
+ // Alice writes a chat message in that thread
459
+ const chatRecord = yield TestDataGenerator.generateRecordsWrite({
460
+ author: alice,
461
+ recipient: alice.did,
462
+ protocol: protocolDefinition.protocol,
463
+ protocolPath: 'thread/chat',
464
+ contextId: threadRecord.message.contextId,
465
+ parentId: threadRecord.message.recordId,
466
+ });
467
+ const chatRecordReply = yield dwn.processMessage(alice.did, chatRecord.message, chatRecord.dataStream);
468
+ expect(chatRecordReply.status.code).to.equal(202);
469
+ const chatDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
470
+ author: carol,
471
+ recordId: chatRecord.message.recordId,
472
+ });
473
+ const chatDeleteReplyCarol = yield dwn.processMessage(alice.did, chatDeleteCarol.message);
474
+ expect(chatDeleteReplyCarol.status.code).to.eq(401);
475
+ expect(chatDeleteReplyCarol.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
476
+ // Bob invokes the role to delete the chat message
477
+ const chatDelete = yield TestDataGenerator.generateRecordsDelete({
478
+ author: bob,
479
+ recordId: chatRecord.message.recordId,
480
+ protocolRole: 'thread/admin',
481
+ });
482
+ const chatDeleteReply = yield dwn.processMessage(alice.did, chatDelete.message);
483
+ expect(chatDeleteReply.status.code).to.equal(202);
484
+ }));
485
+ it('should allow delete with $globalRole', () => __awaiter(this, void 0, void 0, function* () {
486
+ // scenario: Alice adds Bob as an 'admin' $globalRole. She writes a 'chat'.
487
+ // Bob invokes his admin role to delete the 'chat'.
488
+ const alice = yield DidKeyResolver.generate();
489
+ const bob = yield DidKeyResolver.generate();
490
+ const carol = yield DidKeyResolver.generate();
491
+ const protocolDefinition = friendRoleProtocolDefinition;
492
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
493
+ author: alice,
494
+ protocolDefinition
495
+ });
496
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
497
+ expect(protocolsConfigureReply.status.code).to.equal(202);
498
+ // Alice adds Bob as a 'thread/admin' in that thread
499
+ const participantRecord = yield TestDataGenerator.generateRecordsWrite({
500
+ author: alice,
501
+ recipient: bob.did,
502
+ protocol: protocolDefinition.protocol,
503
+ protocolPath: 'admin',
504
+ });
505
+ const participantRecordReply = yield dwn.processMessage(alice.did, participantRecord.message, participantRecord.dataStream);
506
+ expect(participantRecordReply.status.code).to.equal(202);
507
+ // Alice writes a chat message in that thread
508
+ const chatRecord = yield TestDataGenerator.generateRecordsWrite({
509
+ author: alice,
510
+ recipient: alice.did,
511
+ protocol: protocolDefinition.protocol,
512
+ protocolPath: 'chat',
513
+ });
514
+ const chatRecordReply = yield dwn.processMessage(alice.did, chatRecord.message, chatRecord.dataStream);
515
+ expect(chatRecordReply.status.code).to.equal(202);
516
+ // Carol is unable to delete the chat message
517
+ const chatDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
518
+ author: carol,
519
+ recordId: chatRecord.message.recordId,
520
+ });
521
+ const chatDeleteCarolReply = yield dwn.processMessage(alice.did, chatDeleteCarol.message);
522
+ expect(chatDeleteCarolReply.status.code).to.equal(401);
523
+ expect(chatDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
524
+ // Bob invokes the role to delete the chat message
525
+ const chatDelete = yield TestDataGenerator.generateRecordsDelete({
526
+ author: bob,
527
+ recordId: chatRecord.message.recordId,
528
+ protocolRole: 'admin',
529
+ });
530
+ const chatDeleteReply = yield dwn.processMessage(alice.did, chatDelete.message);
531
+ expect(chatDeleteReply.status.code).to.equal(202);
532
+ }));
533
+ });
534
+ });
535
+ it('should return 401 if message is not authorized', () => __awaiter(this, void 0, void 0, function* () {
536
+ // scenario: Alice creates a record and Bob is unable to delete it.
537
+ const alice = yield DidKeyResolver.generate();
538
+ const bob = yield DidKeyResolver.generate();
539
+ const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
540
+ author: alice,
541
+ });
542
+ const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, recordsWrite.dataStream);
543
+ expect(recordsWriteReply.status.code).to.equal(202);
544
+ const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
545
+ author: bob,
546
+ recordId: recordsWrite.message.recordId,
547
+ });
548
+ const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
549
+ expect(recordsDeleteReply.status.code).to.equal(401);
550
+ expect(recordsDeleteReply.status.detail).to.contain(DwnErrorCode.RecordsDeleteAuthorizationFailed);
551
+ }));
552
+ describe('event log', () => {
553
+ it('should include RecordsDelete event and keep initial RecordsWrite event', () => __awaiter(this, void 0, void 0, function* () {
554
+ const alice = yield DidKeyResolver.generate();
555
+ const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
556
+ const writeReply = yield dwn.processMessage(alice.did, message, dataStream);
557
+ expect(writeReply.status.code).to.equal(202);
558
+ const recordsDelete = yield RecordsDelete.create({
559
+ recordId: message.recordId,
560
+ signer: Jws.createSigner(alice)
561
+ });
562
+ const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
563
+ expect(deleteReply.status.code).to.equal(202);
564
+ const events = yield eventLog.getEvents(alice.did);
565
+ expect(events.length).to.equal(2);
566
+ const writeMessageCid = yield Message.getCid(message);
567
+ const deleteMessageCid = yield Message.getCid(recordsDelete.message);
568
+ const expectedMessageCids = new Set([writeMessageCid, deleteMessageCid]);
569
+ for (const { messageCid } of events) {
570
+ expectedMessageCids.delete(messageCid);
571
+ }
572
+ expect(expectedMessageCids.size).to.equal(0);
573
+ }));
574
+ it('should only keep first write and delete when subsequent writes happen', () => __awaiter(this, void 0, void 0, function* () {
575
+ const { message, author, dataStream, recordsWrite } = yield TestDataGenerator.generateRecordsWrite();
576
+ TestStubGenerator.stubDidResolver(didResolver, [author]);
577
+ const reply = yield dwn.processMessage(author.did, message, dataStream);
578
+ expect(reply.status.code).to.equal(202);
579
+ const newWrite = yield RecordsWrite.createFrom({
580
+ recordsWriteMessage: recordsWrite.message,
581
+ published: true,
582
+ signer: Jws.createSigner(author)
583
+ });
584
+ const newWriteReply = yield dwn.processMessage(author.did, newWrite.message);
585
+ expect(newWriteReply.status.code).to.equal(202);
586
+ const recordsDelete = yield RecordsDelete.create({
587
+ recordId: message.recordId,
588
+ signer: Jws.createSigner(author)
589
+ });
590
+ const deleteReply = yield dwn.processMessage(author.did, recordsDelete.message);
591
+ expect(deleteReply.status.code).to.equal(202);
592
+ const events = yield eventLog.getEvents(author.did);
593
+ expect(events.length).to.equal(2);
594
+ const deletedMessageCid = yield Message.getCid(newWrite.message);
595
+ for (const { messageCid } of events) {
596
+ if (messageCid === deletedMessageCid) {
597
+ expect.fail(`${messageCid} should not exist`);
598
+ }
599
+ }
600
+ }));
601
+ });
602
+ });
603
+ it('should return 401 if signature check fails', () => __awaiter(this, void 0, void 0, function* () {
604
+ const { author, message } = yield TestDataGenerator.generateRecordsDelete();
605
+ const tenant = author.did;
606
+ // setting up a stub did resolver & message store
607
+ // intentionally not supplying the public key so a different public key is generated to simulate invalid signature
608
+ const mismatchingPersona = yield TestDataGenerator.generatePersona({ did: author.did, keyId: author.keyId });
609
+ const didResolver = TestStubGenerator.createDidResolverStub(mismatchingPersona);
610
+ const messageStore = stubInterface();
611
+ const dataStore = stubInterface();
612
+ const recordsDeleteHandler = new RecordsDeleteHandler(didResolver, messageStore, dataStore, eventLog);
613
+ const reply = yield recordsDeleteHandler.handle({ tenant, message });
614
+ expect(reply.status.code).to.equal(401);
615
+ }));
616
+ it('should return 400 if fail parsing the message', () => __awaiter(this, void 0, void 0, function* () {
617
+ const { author, message } = yield TestDataGenerator.generateRecordsDelete();
618
+ const tenant = author.did;
619
+ // setting up a stub method resolver & message store
620
+ const messageStore = stubInterface();
621
+ const dataStore = stubInterface();
622
+ const recordsDeleteHandler = new RecordsDeleteHandler(didResolver, messageStore, dataStore, eventLog);
623
+ // stub the `parse()` function to throw an error
624
+ sinon.stub(RecordsDelete, 'parse').throws('anyError');
625
+ const reply = yield recordsDeleteHandler.handle({ tenant, message });
626
+ expect(reply.status.code).to.equal(400);
627
+ }));
628
+ });
629
+ }
630
+ //# sourceMappingURL=records-delete.spec.js.map