@enbox/dwn-sdk-js 0.0.1

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 (810) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +352 -0
  3. package/dist/bundles/dwn.js +153 -0
  4. package/dist/cjs/index.js +36749 -0
  5. package/dist/cjs/package.json +1 -0
  6. package/dist/esm/generated/precompiled-validators.js +11973 -0
  7. package/dist/esm/generated/precompiled-validators.js.map +1 -0
  8. package/dist/esm/json-schemas/definitions.json +23 -0
  9. package/dist/esm/src/core/abstract-message.js +47 -0
  10. package/dist/esm/src/core/abstract-message.js.map +1 -0
  11. package/dist/esm/src/core/auth.js +39 -0
  12. package/dist/esm/src/core/auth.js.map +1 -0
  13. package/dist/esm/src/core/dwn-constant.js +10 -0
  14. package/dist/esm/src/core/dwn-constant.js.map +1 -0
  15. package/dist/esm/src/core/dwn-error.js +169 -0
  16. package/dist/esm/src/core/dwn-error.js.map +1 -0
  17. package/dist/esm/src/core/grant-authorization.js +97 -0
  18. package/dist/esm/src/core/grant-authorization.js.map +1 -0
  19. package/dist/esm/src/core/message-reply.js +5 -0
  20. package/dist/esm/src/core/message-reply.js.map +1 -0
  21. package/dist/esm/src/core/message.js +233 -0
  22. package/dist/esm/src/core/message.js.map +1 -0
  23. package/dist/esm/src/core/messages-grant-authorization.js +101 -0
  24. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -0
  25. package/dist/esm/src/core/protocol-authorization.js +608 -0
  26. package/dist/esm/src/core/protocol-authorization.js.map +1 -0
  27. package/dist/esm/src/core/protocols-grant-authorization.js +66 -0
  28. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -0
  29. package/dist/esm/src/core/records-grant-authorization.js +132 -0
  30. package/dist/esm/src/core/records-grant-authorization.js.map +1 -0
  31. package/dist/esm/src/core/resumable-task-manager.js +109 -0
  32. package/dist/esm/src/core/resumable-task-manager.js.map +1 -0
  33. package/dist/esm/src/core/tenant-gate.js +20 -0
  34. package/dist/esm/src/core/tenant-gate.js.map +1 -0
  35. package/dist/esm/src/dwn.js +164 -0
  36. package/dist/esm/src/dwn.js.map +1 -0
  37. package/dist/esm/src/enums/dwn-interface-method.js +16 -0
  38. package/dist/esm/src/enums/dwn-interface-method.js.map +1 -0
  39. package/dist/esm/src/event-log/event-emitter-stream.js +60 -0
  40. package/dist/esm/src/event-log/event-emitter-stream.js.map +1 -0
  41. package/dist/esm/src/event-log/event-log-level.js +63 -0
  42. package/dist/esm/src/event-log/event-log-level.js.map +1 -0
  43. package/dist/esm/src/handlers/messages-query.js +71 -0
  44. package/dist/esm/src/handlers/messages-query.js.map +1 -0
  45. package/dist/esm/src/handlers/messages-read.js +102 -0
  46. package/dist/esm/src/handlers/messages-read.js.map +1 -0
  47. package/dist/esm/src/handlers/messages-subscribe.js +81 -0
  48. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -0
  49. package/dist/esm/src/handlers/protocols-configure.js +133 -0
  50. package/dist/esm/src/handlers/protocols-configure.js.map +1 -0
  51. package/dist/esm/src/handlers/protocols-query.js +73 -0
  52. package/dist/esm/src/handlers/protocols-query.js.map +1 -0
  53. package/dist/esm/src/handlers/records-delete.js +107 -0
  54. package/dist/esm/src/handlers/records-delete.js.map +1 -0
  55. package/dist/esm/src/handlers/records-query.js +210 -0
  56. package/dist/esm/src/handlers/records-query.js.map +1 -0
  57. package/dist/esm/src/handlers/records-read.js +169 -0
  58. package/dist/esm/src/handlers/records-read.js.map +1 -0
  59. package/dist/esm/src/handlers/records-subscribe.js +172 -0
  60. package/dist/esm/src/handlers/records-subscribe.js.map +1 -0
  61. package/dist/esm/src/handlers/records-write.js +344 -0
  62. package/dist/esm/src/handlers/records-write.js.map +1 -0
  63. package/dist/esm/src/index.js +49 -0
  64. package/dist/esm/src/index.js.map +1 -0
  65. package/dist/esm/src/interfaces/messages-query.js +53 -0
  66. package/dist/esm/src/interfaces/messages-query.js.map +1 -0
  67. package/dist/esm/src/interfaces/messages-read.js +61 -0
  68. package/dist/esm/src/interfaces/messages-read.js.map +1 -0
  69. package/dist/esm/src/interfaces/messages-subscribe.js +58 -0
  70. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -0
  71. package/dist/esm/src/interfaces/protocols-configure.js +271 -0
  72. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -0
  73. package/dist/esm/src/interfaces/protocols-query.js +84 -0
  74. package/dist/esm/src/interfaces/protocols-query.js.map +1 -0
  75. package/dist/esm/src/interfaces/records-delete.js +89 -0
  76. package/dist/esm/src/interfaces/records-delete.js.map +1 -0
  77. package/dist/esm/src/interfaces/records-query.js +104 -0
  78. package/dist/esm/src/interfaces/records-query.js.map +1 -0
  79. package/dist/esm/src/interfaces/records-read.js +84 -0
  80. package/dist/esm/src/interfaces/records-read.js.map +1 -0
  81. package/dist/esm/src/interfaces/records-subscribe.js +91 -0
  82. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -0
  83. package/dist/esm/src/interfaces/records-write.js +795 -0
  84. package/dist/esm/src/interfaces/records-write.js.map +1 -0
  85. package/dist/esm/src/jose/algorithms/signing/ed25519.js +51 -0
  86. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -0
  87. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js +20 -0
  88. package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -0
  89. package/dist/esm/src/jose/jws/general/builder.js +47 -0
  90. package/dist/esm/src/jose/jws/general/builder.js.map +1 -0
  91. package/dist/esm/src/jose/jws/general/verifier.js +97 -0
  92. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -0
  93. package/dist/esm/src/protocols/permission-grant.js +39 -0
  94. package/dist/esm/src/protocols/permission-grant.js.map +1 -0
  95. package/dist/esm/src/protocols/permission-request.js +35 -0
  96. package/dist/esm/src/protocols/permission-request.js.map +1 -0
  97. package/dist/esm/src/protocols/permissions.js +357 -0
  98. package/dist/esm/src/protocols/permissions.js.map +1 -0
  99. package/dist/esm/src/schema-validator.js +37 -0
  100. package/dist/esm/src/schema-validator.js.map +1 -0
  101. package/dist/esm/src/store/blockstore-level.js +187 -0
  102. package/dist/esm/src/store/blockstore-level.js.map +1 -0
  103. package/dist/esm/src/store/blockstore-mock.js +168 -0
  104. package/dist/esm/src/store/blockstore-mock.js.map +1 -0
  105. package/dist/esm/src/store/data-store-level.js +136 -0
  106. package/dist/esm/src/store/data-store-level.js.map +1 -0
  107. package/dist/esm/src/store/index-level.js +660 -0
  108. package/dist/esm/src/store/index-level.js.map +1 -0
  109. package/dist/esm/src/store/level-wrapper.js +305 -0
  110. package/dist/esm/src/store/level-wrapper.js.map +1 -0
  111. package/dist/esm/src/store/message-store-level.js +159 -0
  112. package/dist/esm/src/store/message-store-level.js.map +1 -0
  113. package/dist/esm/src/store/resumable-task-store-level.js +131 -0
  114. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -0
  115. package/dist/esm/src/store/storage-controller.js +184 -0
  116. package/dist/esm/src/store/storage-controller.js.map +1 -0
  117. package/dist/esm/src/types/cache.js +2 -0
  118. package/dist/esm/src/types/cache.js.map +1 -0
  119. package/dist/esm/src/types/data-store.js +2 -0
  120. package/dist/esm/src/types/data-store.js.map +1 -0
  121. package/dist/esm/src/types/event-log.js +2 -0
  122. package/dist/esm/src/types/event-log.js.map +1 -0
  123. package/dist/esm/src/types/jose-types.js +2 -0
  124. package/dist/esm/src/types/jose-types.js.map +1 -0
  125. package/dist/esm/src/types/jws-types.js +2 -0
  126. package/dist/esm/src/types/jws-types.js.map +1 -0
  127. package/dist/esm/src/types/message-interface.js +2 -0
  128. package/dist/esm/src/types/message-interface.js.map +1 -0
  129. package/dist/esm/src/types/message-store.js +2 -0
  130. package/dist/esm/src/types/message-store.js.map +1 -0
  131. package/dist/esm/src/types/message-types.js +3 -0
  132. package/dist/esm/src/types/message-types.js.map +1 -0
  133. package/dist/esm/src/types/messages-types.js +2 -0
  134. package/dist/esm/src/types/messages-types.js.map +1 -0
  135. package/dist/esm/src/types/method-handler.js +2 -0
  136. package/dist/esm/src/types/method-handler.js.map +1 -0
  137. package/dist/esm/src/types/permission-types.js +6 -0
  138. package/dist/esm/src/types/permission-types.js.map +1 -0
  139. package/dist/esm/src/types/protocols-types.js +20 -0
  140. package/dist/esm/src/types/protocols-types.js.map +1 -0
  141. package/dist/esm/src/types/query-types.js +6 -0
  142. package/dist/esm/src/types/query-types.js.map +1 -0
  143. package/dist/esm/src/types/records-types.js +8 -0
  144. package/dist/esm/src/types/records-types.js.map +1 -0
  145. package/dist/esm/src/types/resumable-task-store.js +2 -0
  146. package/dist/esm/src/types/resumable-task-store.js.map +1 -0
  147. package/dist/esm/src/types/signer.js +2 -0
  148. package/dist/esm/src/types/signer.js.map +1 -0
  149. package/dist/esm/src/types/subscriptions.js +2 -0
  150. package/dist/esm/src/types/subscriptions.js.map +1 -0
  151. package/dist/esm/src/utils/abort.js +40 -0
  152. package/dist/esm/src/utils/abort.js.map +1 -0
  153. package/dist/esm/src/utils/array.js +72 -0
  154. package/dist/esm/src/utils/array.js.map +1 -0
  155. package/dist/esm/src/utils/cid.js +130 -0
  156. package/dist/esm/src/utils/cid.js.map +1 -0
  157. package/dist/esm/src/utils/data-stream.js +100 -0
  158. package/dist/esm/src/utils/data-stream.js.map +1 -0
  159. package/dist/esm/src/utils/encoder.js +45 -0
  160. package/dist/esm/src/utils/encoder.js.map +1 -0
  161. package/dist/esm/src/utils/encryption.js +128 -0
  162. package/dist/esm/src/utils/encryption.js.map +1 -0
  163. package/dist/esm/src/utils/filter.js +229 -0
  164. package/dist/esm/src/utils/filter.js.map +1 -0
  165. package/dist/esm/src/utils/hd-key.js +114 -0
  166. package/dist/esm/src/utils/hd-key.js.map +1 -0
  167. package/dist/esm/src/utils/jws.js +89 -0
  168. package/dist/esm/src/utils/jws.js.map +1 -0
  169. package/dist/esm/src/utils/memory-cache.js +41 -0
  170. package/dist/esm/src/utils/memory-cache.js.map +1 -0
  171. package/dist/esm/src/utils/messages.js +84 -0
  172. package/dist/esm/src/utils/messages.js.map +1 -0
  173. package/dist/esm/src/utils/object.js +40 -0
  174. package/dist/esm/src/utils/object.js.map +1 -0
  175. package/dist/esm/src/utils/private-key-signer.js +43 -0
  176. package/dist/esm/src/utils/private-key-signer.js.map +1 -0
  177. package/dist/esm/src/utils/protocols.js +51 -0
  178. package/dist/esm/src/utils/protocols.js.map +1 -0
  179. package/dist/esm/src/utils/records.js +454 -0
  180. package/dist/esm/src/utils/records.js.map +1 -0
  181. package/dist/esm/src/utils/secp256k1.js +166 -0
  182. package/dist/esm/src/utils/secp256k1.js.map +1 -0
  183. package/dist/esm/src/utils/secp256r1.js +120 -0
  184. package/dist/esm/src/utils/secp256r1.js.map +1 -0
  185. package/dist/esm/src/utils/string.js +16 -0
  186. package/dist/esm/src/utils/string.js.map +1 -0
  187. package/dist/esm/src/utils/time.js +85 -0
  188. package/dist/esm/src/utils/time.js.map +1 -0
  189. package/dist/esm/src/utils/url.js +62 -0
  190. package/dist/esm/src/utils/url.js.map +1 -0
  191. package/dist/esm/tests/core/auth.spec.js +22 -0
  192. package/dist/esm/tests/core/auth.spec.js.map +1 -0
  193. package/dist/esm/tests/core/message-reply.spec.js +16 -0
  194. package/dist/esm/tests/core/message-reply.spec.js.map +1 -0
  195. package/dist/esm/tests/core/message.spec.js +146 -0
  196. package/dist/esm/tests/core/message.spec.js.map +1 -0
  197. package/dist/esm/tests/core/protocol-authorization.spec.js +48 -0
  198. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -0
  199. package/dist/esm/tests/dwn.spec.js +166 -0
  200. package/dist/esm/tests/dwn.spec.js.map +1 -0
  201. package/dist/esm/tests/event-log/event-emitter-stream.spec.js +78 -0
  202. package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +1 -0
  203. package/dist/esm/tests/event-log/event-log-level.spec.js +44 -0
  204. package/dist/esm/tests/event-log/event-log-level.spec.js.map +1 -0
  205. package/dist/esm/tests/event-log/event-log.spec.js +236 -0
  206. package/dist/esm/tests/event-log/event-log.spec.js.map +1 -0
  207. package/dist/esm/tests/event-log/event-stream.spec.js +125 -0
  208. package/dist/esm/tests/event-log/event-stream.spec.js.map +1 -0
  209. package/dist/esm/tests/features/author-delegated-grant.spec.js +1273 -0
  210. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -0
  211. package/dist/esm/tests/features/owner-delegated-grant.spec.js +584 -0
  212. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -0
  213. package/dist/esm/tests/features/owner-signature.spec.js +192 -0
  214. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -0
  215. package/dist/esm/tests/features/permissions.spec.js +815 -0
  216. package/dist/esm/tests/features/permissions.spec.js.map +1 -0
  217. package/dist/esm/tests/features/protocol-create-action.spec.js +248 -0
  218. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -0
  219. package/dist/esm/tests/features/protocol-delete-action.spec.js +492 -0
  220. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -0
  221. package/dist/esm/tests/features/protocol-update-action.spec.js +572 -0
  222. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -0
  223. package/dist/esm/tests/features/records-prune.spec.js +812 -0
  224. package/dist/esm/tests/features/records-prune.spec.js.map +1 -0
  225. package/dist/esm/tests/features/records-tags.spec.js +2516 -0
  226. package/dist/esm/tests/features/records-tags.spec.js.map +1 -0
  227. package/dist/esm/tests/features/resumable-tasks.spec.js +349 -0
  228. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -0
  229. package/dist/esm/tests/handlers/messages-query.spec.js +349 -0
  230. package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -0
  231. package/dist/esm/tests/handlers/messages-read.spec.js +647 -0
  232. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -0
  233. package/dist/esm/tests/handlers/messages-subscribe.spec.js +432 -0
  234. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -0
  235. package/dist/esm/tests/handlers/protocols-configure.spec.js +608 -0
  236. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -0
  237. package/dist/esm/tests/handlers/protocols-query.spec.js +454 -0
  238. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -0
  239. package/dist/esm/tests/handlers/records-delete.spec.js +662 -0
  240. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -0
  241. package/dist/esm/tests/handlers/records-query.spec.js +2695 -0
  242. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -0
  243. package/dist/esm/tests/handlers/records-read.spec.js +1724 -0
  244. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -0
  245. package/dist/esm/tests/handlers/records-subscribe.spec.js +684 -0
  246. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -0
  247. package/dist/esm/tests/handlers/records-write.spec.js +3637 -0
  248. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -0
  249. package/dist/esm/tests/interfaces/messages-get.spec.js +78 -0
  250. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -0
  251. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +30 -0
  252. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -0
  253. package/dist/esm/tests/interfaces/messagess-query.spec.js +127 -0
  254. package/dist/esm/tests/interfaces/messagess-query.spec.js.map +1 -0
  255. package/dist/esm/tests/interfaces/protocols-configure.spec.js +489 -0
  256. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -0
  257. package/dist/esm/tests/interfaces/protocols-query.spec.js +46 -0
  258. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -0
  259. package/dist/esm/tests/interfaces/records-delete.spec.js +39 -0
  260. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -0
  261. package/dist/esm/tests/interfaces/records-query.spec.js +85 -0
  262. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -0
  263. package/dist/esm/tests/interfaces/records-read.spec.js +62 -0
  264. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -0
  265. package/dist/esm/tests/interfaces/records-subscribe.spec.js +72 -0
  266. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -0
  267. package/dist/esm/tests/interfaces/records-write.spec.js +423 -0
  268. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -0
  269. package/dist/esm/tests/jose/jws/general.spec.js +243 -0
  270. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -0
  271. package/dist/esm/tests/protocols/permission-request.spec.js +40 -0
  272. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -0
  273. package/dist/esm/tests/protocols/permissions.spec.js +123 -0
  274. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -0
  275. package/dist/esm/tests/scenarios/aggregator.spec.js +670 -0
  276. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -0
  277. package/dist/esm/tests/scenarios/deleted-record.spec.js +102 -0
  278. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -0
  279. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +220 -0
  280. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -0
  281. package/dist/esm/tests/scenarios/messages-query.spec.js +395 -0
  282. package/dist/esm/tests/scenarios/messages-query.spec.js.map +1 -0
  283. package/dist/esm/tests/scenarios/nested-roles.spec.js +300 -0
  284. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -0
  285. package/dist/esm/tests/scenarios/subscriptions.spec.js +886 -0
  286. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -0
  287. package/dist/esm/tests/store/blockstore-mock.spec.js +192 -0
  288. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -0
  289. package/dist/esm/tests/store/data-store-level.spec.js +146 -0
  290. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -0
  291. package/dist/esm/tests/store/index-level.spec.js +1208 -0
  292. package/dist/esm/tests/store/index-level.spec.js.map +1 -0
  293. package/dist/esm/tests/store/message-store-level.spec.js +48 -0
  294. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -0
  295. package/dist/esm/tests/store/message-store.spec.js +404 -0
  296. package/dist/esm/tests/store/message-store.spec.js.map +1 -0
  297. package/dist/esm/tests/store-dependent-tests.spec.js +5 -0
  298. package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -0
  299. package/dist/esm/tests/test-event-stream.js +25 -0
  300. package/dist/esm/tests/test-event-stream.js.map +1 -0
  301. package/dist/esm/tests/test-stores.js +45 -0
  302. package/dist/esm/tests/test-stores.js.map +1 -0
  303. package/dist/esm/tests/test-suite.js +88 -0
  304. package/dist/esm/tests/test-suite.js.map +1 -0
  305. package/dist/esm/tests/utils/cid.spec.js +80 -0
  306. package/dist/esm/tests/utils/cid.spec.js.map +1 -0
  307. package/dist/esm/tests/utils/data-stream.spec.js +27 -0
  308. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -0
  309. package/dist/esm/tests/utils/encryption.spec.js +148 -0
  310. package/dist/esm/tests/utils/encryption.spec.js.map +1 -0
  311. package/dist/esm/tests/utils/filters.spec.js +295 -0
  312. package/dist/esm/tests/utils/filters.spec.js.map +1 -0
  313. package/dist/esm/tests/utils/hd-key.spec.js +35 -0
  314. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -0
  315. package/dist/esm/tests/utils/jws.spec.js +8 -0
  316. package/dist/esm/tests/utils/jws.spec.js.map +1 -0
  317. package/dist/esm/tests/utils/memory-cache.spec.js +35 -0
  318. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -0
  319. package/dist/esm/tests/utils/messages.spec.js +101 -0
  320. package/dist/esm/tests/utils/messages.spec.js.map +1 -0
  321. package/dist/esm/tests/utils/object.spec.js +36 -0
  322. package/dist/esm/tests/utils/object.spec.js.map +1 -0
  323. package/dist/esm/tests/utils/poller.js +49 -0
  324. package/dist/esm/tests/utils/poller.js.map +1 -0
  325. package/dist/esm/tests/utils/private-key-signer.spec.js +44 -0
  326. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -0
  327. package/dist/esm/tests/utils/records.spec.js +53 -0
  328. package/dist/esm/tests/utils/records.spec.js.map +1 -0
  329. package/dist/esm/tests/utils/secp256k1.spec.js +50 -0
  330. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -0
  331. package/dist/esm/tests/utils/secp256r1.spec.js +56 -0
  332. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -0
  333. package/dist/esm/tests/utils/test-data-generator.js +643 -0
  334. package/dist/esm/tests/utils/test-data-generator.js.map +1 -0
  335. package/dist/esm/tests/utils/test-stub-generator.js +39 -0
  336. package/dist/esm/tests/utils/test-stub-generator.js.map +1 -0
  337. package/dist/esm/tests/utils/time.spec.js +64 -0
  338. package/dist/esm/tests/utils/time.spec.js.map +1 -0
  339. package/dist/esm/tests/utils/url.spec.js +43 -0
  340. package/dist/esm/tests/utils/url.spec.js.map +1 -0
  341. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +33 -0
  342. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -0
  343. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +50 -0
  344. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -0
  345. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +36 -0
  346. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -0
  347. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +82 -0
  348. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -0
  349. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +75 -0
  350. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -0
  351. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +148 -0
  352. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -0
  353. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +421 -0
  354. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -0
  355. package/dist/esm/tests/vectors/protocol-definitions/anyone-collaborate.json +21 -0
  356. package/dist/esm/tests/vectors/protocol-definitions/author-can.json +33 -0
  357. package/dist/esm/tests/vectors/protocol-definitions/chat.json +70 -0
  358. package/dist/esm/tests/vectors/protocol-definitions/credential-issuance.json +41 -0
  359. package/dist/esm/tests/vectors/protocol-definitions/dex.json +58 -0
  360. package/dist/esm/tests/vectors/protocol-definitions/email.json +62 -0
  361. package/dist/esm/tests/vectors/protocol-definitions/free-for-all.json +45 -0
  362. package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +48 -0
  363. package/dist/esm/tests/vectors/protocol-definitions/message.json +37 -0
  364. package/dist/esm/tests/vectors/protocol-definitions/minimal.json +10 -0
  365. package/dist/esm/tests/vectors/protocol-definitions/nested.json +31 -0
  366. package/dist/esm/tests/vectors/protocol-definitions/private-protocol.json +15 -0
  367. package/dist/esm/tests/vectors/protocol-definitions/recipient-can.json +33 -0
  368. package/dist/esm/tests/vectors/protocol-definitions/slack.json +242 -0
  369. package/dist/esm/tests/vectors/protocol-definitions/social-media.json +106 -0
  370. package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +70 -0
  371. package/dist/types/generated/precompiled-validators.d.ts +597 -0
  372. package/dist/types/generated/precompiled-validators.d.ts.map +1 -0
  373. package/dist/types/src/core/abstract-message.d.ts +25 -0
  374. package/dist/types/src/core/abstract-message.d.ts.map +1 -0
  375. package/dist/types/src/core/auth.d.ts +9 -0
  376. package/dist/types/src/core/auth.d.ts.map +1 -0
  377. package/dist/types/src/core/dwn-constant.d.ts +10 -0
  378. package/dist/types/src/core/dwn-constant.d.ts.map +1 -0
  379. package/dist/types/src/core/dwn-error.d.ts +164 -0
  380. package/dist/types/src/core/dwn-error.d.ts.map +1 -0
  381. package/dist/types/src/core/grant-authorization.d.ts +43 -0
  382. package/dist/types/src/core/grant-authorization.d.ts.map +1 -0
  383. package/dist/types/src/core/message-reply.d.ts +32 -0
  384. package/dist/types/src/core/message-reply.d.ts.map +1 -0
  385. package/dist/types/src/core/message.d.ts +94 -0
  386. package/dist/types/src/core/message.d.ts.map +1 -0
  387. package/dist/types/src/core/messages-grant-authorization.d.ts +34 -0
  388. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -0
  389. package/dist/types/src/core/protocol-authorization.d.ts +103 -0
  390. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -0
  391. package/dist/types/src/core/protocols-grant-authorization.d.ts +31 -0
  392. package/dist/types/src/core/protocols-grant-authorization.d.ts.map +1 -0
  393. package/dist/types/src/core/records-grant-authorization.d.ts +60 -0
  394. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -0
  395. package/dist/types/src/core/resumable-task-manager.d.ts +43 -0
  396. package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -0
  397. package/dist/types/src/core/tenant-gate.d.ts +29 -0
  398. package/dist/types/src/core/tenant-gate.d.ts.map +1 -0
  399. package/dist/types/src/dwn.d.ts +85 -0
  400. package/dist/types/src/dwn.d.ts.map +1 -0
  401. package/dist/types/src/enums/dwn-interface-method.d.ts +14 -0
  402. package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -0
  403. package/dist/types/src/event-log/event-emitter-stream.d.ts +23 -0
  404. package/dist/types/src/event-log/event-emitter-stream.d.ts.map +1 -0
  405. package/dist/types/src/event-log/event-log-level.d.ts +35 -0
  406. package/dist/types/src/event-log/event-log-level.d.ts.map +1 -0
  407. package/dist/types/src/handlers/messages-query.d.ts +17 -0
  408. package/dist/types/src/handlers/messages-query.d.ts.map +1 -0
  409. package/dist/types/src/handlers/messages-read.d.ts +22 -0
  410. package/dist/types/src/handlers/messages-read.d.ts.map +1 -0
  411. package/dist/types/src/handlers/messages-subscribe.d.ts +18 -0
  412. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -0
  413. package/dist/types/src/handlers/protocols-configure.d.ts +24 -0
  414. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -0
  415. package/dist/types/src/handlers/protocols-query.d.ts +20 -0
  416. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -0
  417. package/dist/types/src/handlers/records-delete.d.ts +23 -0
  418. package/dist/types/src/handlers/records-delete.d.ts.map +1 -0
  419. package/dist/types/src/handlers/records-query.d.ts +70 -0
  420. package/dist/types/src/handlers/records-query.d.ts.map +1 -0
  421. package/dist/types/src/handlers/records-read.d.ts +20 -0
  422. package/dist/types/src/handlers/records-read.d.ts.map +1 -0
  423. package/dist/types/src/handlers/records-subscribe.d.ts +62 -0
  424. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -0
  425. package/dist/types/src/handlers/records-write.d.ts +51 -0
  426. package/dist/types/src/handlers/records-write.d.ts.map +1 -0
  427. package/dist/types/src/index.d.ts +63 -0
  428. package/dist/types/src/index.d.ts.map +1 -0
  429. package/dist/types/src/interfaces/messages-query.d.ts +16 -0
  430. package/dist/types/src/interfaces/messages-query.d.ts.map +1 -0
  431. package/dist/types/src/interfaces/messages-read.d.ts +20 -0
  432. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -0
  433. package/dist/types/src/interfaces/messages-subscribe.d.ts +20 -0
  434. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -0
  435. package/dist/types/src/interfaces/protocols-configure.d.ts +40 -0
  436. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -0
  437. package/dist/types/src/interfaces/protocols-query.d.ts +17 -0
  438. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -0
  439. package/dist/types/src/interfaces/records-delete.d.ts +34 -0
  440. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -0
  441. package/dist/types/src/interfaces/records-query.d.ts +31 -0
  442. package/dist/types/src/interfaces/records-query.d.ts.map +1 -0
  443. package/dist/types/src/interfaces/records-read.d.ts +36 -0
  444. package/dist/types/src/interfaces/records-read.d.ts.map +1 -0
  445. package/dist/types/src/interfaces/records-subscribe.d.ts +27 -0
  446. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -0
  447. package/dist/types/src/interfaces/records-write.d.ts +309 -0
  448. package/dist/types/src/interfaces/records-write.d.ts.map +1 -0
  449. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts +3 -0
  450. package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -0
  451. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +3 -0
  452. package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -0
  453. package/dist/types/src/jose/jws/general/builder.d.ts +10 -0
  454. package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -0
  455. package/dist/types/src/jose/jws/general/verifier.d.ts +32 -0
  456. package/dist/types/src/jose/jws/general/verifier.d.ts.map +1 -0
  457. package/dist/types/src/protocols/permission-grant.d.ts +50 -0
  458. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -0
  459. package/dist/types/src/protocols/permission-request.d.ts +35 -0
  460. package/dist/types/src/protocols/permission-request.d.ts.map +1 -0
  461. package/dist/types/src/protocols/permissions.d.ts +150 -0
  462. package/dist/types/src/protocols/permissions.d.ts.map +1 -0
  463. package/dist/types/src/schema-validator.d.ts +8 -0
  464. package/dist/types/src/schema-validator.d.ts.map +1 -0
  465. package/dist/types/src/store/blockstore-level.d.ts +34 -0
  466. package/dist/types/src/store/blockstore-level.d.ts.map +1 -0
  467. package/dist/types/src/store/blockstore-mock.d.ts +27 -0
  468. package/dist/types/src/store/blockstore-mock.d.ts.map +1 -0
  469. package/dist/types/src/store/data-store-level.d.ts +34 -0
  470. package/dist/types/src/store/data-store-level.d.ts.map +1 -0
  471. package/dist/types/src/store/index-level.d.ts +171 -0
  472. package/dist/types/src/store/index-level.d.ts.map +1 -0
  473. package/dist/types/src/store/level-wrapper.d.ts +48 -0
  474. package/dist/types/src/store/level-wrapper.d.ts.map +1 -0
  475. package/dist/types/src/store/message-store-level.d.ts +46 -0
  476. package/dist/types/src/store/message-store-level.d.ts.map +1 -0
  477. package/dist/types/src/store/resumable-task-store-level.d.ts +28 -0
  478. package/dist/types/src/store/resumable-task-store-level.d.ts.map +1 -0
  479. package/dist/types/src/store/storage-controller.d.ts +46 -0
  480. package/dist/types/src/store/storage-controller.d.ts.map +1 -0
  481. package/dist/types/src/types/cache.d.ts +16 -0
  482. package/dist/types/src/types/cache.d.ts.map +1 -0
  483. package/dist/types/src/types/data-store.d.ts +57 -0
  484. package/dist/types/src/types/data-store.d.ts.map +1 -0
  485. package/dist/types/src/types/event-log.d.ts +52 -0
  486. package/dist/types/src/types/event-log.d.ts.map +1 -0
  487. package/dist/types/src/types/jose-types.d.ts +75 -0
  488. package/dist/types/src/types/jose-types.d.ts.map +1 -0
  489. package/dist/types/src/types/jws-types.d.ts +27 -0
  490. package/dist/types/src/types/jws-types.d.ts.map +1 -0
  491. package/dist/types/src/types/message-interface.d.ts +27 -0
  492. package/dist/types/src/types/message-interface.d.ts.map +1 -0
  493. package/dist/types/src/types/message-store.d.ts +42 -0
  494. package/dist/types/src/types/message-store.d.ts.map +1 -0
  495. package/dist/types/src/types/message-types.d.ts +116 -0
  496. package/dist/types/src/types/message-types.d.ts.map +1 -0
  497. package/dist/types/src/types/messages-types.d.ts +65 -0
  498. package/dist/types/src/types/messages-types.d.ts.map +1 -0
  499. package/dist/types/src/types/method-handler.d.ts +19 -0
  500. package/dist/types/src/types/method-handler.d.ts.map +1 -0
  501. package/dist/types/src/types/permission-types.d.ts +93 -0
  502. package/dist/types/src/types/permission-types.d.ts.map +1 -0
  503. package/dist/types/src/types/protocols-types.d.ts +154 -0
  504. package/dist/types/src/types/protocols-types.d.ts.map +1 -0
  505. package/dist/types/src/types/query-types.d.ts +66 -0
  506. package/dist/types/src/types/query-types.d.ts.map +1 -0
  507. package/dist/types/src/types/records-types.d.ts +230 -0
  508. package/dist/types/src/types/records-types.d.ts.map +1 -0
  509. package/dist/types/src/types/resumable-task-store.d.ts +89 -0
  510. package/dist/types/src/types/resumable-task-store.d.ts.map +1 -0
  511. package/dist/types/src/types/signer.d.ts +26 -0
  512. package/dist/types/src/types/signer.d.ts.map +1 -0
  513. package/dist/types/src/types/subscriptions.d.ts +30 -0
  514. package/dist/types/src/types/subscriptions.d.ts.map +1 -0
  515. package/dist/types/src/utils/abort.d.ts +5 -0
  516. package/dist/types/src/utils/abort.d.ts.map +1 -0
  517. package/dist/types/src/utils/array.d.ts +18 -0
  518. package/dist/types/src/utils/array.d.ts.map +1 -0
  519. package/dist/types/src/utils/cid.d.ts +30 -0
  520. package/dist/types/src/utils/cid.d.ts.map +1 -0
  521. package/dist/types/src/utils/data-stream.d.ts +31 -0
  522. package/dist/types/src/utils/data-stream.d.ts.map +1 -0
  523. package/dist/types/src/utils/encoder.d.ts +14 -0
  524. package/dist/types/src/utils/encoder.d.ts.map +1 -0
  525. package/dist/types/src/utils/encryption.d.ts +44 -0
  526. package/dist/types/src/utils/encryption.d.ts.map +1 -0
  527. package/dist/types/src/utils/filter.d.ts +60 -0
  528. package/dist/types/src/utils/filter.d.ts.map +1 -0
  529. package/dist/types/src/utils/hd-key.d.ts +54 -0
  530. package/dist/types/src/utils/hd-key.d.ts.map +1 -0
  531. package/dist/types/src/utils/jws.d.ts +39 -0
  532. package/dist/types/src/utils/jws.d.ts.map +1 -0
  533. package/dist/types/src/utils/memory-cache.d.ts +15 -0
  534. package/dist/types/src/utils/memory-cache.d.ts.map +1 -0
  535. package/dist/types/src/utils/messages.d.ts +27 -0
  536. package/dist/types/src/utils/messages.d.ts.map +1 -0
  537. package/dist/types/src/utils/object.d.ts +13 -0
  538. package/dist/types/src/utils/object.d.ts.map +1 -0
  539. package/dist/types/src/utils/private-key-signer.d.ts +34 -0
  540. package/dist/types/src/utils/private-key-signer.d.ts.map +1 -0
  541. package/dist/types/src/utils/protocols.d.ts +14 -0
  542. package/dist/types/src/utils/protocols.d.ts.map +1 -0
  543. package/dist/types/src/utils/records.d.ts +122 -0
  544. package/dist/types/src/utils/records.d.ts.map +1 -0
  545. package/dist/types/src/utils/secp256k1.d.ts +59 -0
  546. package/dist/types/src/utils/secp256k1.d.ts.map +1 -0
  547. package/dist/types/src/utils/secp256r1.d.ts +39 -0
  548. package/dist/types/src/utils/secp256r1.d.ts.map +1 -0
  549. package/dist/types/src/utils/string.d.ts +6 -0
  550. package/dist/types/src/utils/string.d.ts.map +1 -0
  551. package/dist/types/src/utils/time.d.ts +50 -0
  552. package/dist/types/src/utils/time.d.ts.map +1 -0
  553. package/dist/types/src/utils/url.d.ts +5 -0
  554. package/dist/types/src/utils/url.d.ts.map +1 -0
  555. package/dist/types/tests/core/auth.spec.d.ts +2 -0
  556. package/dist/types/tests/core/auth.spec.d.ts.map +1 -0
  557. package/dist/types/tests/core/message-reply.spec.d.ts +2 -0
  558. package/dist/types/tests/core/message-reply.spec.d.ts.map +1 -0
  559. package/dist/types/tests/core/message.spec.d.ts +2 -0
  560. package/dist/types/tests/core/message.spec.d.ts.map +1 -0
  561. package/dist/types/tests/core/protocol-authorization.spec.d.ts +2 -0
  562. package/dist/types/tests/core/protocol-authorization.spec.d.ts.map +1 -0
  563. package/dist/types/tests/dwn.spec.d.ts +2 -0
  564. package/dist/types/tests/dwn.spec.d.ts.map +1 -0
  565. package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts +2 -0
  566. package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +1 -0
  567. package/dist/types/tests/event-log/event-log-level.spec.d.ts +2 -0
  568. package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +1 -0
  569. package/dist/types/tests/event-log/event-log.spec.d.ts +2 -0
  570. package/dist/types/tests/event-log/event-log.spec.d.ts.map +1 -0
  571. package/dist/types/tests/event-log/event-stream.spec.d.ts +2 -0
  572. package/dist/types/tests/event-log/event-stream.spec.d.ts.map +1 -0
  573. package/dist/types/tests/features/author-delegated-grant.spec.d.ts +2 -0
  574. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -0
  575. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts +2 -0
  576. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -0
  577. package/dist/types/tests/features/owner-signature.spec.d.ts +2 -0
  578. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -0
  579. package/dist/types/tests/features/permissions.spec.d.ts +2 -0
  580. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -0
  581. package/dist/types/tests/features/protocol-create-action.spec.d.ts +2 -0
  582. package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -0
  583. package/dist/types/tests/features/protocol-delete-action.spec.d.ts +2 -0
  584. package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -0
  585. package/dist/types/tests/features/protocol-update-action.spec.d.ts +2 -0
  586. package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -0
  587. package/dist/types/tests/features/records-prune.spec.d.ts +2 -0
  588. package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -0
  589. package/dist/types/tests/features/records-tags.spec.d.ts +2 -0
  590. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -0
  591. package/dist/types/tests/features/resumable-tasks.spec.d.ts +2 -0
  592. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -0
  593. package/dist/types/tests/handlers/messages-query.spec.d.ts +2 -0
  594. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -0
  595. package/dist/types/tests/handlers/messages-read.spec.d.ts +2 -0
  596. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -0
  597. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts +2 -0
  598. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -0
  599. package/dist/types/tests/handlers/protocols-configure.spec.d.ts +2 -0
  600. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -0
  601. package/dist/types/tests/handlers/protocols-query.spec.d.ts +2 -0
  602. package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -0
  603. package/dist/types/tests/handlers/records-delete.spec.d.ts +2 -0
  604. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -0
  605. package/dist/types/tests/handlers/records-query.spec.d.ts +2 -0
  606. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -0
  607. package/dist/types/tests/handlers/records-read.spec.d.ts +2 -0
  608. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -0
  609. package/dist/types/tests/handlers/records-subscribe.spec.d.ts +2 -0
  610. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -0
  611. package/dist/types/tests/handlers/records-write.spec.d.ts +2 -0
  612. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -0
  613. package/dist/types/tests/interfaces/messages-get.spec.d.ts +2 -0
  614. package/dist/types/tests/interfaces/messages-get.spec.d.ts.map +1 -0
  615. package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts +2 -0
  616. package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts.map +1 -0
  617. package/dist/types/tests/interfaces/messagess-query.spec.d.ts +2 -0
  618. package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +1 -0
  619. package/dist/types/tests/interfaces/protocols-configure.spec.d.ts +2 -0
  620. package/dist/types/tests/interfaces/protocols-configure.spec.d.ts.map +1 -0
  621. package/dist/types/tests/interfaces/protocols-query.spec.d.ts +2 -0
  622. package/dist/types/tests/interfaces/protocols-query.spec.d.ts.map +1 -0
  623. package/dist/types/tests/interfaces/records-delete.spec.d.ts +2 -0
  624. package/dist/types/tests/interfaces/records-delete.spec.d.ts.map +1 -0
  625. package/dist/types/tests/interfaces/records-query.spec.d.ts +2 -0
  626. package/dist/types/tests/interfaces/records-query.spec.d.ts.map +1 -0
  627. package/dist/types/tests/interfaces/records-read.spec.d.ts +2 -0
  628. package/dist/types/tests/interfaces/records-read.spec.d.ts.map +1 -0
  629. package/dist/types/tests/interfaces/records-subscribe.spec.d.ts +2 -0
  630. package/dist/types/tests/interfaces/records-subscribe.spec.d.ts.map +1 -0
  631. package/dist/types/tests/interfaces/records-write.spec.d.ts +2 -0
  632. package/dist/types/tests/interfaces/records-write.spec.d.ts.map +1 -0
  633. package/dist/types/tests/jose/jws/general.spec.d.ts +2 -0
  634. package/dist/types/tests/jose/jws/general.spec.d.ts.map +1 -0
  635. package/dist/types/tests/protocols/permission-request.spec.d.ts +2 -0
  636. package/dist/types/tests/protocols/permission-request.spec.d.ts.map +1 -0
  637. package/dist/types/tests/protocols/permissions.spec.d.ts +2 -0
  638. package/dist/types/tests/protocols/permissions.spec.d.ts.map +1 -0
  639. package/dist/types/tests/scenarios/aggregator.spec.d.ts +2 -0
  640. package/dist/types/tests/scenarios/aggregator.spec.d.ts.map +1 -0
  641. package/dist/types/tests/scenarios/deleted-record.spec.d.ts +2 -0
  642. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -0
  643. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts +2 -0
  644. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -0
  645. package/dist/types/tests/scenarios/messages-query.spec.d.ts +2 -0
  646. package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +1 -0
  647. package/dist/types/tests/scenarios/nested-roles.spec.d.ts +2 -0
  648. package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -0
  649. package/dist/types/tests/scenarios/subscriptions.spec.d.ts +2 -0
  650. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -0
  651. package/dist/types/tests/store/blockstore-mock.spec.d.ts +2 -0
  652. package/dist/types/tests/store/blockstore-mock.spec.d.ts.map +1 -0
  653. package/dist/types/tests/store/data-store-level.spec.d.ts +2 -0
  654. package/dist/types/tests/store/data-store-level.spec.d.ts.map +1 -0
  655. package/dist/types/tests/store/index-level.spec.d.ts +2 -0
  656. package/dist/types/tests/store/index-level.spec.d.ts.map +1 -0
  657. package/dist/types/tests/store/message-store-level.spec.d.ts +2 -0
  658. package/dist/types/tests/store/message-store-level.spec.d.ts.map +1 -0
  659. package/dist/types/tests/store/message-store.spec.d.ts +2 -0
  660. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -0
  661. package/dist/types/tests/store-dependent-tests.spec.d.ts +2 -0
  662. package/dist/types/tests/store-dependent-tests.spec.d.ts.map +1 -0
  663. package/dist/types/tests/test-event-stream.d.ts +22 -0
  664. package/dist/types/tests/test-event-stream.d.ts.map +1 -0
  665. package/dist/types/tests/test-stores.d.ts +33 -0
  666. package/dist/types/tests/test-stores.d.ts.map +1 -0
  667. package/dist/types/tests/test-suite.d.ts +18 -0
  668. package/dist/types/tests/test-suite.d.ts.map +1 -0
  669. package/dist/types/tests/utils/cid.spec.d.ts +2 -0
  670. package/dist/types/tests/utils/cid.spec.d.ts.map +1 -0
  671. package/dist/types/tests/utils/data-stream.spec.d.ts +2 -0
  672. package/dist/types/tests/utils/data-stream.spec.d.ts.map +1 -0
  673. package/dist/types/tests/utils/encryption.spec.d.ts +2 -0
  674. package/dist/types/tests/utils/encryption.spec.d.ts.map +1 -0
  675. package/dist/types/tests/utils/filters.spec.d.ts +2 -0
  676. package/dist/types/tests/utils/filters.spec.d.ts.map +1 -0
  677. package/dist/types/tests/utils/hd-key.spec.d.ts +2 -0
  678. package/dist/types/tests/utils/hd-key.spec.d.ts.map +1 -0
  679. package/dist/types/tests/utils/jws.spec.d.ts +2 -0
  680. package/dist/types/tests/utils/jws.spec.d.ts.map +1 -0
  681. package/dist/types/tests/utils/memory-cache.spec.d.ts +2 -0
  682. package/dist/types/tests/utils/memory-cache.spec.d.ts.map +1 -0
  683. package/dist/types/tests/utils/messages.spec.d.ts +2 -0
  684. package/dist/types/tests/utils/messages.spec.d.ts.map +1 -0
  685. package/dist/types/tests/utils/object.spec.d.ts +2 -0
  686. package/dist/types/tests/utils/object.spec.d.ts.map +1 -0
  687. package/dist/types/tests/utils/poller.d.ts +21 -0
  688. package/dist/types/tests/utils/poller.d.ts.map +1 -0
  689. package/dist/types/tests/utils/private-key-signer.spec.d.ts +2 -0
  690. package/dist/types/tests/utils/private-key-signer.spec.d.ts.map +1 -0
  691. package/dist/types/tests/utils/records.spec.d.ts +2 -0
  692. package/dist/types/tests/utils/records.spec.d.ts.map +1 -0
  693. package/dist/types/tests/utils/secp256k1.spec.d.ts +2 -0
  694. package/dist/types/tests/utils/secp256k1.spec.d.ts.map +1 -0
  695. package/dist/types/tests/utils/secp256r1.spec.d.ts +2 -0
  696. package/dist/types/tests/utils/secp256r1.spec.d.ts.map +1 -0
  697. package/dist/types/tests/utils/test-data-generator.d.ts +342 -0
  698. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -0
  699. package/dist/types/tests/utils/test-stub-generator.d.ts +16 -0
  700. package/dist/types/tests/utils/test-stub-generator.d.ts.map +1 -0
  701. package/dist/types/tests/utils/time.spec.d.ts +2 -0
  702. package/dist/types/tests/utils/time.spec.d.ts.map +1 -0
  703. package/dist/types/tests/utils/url.spec.d.ts +2 -0
  704. package/dist/types/tests/utils/url.spec.d.ts.map +1 -0
  705. package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts +2 -0
  706. package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts.map +1 -0
  707. package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts +2 -0
  708. package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts.map +1 -0
  709. package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts +2 -0
  710. package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts.map +1 -0
  711. package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts +2 -0
  712. package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts.map +1 -0
  713. package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts +2 -0
  714. package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts.map +1 -0
  715. package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts +2 -0
  716. package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts.map +1 -0
  717. package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts +2 -0
  718. package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts.map +1 -0
  719. package/package.json +167 -0
  720. package/src/core/abstract-message.ts +62 -0
  721. package/src/core/auth.ts +36 -0
  722. package/src/core/dwn-constant.ts +9 -0
  723. package/src/core/dwn-error.ts +167 -0
  724. package/src/core/grant-authorization.ts +148 -0
  725. package/src/core/message-reply.ts +41 -0
  726. package/src/core/message.ts +259 -0
  727. package/src/core/messages-grant-authorization.ts +134 -0
  728. package/src/core/protocol-authorization.ts +903 -0
  729. package/src/core/protocols-grant-authorization.ts +88 -0
  730. package/src/core/records-grant-authorization.ts +197 -0
  731. package/src/core/resumable-task-manager.ts +114 -0
  732. package/src/core/tenant-gate.ts +33 -0
  733. package/src/dwn.ts +264 -0
  734. package/src/enums/dwn-interface-method.ts +14 -0
  735. package/src/event-log/event-emitter-stream.ts +69 -0
  736. package/src/event-log/event-log-level.ts +72 -0
  737. package/src/handlers/messages-query.ts +67 -0
  738. package/src/handlers/messages-read.ts +103 -0
  739. package/src/handlers/messages-subscribe.ts +89 -0
  740. package/src/handlers/protocols-configure.ts +137 -0
  741. package/src/handlers/protocols-query.ts +82 -0
  742. package/src/handlers/records-delete.ts +124 -0
  743. package/src/handlers/records-query.ts +262 -0
  744. package/src/handlers/records-read.ts +187 -0
  745. package/src/handlers/records-subscribe.ts +218 -0
  746. package/src/handlers/records-write.ts +404 -0
  747. package/src/index.ts +67 -0
  748. package/src/interfaces/messages-query.ts +60 -0
  749. package/src/interfaces/messages-read.ts +63 -0
  750. package/src/interfaces/messages-subscribe.ts +64 -0
  751. package/src/interfaces/protocols-configure.ts +340 -0
  752. package/src/interfaces/protocols-query.ts +96 -0
  753. package/src/interfaces/records-delete.ts +117 -0
  754. package/src/interfaces/records-query.ts +131 -0
  755. package/src/interfaces/records-read.ts +100 -0
  756. package/src/interfaces/records-subscribe.ts +104 -0
  757. package/src/interfaces/records-write.ts +1072 -0
  758. package/src/jose/algorithms/signing/ed25519.ts +58 -0
  759. package/src/jose/algorithms/signing/signature-algorithms.ts +22 -0
  760. package/src/jose/jws/general/builder.ts +48 -0
  761. package/src/jose/jws/general/verifier.ts +112 -0
  762. package/src/protocols/permission-grant.ts +86 -0
  763. package/src/protocols/permission-request.ts +63 -0
  764. package/src/protocols/permissions.ts +508 -0
  765. package/src/schema-validator.ts +46 -0
  766. package/src/store/blockstore-level.ts +113 -0
  767. package/src/store/blockstore-mock.ts +80 -0
  768. package/src/store/data-store-level.ts +120 -0
  769. package/src/store/index-level.ts +691 -0
  770. package/src/store/level-wrapper.ts +272 -0
  771. package/src/store/message-store-level.ts +195 -0
  772. package/src/store/resumable-task-store-level.ts +120 -0
  773. package/src/store/storage-controller.ts +240 -0
  774. package/src/types/cache.ts +16 -0
  775. package/src/types/data-store.ts +64 -0
  776. package/src/types/event-log.ts +52 -0
  777. package/src/types/jose-types.ts +76 -0
  778. package/src/types/jws-types.ts +28 -0
  779. package/src/types/message-interface.ts +30 -0
  780. package/src/types/message-store.ts +57 -0
  781. package/src/types/message-types.ts +132 -0
  782. package/src/types/messages-types.ts +77 -0
  783. package/src/types/method-handler.ts +19 -0
  784. package/src/types/permission-types.ts +110 -0
  785. package/src/types/protocols-types.ts +177 -0
  786. package/src/types/query-types.ts +61 -0
  787. package/src/types/records-types.ts +263 -0
  788. package/src/types/resumable-task-store.ts +96 -0
  789. package/src/types/signer.ts +27 -0
  790. package/src/types/subscriptions.ts +34 -0
  791. package/src/utils/abort.ts +31 -0
  792. package/src/utils/array.ts +39 -0
  793. package/src/utils/cid.ts +101 -0
  794. package/src/utils/data-stream.ts +99 -0
  795. package/src/utils/encoder.ts +54 -0
  796. package/src/utils/encryption.ts +145 -0
  797. package/src/utils/filter.ts +245 -0
  798. package/src/utils/hd-key.ts +126 -0
  799. package/src/utils/jws.ts +95 -0
  800. package/src/utils/memory-cache.ts +31 -0
  801. package/src/utils/messages.ts +109 -0
  802. package/src/utils/object.ts +43 -0
  803. package/src/utils/private-key-signer.ts +72 -0
  804. package/src/utils/protocols.ts +50 -0
  805. package/src/utils/records.ts +559 -0
  806. package/src/utils/secp256k1.ts +157 -0
  807. package/src/utils/secp256r1.ts +142 -0
  808. package/src/utils/string.ts +13 -0
  809. package/src/utils/time.ts +78 -0
  810. package/src/utils/url.ts +65 -0
