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