@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,490 @@
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 emailProtocolDefinition from '../vectors/protocol-definitions/email.json' with { type: 'json' };
12
+ import sinon from 'sinon';
13
+ import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' with { type: 'json' };
14
+ import chai, { expect } from 'chai';
15
+ import { base64url } from 'multiformats/bases/base64';
16
+ import { DataStream } from '../../src/utils/data-stream.js';
17
+ import { DidKeyResolver } from '../../src/did/did-key-resolver.js';
18
+ import { DidResolver } from '../../src/did/did-resolver.js';
19
+ import { Dwn } from '../../src/dwn.js';
20
+ import { DwnErrorCode } from '../../src/core/dwn-error.js';
21
+ import { Jws } from '../../src/utils/jws.js';
22
+ import { RecordsWrite } from '../../src/interfaces/records-write.js';
23
+ import { TestDataGenerator } from '../utils/test-data-generator.js';
24
+ import { TestStores } from '../test-stores.js';
25
+ import { Time } from '../../src/utils/time.js';
26
+ import { DwnInterfaceName, DwnMethodName, PermissionsGrant, RecordsDelete, RecordsQuery, RecordsRead } from '../../src/index.js';
27
+ chai.use(chaiAsPromised);
28
+ export function testDelegatedGrantScenarios() {
29
+ describe('delegated grant tests', () => __awaiter(this, void 0, void 0, function* () {
30
+ if (process.env.TESTSOFF === 'true') {
31
+ return;
32
+ }
33
+ let didResolver;
34
+ let messageStore;
35
+ let dataStore;
36
+ let eventLog;
37
+ let dwn;
38
+ // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
39
+ // so that different test suites can reuse the same backend store for testing
40
+ before(() => __awaiter(this, void 0, void 0, function* () {
41
+ didResolver = new DidResolver([new DidKeyResolver()]);
42
+ const stores = TestStores.get();
43
+ messageStore = stores.messageStore;
44
+ dataStore = stores.dataStore;
45
+ eventLog = stores.eventLog;
46
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog });
47
+ }));
48
+ beforeEach(() => __awaiter(this, void 0, void 0, function* () {
49
+ sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
50
+ // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
51
+ yield messageStore.clear();
52
+ yield dataStore.clear();
53
+ yield eventLog.clear();
54
+ }));
55
+ after(() => __awaiter(this, void 0, void 0, function* () {
56
+ yield dwn.close();
57
+ }));
58
+ it('should only allow correct entity invoking a delegated grant to write', () => __awaiter(this, void 0, void 0, function* () {
59
+ var _a, _b;
60
+ // scenario:
61
+ // 1. Alice creates a delegated grant for Device X and Device Y,
62
+ // 2. Device X and Y can both use their grants to write a message to Bob's DWN as Alice
63
+ // 3. Messages written by device X and Y should be considered to have been authored by Alice
64
+ // 4. Carol should not be able to write a message as Alice using Device X's delegated grant
65
+ const alice = yield DidKeyResolver.generate();
66
+ const deviceX = yield DidKeyResolver.generate();
67
+ const deviceY = yield DidKeyResolver.generate();
68
+ const bob = yield DidKeyResolver.generate();
69
+ const carol = yield DidKeyResolver.generate();
70
+ // Bob has the email protocol installed
71
+ const protocolDefinition = emailProtocolDefinition;
72
+ const protocol = protocolDefinition.protocol;
73
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
74
+ author: bob,
75
+ protocolDefinition
76
+ });
77
+ const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
78
+ expect(protocolConfigureReply.status.code).to.equal(202);
79
+ // Alice creates a delegated grant for device X and device Y
80
+ const scope = {
81
+ interface: DwnInterfaceName.Records,
82
+ method: DwnMethodName.Write,
83
+ protocol
84
+ };
85
+ const deviceXGrant = yield PermissionsGrant.create({
86
+ delegated: true, // this is a delegated grant
87
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
88
+ description: 'Allow to write to message protocol',
89
+ grantedBy: alice.did,
90
+ grantedTo: deviceX.did,
91
+ grantedFor: alice.did,
92
+ scope: scope,
93
+ signer: Jws.createSigner(alice)
94
+ });
95
+ const deviceYGrant = yield PermissionsGrant.create({
96
+ delegated: true, // this is a delegated grant
97
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
98
+ description: 'Allow to write to message protocol',
99
+ grantedBy: alice.did,
100
+ grantedTo: deviceY.did,
101
+ grantedFor: alice.did,
102
+ scope: scope,
103
+ signer: Jws.createSigner(alice)
104
+ });
105
+ // generate a `RecordsWrite` message from device X and write to Bob's DWN
106
+ const deviceXData = new TextEncoder().encode('message from device X');
107
+ const deviceXDataStream = DataStream.fromBytes(deviceXData);
108
+ const messageByDeviceX = yield RecordsWrite.create({
109
+ signer: Jws.createSigner(deviceX),
110
+ delegatedGrant: deviceXGrant.asDelegatedGrant(),
111
+ protocol,
112
+ protocolPath: 'email', // this comes from `types` in protocol definition
113
+ schema: protocolDefinition.types.email.schema,
114
+ dataFormat: protocolDefinition.types.email.dataFormats[0],
115
+ data: deviceXData
116
+ });
117
+ const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, deviceXDataStream);
118
+ expect(deviceXWriteReply.status.code).to.equal(202);
119
+ // verify the message by device X got written to Bob's DWN, AND Alice is the logical author
120
+ const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
121
+ author: bob,
122
+ filter: { protocol }
123
+ });
124
+ const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
125
+ expect(bobRecordsQueryReply.status.code).to.equal(200);
126
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
127
+ const fetchedDeviceXWriteEntry = bobRecordsQueryReply.entries[0];
128
+ expect(fetchedDeviceXWriteEntry.encodedData).to.equal(base64url.baseEncode(deviceXData));
129
+ const fetchedDeviceXWrite = yield RecordsWrite.parse(fetchedDeviceXWriteEntry);
130
+ expect(fetchedDeviceXWrite.author).to.equal(alice.did);
131
+ // generate a new message by device Y updating the existing record device X created, and write to Bob's DWN
132
+ const deviceYData = new TextEncoder().encode('message from device Y');
133
+ const deviceYDataStream = DataStream.fromBytes(deviceYData);
134
+ const messageByDeviceY = yield RecordsWrite.createFrom({
135
+ recordsWriteMessage: fetchedDeviceXWrite.message,
136
+ data: deviceYData,
137
+ signer: Jws.createSigner(deviceY),
138
+ delegatedGrant: deviceYGrant.asDelegatedGrant(),
139
+ });
140
+ const deviceYWriteReply = yield dwn.processMessage(bob.did, messageByDeviceY.message, deviceYDataStream);
141
+ expect(deviceYWriteReply.status.code).to.equal(202);
142
+ // verify the message by device Y got written to Bob's DWN, AND Alice is the logical author
143
+ const bobRecordsQueryReply2 = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
144
+ expect(bobRecordsQueryReply2.status.code).to.equal(200);
145
+ expect((_b = bobRecordsQueryReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(1);
146
+ const fetchedDeviceYWriteEntry = bobRecordsQueryReply2.entries[0];
147
+ expect(fetchedDeviceYWriteEntry.encodedData).to.equal(base64url.baseEncode(deviceYData));
148
+ const fetchedDeviceYWrite = yield RecordsWrite.parse(fetchedDeviceYWriteEntry);
149
+ expect(fetchedDeviceYWrite.author).to.equal(alice.did);
150
+ // Verify that Carol cannot write a chat message as Alice by invoking the Device X's grant
151
+ const messageByCarolAsAlice = new TextEncoder().encode('Message from Carol pretending to be Alice');
152
+ const writeByCarolAsAlice = yield RecordsWrite.create({
153
+ signer: Jws.createSigner(carol),
154
+ delegatedGrant: deviceXGrant.asDelegatedGrant(),
155
+ protocol,
156
+ protocolPath: 'email', // this comes from `types` in protocol definition
157
+ schema: protocolDefinition.types.email.schema,
158
+ dataFormat: protocolDefinition.types.email.dataFormats[0],
159
+ data: messageByCarolAsAlice
160
+ });
161
+ const carolWriteReply = yield dwn.processMessage(carol.did, writeByCarolAsAlice.message, DataStream.fromBytes(messageByCarolAsAlice));
162
+ expect(carolWriteReply.status.code).to.equal(400);
163
+ expect(carolWriteReply.status.detail).to.contain(DwnErrorCode.RecordsValidateIntegrityGrantedToAndSignerMismatch);
164
+ }));
165
+ it('should only allow correct entity invoking a delegated grant to read or query', () => __awaiter(this, void 0, void 0, function* () {
166
+ var _a, _b, _c, _d;
167
+ // scenario:
168
+ // 1. Alice creates a delegated grant for device X,
169
+ // 2. Bob starts a chat thread with Alice on his DWN
170
+ // 3. device X should be able to read the chat thread
171
+ // 4. Carol should not be able to read the chat thread using device X's delegated grant
172
+ const alice = yield DidKeyResolver.generate();
173
+ const deviceX = yield DidKeyResolver.generate();
174
+ const bob = yield DidKeyResolver.generate();
175
+ const carol = yield DidKeyResolver.generate();
176
+ // Bob has the chat protocol installed
177
+ const protocolDefinition = threadRoleProtocolDefinition;
178
+ const protocol = threadRoleProtocolDefinition.protocol;
179
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
180
+ author: bob,
181
+ protocolDefinition
182
+ });
183
+ const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
184
+ expect(protocolsConfigureReply.status.code).to.equal(202);
185
+ // Bob starts a chat thread
186
+ const threadRecord = yield TestDataGenerator.generateRecordsWrite({
187
+ author: bob,
188
+ protocol: protocolDefinition.protocol,
189
+ protocolPath: 'thread',
190
+ });
191
+ const threadRoleReply = yield dwn.processMessage(bob.did, threadRecord.message, threadRecord.dataStream);
192
+ expect(threadRoleReply.status.code).to.equal(202);
193
+ // Bob adds Alice as a participant in the thread
194
+ const participantRoleRecord = yield TestDataGenerator.generateRecordsWrite({
195
+ author: bob,
196
+ recipient: alice.did,
197
+ protocol: protocolDefinition.protocol,
198
+ protocolPath: 'thread/participant',
199
+ contextId: threadRecord.message.contextId,
200
+ parentId: threadRecord.message.recordId,
201
+ data: new TextEncoder().encode('Alice is my friend'),
202
+ });
203
+ const participantRoleReply = yield dwn.processMessage(bob.did, participantRoleRecord.message, participantRoleRecord.dataStream);
204
+ expect(participantRoleReply.status.code).to.equal(202);
205
+ // Bob writes a chat message in the thread
206
+ const chatRecord = yield TestDataGenerator.generateRecordsWrite({
207
+ author: bob,
208
+ protocol: protocolDefinition.protocol,
209
+ protocolPath: 'thread/chat',
210
+ contextId: threadRecord.message.contextId,
211
+ parentId: threadRecord.message.recordId,
212
+ });
213
+ const chatRecordReply = yield dwn.processMessage(bob.did, chatRecord.message, chatRecord.dataStream);
214
+ expect(chatRecordReply.status.code).to.equal(202);
215
+ // Alice creates a delegated grant for device X to act as Alice.
216
+ const scope = {
217
+ interface: DwnInterfaceName.Records,
218
+ method: DwnMethodName.Write,
219
+ protocol
220
+ };
221
+ const grantToDeviceX = yield PermissionsGrant.create({
222
+ delegated: true, // this is a delegated grant
223
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
224
+ description: 'Allow device X to write as me in chat protocol',
225
+ grantedBy: alice.did,
226
+ grantedTo: deviceX.did,
227
+ grantedFor: alice.did,
228
+ scope: scope,
229
+ signer: Jws.createSigner(alice)
230
+ });
231
+ // sanity verify Bob himself is able to query for the chat thread from Bob's DWN
232
+ const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
233
+ author: bob,
234
+ filter: { protocol }
235
+ });
236
+ const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
237
+ expect(bobRecordsQueryReply.status.code).to.equal(200);
238
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(3);
239
+ // sanity verify Alice herself is able to query for the chat message from Bob's DWN
240
+ const recordsQueryByAlice = yield RecordsQuery.create({
241
+ signer: Jws.createSigner(alice),
242
+ protocolRole: 'thread/participant',
243
+ filter: {
244
+ protocol,
245
+ contextId: threadRecord.message.contextId,
246
+ protocolPath: 'thread/chat'
247
+ }
248
+ });
249
+ const aliceRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByAlice.message);
250
+ expect(aliceRecordsQueryReply.status.code).to.equal(200);
251
+ expect((_b = aliceRecordsQueryReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(1);
252
+ // verify device X is able to query for the chat message from Bob's DWN
253
+ const recordsQueryByDeviceX = yield RecordsQuery.create({
254
+ signer: Jws.createSigner(deviceX),
255
+ delegatedGrant: grantToDeviceX.asDelegatedGrant(),
256
+ protocolRole: 'thread/participant',
257
+ filter: {
258
+ protocol,
259
+ contextId: threadRecord.message.contextId,
260
+ protocolPath: 'thread/chat'
261
+ }
262
+ });
263
+ const deviceXRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByDeviceX.message);
264
+ expect(deviceXRecordsQueryReply.status.code).to.equal(200);
265
+ expect((_c = deviceXRecordsQueryReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(1);
266
+ // verify device X is able to read the chat message from Bob's DWN
267
+ const recordsReadByDeviceX = yield RecordsRead.create({
268
+ signer: Jws.createSigner(deviceX),
269
+ delegatedGrant: grantToDeviceX.asDelegatedGrant(),
270
+ protocolRole: 'thread/participant',
271
+ filter: {
272
+ recordId: chatRecord.message.recordId
273
+ }
274
+ });
275
+ const deviceXRecordsReadReply = yield dwn.processMessage(bob.did, recordsReadByDeviceX.message);
276
+ expect(deviceXRecordsReadReply.status.code).to.equal(200);
277
+ expect((_d = deviceXRecordsReadReply.record) === null || _d === void 0 ? void 0 : _d.recordId).to.equal(chatRecord.message.recordId);
278
+ // Verify that Carol cannot query as Alice by invoking the delegated grant granted to Device X
279
+ const recordsQueryByCarol = yield RecordsQuery.create({
280
+ signer: Jws.createSigner(carol),
281
+ delegatedGrant: grantToDeviceX.asDelegatedGrant(),
282
+ protocolRole: 'thread/participant',
283
+ filter: {
284
+ protocol,
285
+ contextId: threadRecord.message.contextId,
286
+ protocolPath: 'thread/chat'
287
+ }
288
+ });
289
+ const recordsQueryByCarolReply = yield dwn.processMessage(bob.did, recordsQueryByCarol.message);
290
+ expect(recordsQueryByCarolReply.status.code).to.equal(400);
291
+ expect(recordsQueryByCarolReply.status.detail).to.contain(DwnErrorCode.RecordsValidateIntegrityGrantedToAndSignerMismatch);
292
+ // Verify that Carol cannot read as Alice by invoking the delegated grant granted to Device X
293
+ const recordsReadByCarol = yield RecordsRead.create({
294
+ signer: Jws.createSigner(carol),
295
+ delegatedGrant: grantToDeviceX.asDelegatedGrant(),
296
+ protocolRole: 'thread/participant',
297
+ filter: {
298
+ recordId: chatRecord.message.recordId
299
+ }
300
+ });
301
+ const recordsReadByCarolReply = yield dwn.processMessage(bob.did, recordsReadByCarol.message);
302
+ expect(recordsReadByCarolReply.status.code).to.equal(400);
303
+ expect(recordsQueryByCarolReply.status.detail).to.contain(DwnErrorCode.RecordsValidateIntegrityGrantedToAndSignerMismatch);
304
+ }));
305
+ it('should only allow correct entity invoking a delegated grant to delete', () => __awaiter(this, void 0, void 0, function* () {
306
+ var _a, _b;
307
+ // scenario:
308
+ // 1. Bob installs the chat protocol on his DWN and makes Alice an admin
309
+ // 2. Bob starts a chat thread with Carol on his DWN
310
+ // 3. Alice creates a delegated grant for Device X to act as her
311
+ // 4. Carol should not be able to delete a chat message as Alice using Device X's delegated grant
312
+ // 5. Device X should be able to delete a chat message as Alice
313
+ const alice = yield DidKeyResolver.generate();
314
+ const deviceX = yield DidKeyResolver.generate();
315
+ const bob = yield DidKeyResolver.generate();
316
+ const carol = yield DidKeyResolver.generate();
317
+ // Bob has the chat protocol installed
318
+ const protocolDefinition = threadRoleProtocolDefinition;
319
+ const protocol = threadRoleProtocolDefinition.protocol;
320
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
321
+ author: bob,
322
+ protocolDefinition
323
+ });
324
+ const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
325
+ expect(protocolsConfigureReply.status.code).to.equal(202);
326
+ // Bob adds Alice as an admin
327
+ const globalAdminRecord = yield TestDataGenerator.generateRecordsWrite({
328
+ author: bob,
329
+ recipient: alice.did,
330
+ protocol: protocolDefinition.protocol,
331
+ protocolPath: 'globalAdmin',
332
+ data: new TextEncoder().encode('I trust Alice to manage my chat thread'),
333
+ });
334
+ const globalAdminRecordReply = yield dwn.processMessage(bob.did, globalAdminRecord.message, globalAdminRecord.dataStream);
335
+ expect(globalAdminRecordReply.status.code).to.equal(202);
336
+ // Bob starts a chat thread
337
+ const threadRecord = yield TestDataGenerator.generateRecordsWrite({
338
+ author: bob,
339
+ protocol: protocolDefinition.protocol,
340
+ protocolPath: 'thread',
341
+ });
342
+ const threadRoleReply = yield dwn.processMessage(bob.did, threadRecord.message, threadRecord.dataStream);
343
+ expect(threadRoleReply.status.code).to.equal(202);
344
+ // Bob adds Carol as a participant in the thread
345
+ const participantRoleRecord = yield TestDataGenerator.generateRecordsWrite({
346
+ author: bob,
347
+ recipient: carol.did,
348
+ protocol: protocolDefinition.protocol,
349
+ protocolPath: 'thread/participant',
350
+ contextId: threadRecord.message.contextId,
351
+ parentId: threadRecord.message.recordId
352
+ });
353
+ const participantRoleReply = yield dwn.processMessage(bob.did, participantRoleRecord.message, participantRoleRecord.dataStream);
354
+ expect(participantRoleReply.status.code).to.equal(202);
355
+ // Carol writes a chat message in the thread
356
+ const chatRecord = yield TestDataGenerator.generateRecordsWrite({
357
+ author: carol,
358
+ protocolRole: 'thread/participant',
359
+ protocol: protocolDefinition.protocol,
360
+ protocolPath: 'thread/chat',
361
+ contextId: threadRecord.message.contextId,
362
+ parentId: threadRecord.message.recordId,
363
+ data: new TextEncoder().encode('A rude message'),
364
+ });
365
+ const chatRecordReply = yield dwn.processMessage(bob.did, chatRecord.message, chatRecord.dataStream);
366
+ expect(chatRecordReply.status.code).to.equal(202);
367
+ // Alice creates a delegated grant for device X to act as Alice.
368
+ const scope = {
369
+ interface: DwnInterfaceName.Records,
370
+ method: DwnMethodName.Write,
371
+ protocol
372
+ };
373
+ const grantToDeviceX = yield PermissionsGrant.create({
374
+ delegated: true, // this is a delegated grant
375
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
376
+ description: 'Allow device X to write as me in chat protocol',
377
+ grantedBy: alice.did,
378
+ grantedTo: deviceX.did,
379
+ grantedFor: alice.did,
380
+ scope: scope,
381
+ signer: Jws.createSigner(alice)
382
+ });
383
+ // verify Carol is not able to delete Carol's chat message from Bob's DWN
384
+ const recordsDeleteByCarol = yield RecordsDelete.create({
385
+ signer: Jws.createSigner(carol),
386
+ delegatedGrant: grantToDeviceX.asDelegatedGrant(),
387
+ protocolRole: 'thread/participant',
388
+ recordId: chatRecord.message.recordId
389
+ });
390
+ const carolRecordsDeleteReply = yield dwn.processMessage(bob.did, recordsDeleteByCarol.message);
391
+ expect(carolRecordsDeleteReply.status.code).to.equal(400);
392
+ // sanity verify the chat message is still in Bob's DWN
393
+ const recordsQueryByBob = yield TestDataGenerator.generateRecordsQuery({
394
+ author: bob,
395
+ filter: { protocolPath: 'thread/chat' }
396
+ });
397
+ const bobRecordsQueryReply = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
398
+ expect(bobRecordsQueryReply.status.code).to.equal(200);
399
+ expect((_a = bobRecordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
400
+ // verify device X is able to delete Carol's chat message from Bob's DWN
401
+ const recordsDeleteByDeviceX = yield RecordsDelete.create({
402
+ signer: Jws.createSigner(deviceX),
403
+ delegatedGrant: grantToDeviceX.asDelegatedGrant(),
404
+ protocolRole: 'globalAdmin',
405
+ recordId: chatRecord.message.recordId
406
+ });
407
+ const deviceXRecordsDeleteReply = yield dwn.processMessage(bob.did, recordsDeleteByDeviceX.message);
408
+ expect(deviceXRecordsDeleteReply.status.code).to.equal(202);
409
+ // sanity verify the chat message is no longer queryable from Bob's DWN
410
+ const bobRecordsQueryReply2 = yield dwn.processMessage(bob.did, recordsQueryByBob.message);
411
+ expect(bobRecordsQueryReply2.status.code).to.equal(200);
412
+ expect((_b = bobRecordsQueryReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
413
+ }));
414
+ xit('should not allow entity using a non-delegated grant as a delegated grant to invoke write', () => __awaiter(this, void 0, void 0, function* () {
415
+ }));
416
+ xit('should not allow entity using a non-delegated grant as a delegated grant to invoke read', () => __awaiter(this, void 0, void 0, function* () {
417
+ }));
418
+ xit('should not allow entity using a non-delegated grant as a delegated grant to invoke query', () => __awaiter(this, void 0, void 0, function* () {
419
+ }));
420
+ xit('should not allow entity using a non-delegated grant as a delegated grant to invoke delete', () => __awaiter(this, void 0, void 0, function* () {
421
+ }));
422
+ it('should fail if delegated grant has a mismatching protocol scope - write', () => __awaiter(this, void 0, void 0, function* () {
423
+ // scenario:
424
+ // 1. Alice creates a delegated grant for device X to act as her for a protocol that is NOT email protocol
425
+ // 2. Bob has email protocol configured for his DWN that allows anyone to write an email to him
426
+ // 3. Device X attempts to use the delegated grant to write an email to Bob as Alice
427
+ // 4. Bob's DWN should reject Device X's message
428
+ const alice = yield DidKeyResolver.generate();
429
+ const deviceX = yield DidKeyResolver.generate();
430
+ const bob = yield DidKeyResolver.generate();
431
+ // 1. Alice creates a delegated grant for device X to act as her for a protocol that is NOT email protocol
432
+ const scope = {
433
+ interface: DwnInterfaceName.Records,
434
+ method: DwnMethodName.Write,
435
+ protocol: 'random-protocol'
436
+ };
437
+ const deviceXGrant = yield PermissionsGrant.create({
438
+ delegated: true, // this is a delegated grant
439
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
440
+ description: 'Allow to write to some random protocol',
441
+ grantedBy: alice.did,
442
+ grantedTo: deviceX.did,
443
+ grantedFor: alice.did,
444
+ scope: scope,
445
+ signer: Jws.createSigner(alice)
446
+ });
447
+ // 2. Bob has email protocol configured for his DWN that allows anyone to write an email to him
448
+ const protocolDefinition = emailProtocolDefinition;
449
+ const protocol = protocolDefinition.protocol;
450
+ const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
451
+ author: bob,
452
+ protocolDefinition
453
+ });
454
+ const protocolConfigureReply = yield dwn.processMessage(bob.did, protocolsConfig.message);
455
+ expect(protocolConfigureReply.status.code).to.equal(202);
456
+ // 3. Device X attempts to use the delegated grant to write an email to Bob as Alice
457
+ const deviceXData = new TextEncoder().encode('message from device X');
458
+ const deviceXDataStream = DataStream.fromBytes(deviceXData);
459
+ const messageByDeviceX = yield RecordsWrite.create({
460
+ signer: Jws.createSigner(deviceX),
461
+ delegatedGrant: deviceXGrant.asDelegatedGrant(),
462
+ protocol,
463
+ protocolPath: 'email', // this comes from `types` in protocol definition
464
+ schema: protocolDefinition.types.email.schema,
465
+ dataFormat: protocolDefinition.types.email.dataFormats[0],
466
+ data: deviceXData
467
+ });
468
+ const deviceXWriteReply = yield dwn.processMessage(bob.did, messageByDeviceX.message, deviceXDataStream);
469
+ expect(deviceXWriteReply.status.code).to.equal(401);
470
+ expect(deviceXWriteReply.status.detail).to.contain(DwnErrorCode.RecordsGrantAuthorizationScopeProtocolMismatch);
471
+ }));
472
+ xit('should evaluate scoping correctly when invoking a delegated grant to write', () => __awaiter(this, void 0, void 0, function* () {
473
+ }));
474
+ xit('should evaluate scoping correctly when invoking a delegated grant to read', () => __awaiter(this, void 0, void 0, function* () {
475
+ }));
476
+ xit('should evaluate scoping correctly when invoking a delegated grant to query', () => __awaiter(this, void 0, void 0, function* () {
477
+ }));
478
+ xit('should evaluate scoping correctly when invoking a delegated grant to delete', () => __awaiter(this, void 0, void 0, function* () {
479
+ }));
480
+ xit('should not be able to create a RecordsWrite with a non-delegated grant assigned to `authorDelegatedGrant`', () => __awaiter(this, void 0, void 0, function* () {
481
+ }));
482
+ xit('should fail if presented with a delegated grant with invalid grantor signature', () => __awaiter(this, void 0, void 0, function* () {
483
+ }));
484
+ xit('should fail if presented with a delegated grant with mismatching grant ID in the payload of the message signature', () => __awaiter(this, void 0, void 0, function* () {
485
+ }));
486
+ xit('should fail if presented with a revoked delegated grant', () => __awaiter(this, void 0, void 0, function* () {
487
+ }));
488
+ }));
489
+ }
490
+ //# sourceMappingURL=delegated-grant.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegated-grant.spec.js","sourceRoot":"","sources":["../../../../tests/scenarios/delegated-grant.spec.ts"],"names":[],"mappings":"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"}