@@ -0,0 +1,584 @@
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 minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' assert { type: 'json' };
12
+ import sinon from 'sinon';
13
+ import chai, { expect } from 'chai';
14
+ import { DataStream } from '../../src/utils/data-stream.js';
15
+ import { Dwn } from '../../src/dwn.js';
16
+ import { DwnErrorCode } from '../../src/core/dwn-error.js';
17
+ import { Jws } from '../../src/utils/jws.js';
18
+ import { PermissionGrant } from '../../src/protocols/permission-grant.js';
19
+ import { RecordsWrite } from '../../src/interfaces/records-write.js';
20
+ import { TestDataGenerator } from '../utils/test-data-generator.js';
21
+ import { TestEventStream } from '../test-event-stream.js';
22
+ import { TestStores } from '../test-stores.js';
23
+ import { Time } from '../../src/utils/time.js';
24
+ import { DidKey, UniversalResolver } from '@enbox/dids';
25
+ import { DwnInterfaceName, DwnMethodName, Encoder, PermissionsProtocol, ProtocolsConfigure } from '../../src/index.js';
26
+ chai.use(chaiAsPromised);
27
+ export function testOwnerDelegatedGrant() {
28
+ describe('owner delegated grant', () => __awaiter(this, void 0, void 0, function* () {
29
+ let didResolver;
30
+ let messageStore;
31
+ let dataStore;
32
+ let resumableTaskStore;
33
+ let eventLog;
34
+ let eventStream;
35
+ let dwn;
36
+ // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
37
+ // so that different test suites can reuse the same backend store for testing
38
+ before(() => __awaiter(this, void 0, void 0, function* () {
39
+ didResolver = new UniversalResolver({ didResolvers: [DidKey] });
40
+ const stores = TestStores.get();
41
+ messageStore = stores.messageStore;
42
+ dataStore = stores.dataStore;
43
+ resumableTaskStore = stores.resumableTaskStore;
44
+ eventLog = stores.eventLog;
45
+ eventStream = TestEventStream.get();
46
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
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 resumableTaskStore.clear();
54
+ yield eventLog.clear();
55
+ }));
56
+ after(() => __awaiter(this, void 0, void 0, function* () {
57
+ yield dwn.close();
58
+ }));
59
+ describe('RecordsWrite.parse()', () => __awaiter(this, void 0, void 0, function* () {
60
+ it('should throw if a message invokes an owner-delegated grant (ID) but the owner-delegated grant is not given', () => __awaiter(this, void 0, void 0, function* () {
61
+ const alice = yield TestDataGenerator.generatePersona();
62
+ const bob = yield TestDataGenerator.generatePersona();
63
+ const appX = yield TestDataGenerator.generatePersona();
64
+ // Alice grants App X to write as her for the chat protocol
65
+ const scope = {
66
+ interface: DwnInterfaceName.Records,
67
+ method: DwnMethodName.Write,
68
+ protocol: 'chat'
69
+ };
70
+ const grantToAppX = yield PermissionsProtocol.createGrant({
71
+ delegated: true, // this is a delegated grant
72
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
73
+ description: 'Allow App X to write as me in chat protocol',
74
+ grantedTo: appX.did,
75
+ scope,
76
+ signer: Jws.createSigner(alice)
77
+ });
78
+ // Bob creates a RecordsWrite message
79
+ const recordsWrite = yield RecordsWrite.create({
80
+ signer: Jws.createSigner(bob),
81
+ dataFormat: 'application/octet-stream',
82
+ data: TestDataGenerator.randomBytes(10),
83
+ });
84
+ // App X signs over Bob's RecordsWrite as DWN owner but does not include the delegated grant (we remove it below)
85
+ yield recordsWrite.signAsOwnerDelegate(Jws.createSigner(appX), grantToAppX.dataEncodedMessage);
86
+ delete recordsWrite.message.authorization.ownerDelegatedGrant; // intentionally remove `ownerDelegatedGrant`
87
+ const parsePromise = RecordsWrite.parse(recordsWrite.message);
88
+ yield expect(parsePromise).to.be.rejectedWith(DwnErrorCode.RecordsOwnerDelegatedGrantAndIdExistenceMismatch);
89
+ }));
90
+ it('should throw if a message includes an owner-delegated grant but does not reference it in owner signature', () => __awaiter(this, void 0, void 0, function* () {
91
+ const alice = yield TestDataGenerator.generatePersona();
92
+ const bob = yield TestDataGenerator.generatePersona();
93
+ const appX = yield TestDataGenerator.generatePersona();
94
+ // Alice grants App X to write as her for the chat protocol
95
+ const scope = {
96
+ interface: DwnInterfaceName.Records,
97
+ method: DwnMethodName.Write,
98
+ protocol: 'chat'
99
+ };
100
+ const grantToAppX = yield PermissionsProtocol.createGrant({
101
+ delegated: true, // this is a delegated grant
102
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
103
+ description: 'Allow App X to write as me in chat protocol',
104
+ grantedTo: appX.did,
105
+ scope,
106
+ signer: Jws.createSigner(alice)
107
+ });
108
+ // Bob creates a RecordsWrite message
109
+ const recordsWrite = yield RecordsWrite.create({
110
+ signer: Jws.createSigner(bob),
111
+ dataFormat: 'application/octet-stream',
112
+ data: TestDataGenerator.randomBytes(10),
113
+ });
114
+ // App X attempts to sign over Bob's RecordsWrite as the DWN owner by including an owner-delegated grant
115
+ // but does not reference the grant ID in owner signature (we remove it below)
116
+ yield recordsWrite.signAsOwnerDelegate(Jws.createSigner(appX), grantToAppX.dataEncodedMessage);
117
+ const ownerSignaturePayloadCopy = Object.assign({}, recordsWrite.ownerSignaturePayload);
118
+ delete ownerSignaturePayloadCopy.delegatedGrantId; // intentionally remove `delegatedGrantId` in ownerSignature
119
+ recordsWrite.message.authorization.ownerSignature.payload = Encoder.stringToBase64Url(JSON.stringify(ownerSignaturePayloadCopy));
120
+ const parsePromise = RecordsWrite.parse(recordsWrite.message);
121
+ yield expect(parsePromise).to.be.rejectedWith(DwnErrorCode.RecordsOwnerDelegatedGrantAndIdExistenceMismatch);
122
+ }));
123
+ }));
124
+ it('should only allow correct entity invoking an owner-delegated grant to write', () => __awaiter(this, void 0, void 0, function* () {
125
+ var _a;
126
+ // scenario:
127
+ // 1. Alice installs a protocol
128
+ // 2. Alice creates a delegated grant for app X to write in the protocol
129
+ // 3. A third party (Bob) authors a RecordsWrite
130
+ // 4. Sanity test that Bob's RecordsWrite cannot be written to Alice's DWN by itself
131
+ // 5. Verify that App Y cannot write Bob's message in Alice's DWN by invoking the delegated grant for App X.
132
+ // 6. Verify that App X can successfully write Bob's message in Alice's DWN by invoking an owner-delegated grant
133
+ // 7. Sanity verify the RecordsWrite written by App X
134
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
135
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
136
+ const appX = yield TestDataGenerator.generateDidKeyPersona();
137
+ const appY = yield TestDataGenerator.generateDidKeyPersona();
138
+ // 1. Alice installs a protocol
139
+ const protocolDefinition = minimalProtocolDefinition;
140
+ const protocol = minimalProtocolDefinition.protocol;
141
+ const protocolsConfig = yield ProtocolsConfigure.create({
142
+ signer: Jws.createSigner(alice),
143
+ definition: protocolDefinition
144
+ });
145
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
146
+ expect(protocolsConfigureReply.status.code).to.equal(202);
147
+ // 2. Alice creates a delegated grant for app X to write in the protocol
148
+ const scope = {
149
+ interface: DwnInterfaceName.Records,
150
+ method: DwnMethodName.Write,
151
+ protocol
152
+ };
153
+ const appXGrant = yield PermissionsProtocol.createGrant({
154
+ delegated: true, // this is a delegated grant
155
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
156
+ grantedTo: appX.did,
157
+ scope: scope,
158
+ signer: Jws.createSigner(alice)
159
+ });
160
+ // 3. A third party (Bob) authors a RecordsWrite
161
+ const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
162
+ const bobRecordsWrite = yield RecordsWrite.create({
163
+ signer: Jws.createSigner(bob),
164
+ protocol,
165
+ protocolPath: 'foo', // this comes from `types` in protocol definition
166
+ dataFormat: 'any-format',
167
+ data: bobRecordsWriteBytes
168
+ });
169
+ // 4. Sanity test that Bob's RecordsWrite cannot be written to Alice's DWN by itself
170
+ const unauthorizedRecordsWriteReply = yield dwn.processMessage(alice.did, bobRecordsWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
171
+ expect(unauthorizedRecordsWriteReply.status.code).to.equal(401);
172
+ // 5. Verify that App Y cannot write Bob's message in Alice's DWN by invoking the delegated grant for App X.
173
+ const appYAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
174
+ yield appYAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appY), appXGrant.dataEncodedMessage);
175
+ const appYWriteReply = yield dwn.processMessage(alice.did, appYAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
176
+ expect(appYWriteReply.status.code).to.equal(400);
177
+ expect(appYWriteReply.status.detail).to.contain(DwnErrorCode.RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch);
178
+ // 6. Verify that App X can successfully write Bob's message in Alice's DWN by invoking an owner-delegated grant
179
+ const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
180
+ yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
181
+ const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
182
+ expect(appXWriteReply.status.code).to.equal(202);
183
+ // 7. Sanity verify the RecordsWrite written by App X
184
+ const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
185
+ author: alice,
186
+ filter: { protocol }
187
+ });
188
+ const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
189
+ expect(recordsQueryReply.status.code).to.equal(200);
190
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
191
+ const fetchedEntry = recordsQueryReply.entries[0];
192
+ expect(fetchedEntry.encodedData).to.equal(Encoder.bytesToBase64Url(bobRecordsWriteBytes));
193
+ const fetchedRecordsWrite = yield RecordsWrite.parse(fetchedEntry);
194
+ expect(fetchedRecordsWrite.author).to.equal(bob.did);
195
+ }));
196
+ it('should not allow entity using a non-delegated grant as an owner-delegated grant to invoke write', () => __awaiter(this, void 0, void 0, function* () {
197
+ var _a;
198
+ // scenario:
199
+ // 1. Alice installs a protocol
200
+ // 2. Alice creates a non-delegated grant for app X to write in the protocol
201
+ // 3. A third party (Bob) authors a RecordsWrite
202
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an non-delegated grant
203
+ // 5. Sanity verify the RecordsWrite is not written by App X
204
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
205
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
206
+ const appX = yield TestDataGenerator.generateDidKeyPersona();
207
+ // 1. Alice installs a protocol
208
+ const protocolDefinition = minimalProtocolDefinition;
209
+ const protocol = minimalProtocolDefinition.protocol;
210
+ const protocolsConfig = yield ProtocolsConfigure.create({
211
+ signer: Jws.createSigner(alice),
212
+ definition: protocolDefinition
213
+ });
214
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
215
+ expect(protocolsConfigureReply.status.code).to.equal(202);
216
+ // 2. Alice creates a non-delegated grant for app X to write in the protocol
217
+ const scope = {
218
+ interface: DwnInterfaceName.Records,
219
+ method: DwnMethodName.Write,
220
+ protocol
221
+ };
222
+ const appXGrant = yield PermissionsProtocol.createGrant({
223
+ // delegated : true, // intentionally commented out to show that this is not a delegated grant
224
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
225
+ grantedTo: appX.did,
226
+ scope: scope,
227
+ signer: Jws.createSigner(alice)
228
+ });
229
+ // 3. A third party (Bob) authors a RecordsWrite
230
+ const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
231
+ const bobRecordsWrite = yield RecordsWrite.create({
232
+ signer: Jws.createSigner(bob),
233
+ protocol,
234
+ protocolPath: 'foo', // this comes from `types` in protocol definition
235
+ dataFormat: 'any-format',
236
+ data: bobRecordsWriteBytes
237
+ });
238
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an non-delegated grant
239
+ const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
240
+ yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
241
+ const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
242
+ expect(appXWriteReply.status.code).to.equal(400);
243
+ expect(appXWriteReply.status.detail).to.contain(DwnErrorCode.RecordsOwnerDelegatedGrantNotADelegatedGrant);
244
+ // 5. Sanity verify the RecordsWrite is not written by App X
245
+ const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
246
+ author: alice,
247
+ filter: { protocol }
248
+ });
249
+ const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
250
+ expect(recordsQueryReply.status.code).to.equal(200);
251
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
252
+ }));
253
+ it('should fail if owner-delegated grant invoked for write has a mismatching interface method or protocol scope', () => __awaiter(this, void 0, void 0, function* () {
254
+ var _a;
255
+ // scenario:
256
+ // 1. Alice installs a protocol
257
+ // 2. Alice creates a delegated grant for app X to read in the protocol
258
+ // 3. Alice creates a delegated grant for app X to write in another random protocol
259
+ // 4. A third party (Bob) authors a RecordsWrite
260
+ // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for RecordsRead
261
+ // 6. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for writing in another random protocol
262
+ // 7. Sanity verify the RecordsWrite is not written by App X
263
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
264
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
265
+ const appX = yield TestDataGenerator.generateDidKeyPersona();
266
+ // 1. Alice installs a protocol
267
+ const protocolDefinition = minimalProtocolDefinition;
268
+ const protocol = minimalProtocolDefinition.protocol;
269
+ const protocolsConfig = yield ProtocolsConfigure.create({
270
+ signer: Jws.createSigner(alice),
271
+ definition: protocolDefinition
272
+ });
273
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
274
+ expect(protocolsConfigureReply.status.code).to.equal(202);
275
+ // 2. Alice creates a delegated grant for app X to read in the protocol
276
+ const readScope = {
277
+ interface: DwnInterfaceName.Records,
278
+ method: DwnMethodName.Read,
279
+ protocol
280
+ };
281
+ const appXGrantToRead = yield PermissionsProtocol.createGrant({
282
+ delegated: true,
283
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
284
+ grantedTo: appX.did,
285
+ scope: readScope,
286
+ signer: Jws.createSigner(alice)
287
+ });
288
+ // 3. Alice creates a delegated grant for app X to write in another random protocol
289
+ const randomProtocolWriteScope = {
290
+ interface: DwnInterfaceName.Records,
291
+ method: DwnMethodName.Write,
292
+ protocol: `random-protocol`
293
+ };
294
+ const appXGrantToWriteInRandomProtocol = yield PermissionsProtocol.createGrant({
295
+ delegated: true,
296
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
297
+ grantedTo: appX.did,
298
+ scope: randomProtocolWriteScope,
299
+ signer: Jws.createSigner(alice)
300
+ });
301
+ // 4. A third party (Bob) authors a RecordsWrite
302
+ const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
303
+ const bobRecordsWrite = yield RecordsWrite.create({
304
+ signer: Jws.createSigner(bob),
305
+ protocol,
306
+ protocolPath: 'foo', // this comes from `types` in protocol definition
307
+ dataFormat: 'any-format',
308
+ data: bobRecordsWriteBytes
309
+ });
310
+ // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for RecordsRead
311
+ const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
312
+ yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantToRead.dataEncodedMessage);
313
+ const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
314
+ expect(appXWriteReply.status.code).to.equal(401);
315
+ expect(appXWriteReply.status.detail).to.contain(DwnErrorCode.GrantAuthorizationMethodMismatch);
316
+ // 6. Verify that App X cannot write Bob's message in Alice's DWN by invoking a delegated grant for writing in another random protocol
317
+ const appXAugmentedWrite2 = yield RecordsWrite.parse(bobRecordsWrite.message);
318
+ yield appXAugmentedWrite2.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantToWriteInRandomProtocol.dataEncodedMessage);
319
+ const appXWriteReply2 = yield dwn.processMessage(alice.did, appXAugmentedWrite2.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
320
+ expect(appXWriteReply2.status.code).to.equal(401);
321
+ expect(appXWriteReply2.status.detail).to.contain(DwnErrorCode.RecordsGrantAuthorizationScopeProtocolMismatch);
322
+ // 7. Sanity verify the RecordsWrite is not written by App X
323
+ const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
324
+ author: alice,
325
+ filter: { protocol }
326
+ });
327
+ const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
328
+ expect(recordsQueryReply.status.code).to.equal(200);
329
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
330
+ }));
331
+ it('should fail RecordsWrite if presented with an owner-delegated grant with invalid grantor signature', () => __awaiter(this, void 0, void 0, function* () {
332
+ var _a;
333
+ // scenario:
334
+ // 1. Alice installs a protocol
335
+ // 2. Alice creates a delegated grant for App X to write as Alice, but with invalid signature
336
+ // 3. A third party (Bob) authors a RecordsWrite
337
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with invalid signature
338
+ // 5. Sanity verify the RecordsWrite is not written by App X
339
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
340
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
341
+ const appX = yield TestDataGenerator.generateDidKeyPersona();
342
+ // 1. Alice installs a protocol
343
+ const protocolDefinition = minimalProtocolDefinition;
344
+ const protocol = minimalProtocolDefinition.protocol;
345
+ const protocolsConfig = yield ProtocolsConfigure.create({
346
+ signer: Jws.createSigner(alice),
347
+ definition: protocolDefinition
348
+ });
349
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
350
+ expect(protocolsConfigureReply.status.code).to.equal(202);
351
+ // 2. Alice creates a delegated grant for App X to write as Alice, but with invalid signature
352
+ const scope = {
353
+ interface: DwnInterfaceName.Records,
354
+ method: DwnMethodName.Write,
355
+ protocol
356
+ };
357
+ const appXGrant = yield PermissionsProtocol.createGrant({
358
+ delegated: true,
359
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
360
+ grantedTo: appX.did,
361
+ scope: scope,
362
+ signer: Jws.createSigner(alice)
363
+ });
364
+ const appXGrantMessage = appXGrant.dataEncodedMessage;
365
+ appXGrantMessage.authorization.signature.signatures[0].signature = yield TestDataGenerator.randomSignatureString();
366
+ // 3. A third party (Bob) authors a RecordsWrite
367
+ const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
368
+ const bobRecordsWrite = yield RecordsWrite.create({
369
+ signer: Jws.createSigner(bob),
370
+ protocol,
371
+ protocolPath: 'foo', // this comes from `types` in protocol definition
372
+ dataFormat: 'any-format',
373
+ data: bobRecordsWriteBytes
374
+ });
375
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with invalid signature
376
+ const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
377
+ yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrantMessage);
378
+ const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
379
+ expect(appXWriteReply.status.code).to.equal(401);
380
+ expect(appXWriteReply.status.detail).to.contain(DwnErrorCode.GeneralJwsVerifierInvalidSignature);
381
+ // 5. Sanity verify the RecordsWrite is not written by App X
382
+ const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
383
+ author: alice,
384
+ filter: { protocol }
385
+ });
386
+ const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
387
+ expect(recordsQueryReply.status.code).to.equal(200);
388
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
389
+ }));
390
+ it('should fail RecordsWrite if grant ID in owner signature payload and CID of owner-delegated grant are mismatching', () => __awaiter(this, void 0, void 0, function* () {
391
+ var _a;
392
+ // scenario:
393
+ // 1. Alice installs a protocol
394
+ // 2. Creates two delegated grant for App X to write as Alice
395
+ // 3. A third party (Bob) authors a RecordsWrite
396
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with the wrong ID
397
+ // 5. Sanity verify the RecordsWrite is not written by App X
398
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
399
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
400
+ const appX = yield TestDataGenerator.generateDidKeyPersona();
401
+ // 1. Alice installs a protocol
402
+ const protocolDefinition = minimalProtocolDefinition;
403
+ const protocol = minimalProtocolDefinition.protocol;
404
+ const protocolsConfig = yield ProtocolsConfigure.create({
405
+ signer: Jws.createSigner(alice),
406
+ definition: protocolDefinition
407
+ });
408
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
409
+ expect(protocolsConfigureReply.status.code).to.equal(202);
410
+ // 2. Creates two delegated grant for App X to write as Alice
411
+ const scope = {
412
+ interface: DwnInterfaceName.Records,
413
+ method: DwnMethodName.Write,
414
+ protocol
415
+ };
416
+ const appXGrant = yield PermissionsProtocol.createGrant({
417
+ delegated: true,
418
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
419
+ grantedTo: appX.did,
420
+ scope: scope,
421
+ signer: Jws.createSigner(alice)
422
+ });
423
+ yield Time.minimalSleep();
424
+ const appXGrant2 = yield PermissionsProtocol.createGrant({
425
+ delegated: true,
426
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
427
+ grantedTo: appX.did,
428
+ scope: scope,
429
+ signer: Jws.createSigner(alice)
430
+ });
431
+ // 3. A third party (Bob) authors a RecordsWrite
432
+ const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
433
+ const bobRecordsWrite = yield RecordsWrite.create({
434
+ signer: Jws.createSigner(bob),
435
+ protocol,
436
+ protocolPath: 'foo', // this comes from `types` in protocol definition
437
+ dataFormat: 'any-format',
438
+ data: bobRecordsWriteBytes
439
+ });
440
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an owner-delegated grant with the wrong ID
441
+ const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
442
+ yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
443
+ appXAugmentedWrite.message.authorization.ownerDelegatedGrant = appXGrant2.dataEncodedMessage; // intentionally have a mismatching grant
444
+ const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
445
+ expect(appXWriteReply.status.code).to.equal(400);
446
+ expect(appXWriteReply.status.detail).to.contain(DwnErrorCode.RecordsOwnerDelegatedGrantCidMismatch);
447
+ // 5. Sanity verify the RecordsWrite is not written by App X
448
+ const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
449
+ author: alice,
450
+ filter: { protocol }
451
+ });
452
+ const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
453
+ expect(recordsQueryReply.status.code).to.equal(200);
454
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
455
+ }));
456
+ it('should fail RecordsWrite if owner-delegated grant is revoked', () => __awaiter(this, void 0, void 0, function* () {
457
+ var _a;
458
+ // scenario:
459
+ // 1. Alice installs a protocol
460
+ // 2. Alice creates a delegated grant for App X to write as Alice
461
+ // 3. Alice revokes the grant
462
+ // 4. A third party (Bob) authors a RecordsWrite
463
+ // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a revoked owner-delegated grant
464
+ // 6. Sanity verify the RecordsWrite is not written by App X
465
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
466
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
467
+ const appX = yield TestDataGenerator.generateDidKeyPersona();
468
+ // 1. Alice installs a protocol
469
+ const protocolDefinition = minimalProtocolDefinition;
470
+ const protocol = minimalProtocolDefinition.protocol;
471
+ const protocolsConfig = yield ProtocolsConfigure.create({
472
+ signer: Jws.createSigner(alice),
473
+ definition: protocolDefinition
474
+ });
475
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
476
+ expect(protocolsConfigureReply.status.code).to.equal(202);
477
+ // 2. Alice creates a delegated grant for App X to write as Alice
478
+ const scope = {
479
+ interface: DwnInterfaceName.Records,
480
+ method: DwnMethodName.Write,
481
+ protocol
482
+ };
483
+ const appXGrant = yield PermissionsProtocol.createGrant({
484
+ delegated: true,
485
+ dateExpires: Time.createOffsetTimestamp({ seconds: 100 }),
486
+ grantedTo: appX.did,
487
+ scope: scope,
488
+ signer: Jws.createSigner(alice)
489
+ });
490
+ const grantDataStream = DataStream.fromBytes(appXGrant.permissionGrantBytes);
491
+ const permissionGrantWriteReply = yield dwn.processMessage(alice.did, appXGrant.recordsWrite.message, { dataStream: grantDataStream });
492
+ expect(permissionGrantWriteReply.status.code).to.equal(202);
493
+ // 3. Alice revokes the grant
494
+ const permissionRevoke = yield PermissionsProtocol.createRevocation({
495
+ signer: Jws.createSigner(alice),
496
+ grant: yield PermissionGrant.parse(appXGrant.dataEncodedMessage),
497
+ });
498
+ const revocationDataStream = DataStream.fromBytes(permissionRevoke.permissionRevocationBytes);
499
+ const permissionRevokeReply = yield dwn.processMessage(alice.did, permissionRevoke.recordsWrite.message, { dataStream: revocationDataStream });
500
+ expect(permissionRevokeReply.status.code).to.equal(202);
501
+ // 4. A third party (Bob) authors a RecordsWrite
502
+ const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
503
+ const bobRecordsWrite = yield RecordsWrite.create({
504
+ signer: Jws.createSigner(bob),
505
+ protocol,
506
+ protocolPath: 'foo', // this comes from `types` in protocol definition
507
+ dataFormat: 'any-format',
508
+ data: bobRecordsWriteBytes
509
+ });
510
+ // 5. Verify that App X cannot write Bob's message in Alice's DWN by invoking a revoked owner-delegated grant
511
+ const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
512
+ yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
513
+ const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
514
+ expect(appXWriteReply.status.code).to.equal(401);
515
+ expect(appXWriteReply.status.detail).to.contain(DwnErrorCode.GrantAuthorizationGrantRevoked);
516
+ // 6. Sanity verify the RecordsWrite is not written by App X
517
+ const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
518
+ author: alice,
519
+ filter: { protocol }
520
+ });
521
+ const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
522
+ expect(recordsQueryReply.status.code).to.equal(200);
523
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
524
+ }));
525
+ it('should fail RecordsWrite if owner-delegated grant is expired', () => __awaiter(this, void 0, void 0, function* () {
526
+ var _a;
527
+ // scenario:
528
+ // 1. Alice installs a protocol
529
+ // 2. Alice creates a delegated grant for App X to write as Alice, but make it expired
530
+ // 3. A third party (Bob) authors a RecordsWrite
531
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an expired owner-delegated grant
532
+ // 5. Sanity verify the RecordsWrite is not written by App X
533
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
534
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
535
+ const appX = yield TestDataGenerator.generateDidKeyPersona();
536
+ // 1. Alice installs a protocol
537
+ const protocolDefinition = minimalProtocolDefinition;
538
+ const protocol = minimalProtocolDefinition.protocol;
539
+ const protocolsConfig = yield ProtocolsConfigure.create({
540
+ signer: Jws.createSigner(alice),
541
+ definition: protocolDefinition
542
+ });
543
+ const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
544
+ expect(protocolsConfigureReply.status.code).to.equal(202);
545
+ // 2. Alice creates a delegated grant for App X to write as Alice, but make it expired
546
+ const scope = {
547
+ interface: DwnInterfaceName.Records,
548
+ method: DwnMethodName.Write,
549
+ protocol
550
+ };
551
+ const appXGrant = yield PermissionsProtocol.createGrant({
552
+ delegated: true,
553
+ dateExpires: Time.getCurrentTimestamp(), // intentionally set to current time to make it expired immediately
554
+ grantedTo: appX.did,
555
+ scope: scope,
556
+ signer: Jws.createSigner(alice)
557
+ });
558
+ // 3. A third party (Bob) authors a RecordsWrite
559
+ const bobRecordsWriteBytes = new TextEncoder().encode('message from Bob');
560
+ const bobRecordsWrite = yield RecordsWrite.create({
561
+ signer: Jws.createSigner(bob),
562
+ protocol,
563
+ protocolPath: 'foo', // this comes from `types` in protocol definition
564
+ dataFormat: 'any-format',
565
+ data: bobRecordsWriteBytes
566
+ });
567
+ // 4. Verify that App X cannot write Bob's message in Alice's DWN by invoking an expired owner-delegated grant
568
+ const appXAugmentedWrite = yield RecordsWrite.parse(bobRecordsWrite.message);
569
+ yield appXAugmentedWrite.signAsOwnerDelegate(Jws.createSigner(appX), appXGrant.dataEncodedMessage);
570
+ const appXWriteReply = yield dwn.processMessage(alice.did, appXAugmentedWrite.message, { dataStream: DataStream.fromBytes(bobRecordsWriteBytes) });
571
+ expect(appXWriteReply.status.code).to.equal(401);
572
+ expect(appXWriteReply.status.detail).to.contain(DwnErrorCode.GrantAuthorizationGrantExpired);
573
+ // 5. Sanity verify the RecordsWrite is not written by App X
574
+ const recordsQuery = yield TestDataGenerator.generateRecordsQuery({
575
+ author: alice,
576
+ filter: { protocol }
577
+ });
578
+ const recordsQueryReply = yield dwn.processMessage(alice.did, recordsQuery.message);
579
+ expect(recordsQueryReply.status.code).to.equal(200);
580
+ expect((_a = recordsQueryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(0);
581
+ }));
582
+ }));
583
+ }
584
+ //# sourceMappingURL=owner-delegated-grant.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-delegated-grant.spec.js","sourceRoot":"","sources":["../../../../tests/features/owner-delegated-grant.spec.ts"],"names":[],"mappings":"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"}