@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,670 @@
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 { DataStream } from '../../src/index.js';
11
+ import chaiAsPromised from 'chai-as-promised';
12
+ import sinon from 'sinon';
13
+ import chai, { expect } from 'chai';
14
+ import { Dwn } from '../../src/dwn.js';
15
+ import { Jws } from '../../src/utils/jws.js';
16
+ import { ProtocolsConfigure } from '../../src/interfaces/protocols-configure.js';
17
+ import { RecordsQuery } from '../../src/interfaces/records-query.js';
18
+ import { RecordsWrite } from '../../src/interfaces/records-write.js';
19
+ import { TestDataGenerator } from '../utils/test-data-generator.js';
20
+ import { TestEventStream } from '../test-event-stream.js';
21
+ import { TestStores } from '../test-stores.js';
22
+ import { DidKey, UniversalResolver } from '@enbox/dids';
23
+ chai.use(chaiAsPromised);
24
+ // This is a test suite that demonstrates how to use the DWN to create aggregators
25
+ // Aggregators allows multiple authors to write records to the aggregator's DID based on a role
26
+ //
27
+ // NOTE: This will be more evident when we introduce `signWithRole`.
28
+ // This would allow writing to your local DWN without any role field, but when writing to an aggregator, you could conform to their own roles.
29
+ describe('Aggregator Model', () => {
30
+ let didResolver;
31
+ let messageStore;
32
+ let dataStore;
33
+ let resumableTaskStore;
34
+ let eventLog;
35
+ let eventStream;
36
+ let dwn;
37
+ const protocol = 'https://example.org/notes';
38
+ // A simple protocol for the user that only allows them to write or read their own notes
39
+ const userProtocolDefinition = {
40
+ protocol,
41
+ published: true,
42
+ types: {
43
+ note: {
44
+ schema: 'https://example.org/note',
45
+ dataFormats: ['text/plain', 'application/json'],
46
+ }
47
+ },
48
+ structure: {
49
+ note: {}
50
+ }
51
+ };
52
+ // A simple protocol that allows members of an aggregator to write notes to the aggregator
53
+ // Anyone can query or read public notes, the rest of the notes are enforced by `recipient/author` rules.
54
+ const aggregatorProtocolDefinition = {
55
+ protocol,
56
+ published: true,
57
+ types: {
58
+ note: {
59
+ schema: 'https://example.org/note',
60
+ dataFormats: ['text/plain', 'application/json'],
61
+ },
62
+ member: {
63
+ schema: 'https://example.org/member',
64
+ dataFormats: ['application/json'],
65
+ }
66
+ },
67
+ structure: {
68
+ member: {
69
+ $role: true,
70
+ },
71
+ note: {
72
+ $actions: [{
73
+ role: 'member',
74
+ can: ['create', 'update', 'delete']
75
+ }]
76
+ }
77
+ }
78
+ };
79
+ // important to follow the `before` and `after` pattern to initialize and clean the stores in tests
80
+ // so that different test suites can reuse the same backend store for testing
81
+ before(() => __awaiter(void 0, void 0, void 0, function* () {
82
+ didResolver = new UniversalResolver({ didResolvers: [DidKey] });
83
+ const stores = TestStores.get();
84
+ messageStore = stores.messageStore;
85
+ dataStore = stores.dataStore;
86
+ resumableTaskStore = stores.resumableTaskStore;
87
+ eventLog = stores.eventLog;
88
+ eventStream = TestEventStream.get();
89
+ dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
90
+ }));
91
+ beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
92
+ sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
93
+ // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
94
+ yield messageStore.clear();
95
+ yield dataStore.clear();
96
+ yield resumableTaskStore.clear();
97
+ yield eventLog.clear();
98
+ }));
99
+ after(() => __awaiter(void 0, void 0, void 0, function* () {
100
+ yield dwn.close();
101
+ }));
102
+ it('should support querying from multiple authors', () => __awaiter(void 0, void 0, void 0, function* () {
103
+ // scenario: Alice, Bob, Carol are members of an aggregator.
104
+ // Alice writes a note to Carol, Bob writes a note to Alice, Carol writes a note to Bob.
105
+ // Daniel is not a member of the aggregator and tries to unsuccessfully write a note to Alice.
106
+ // Daniel can query public notes from multiple authors in a single query.
107
+ // Alice and Bob create private notes with Carol as the recipient.
108
+ // Bob creates a private note to Alice.
109
+ // Daniel does not see the private notes in his query.
110
+ // Carol can see all notes from Alice and Bob in her query, including the private notes intended for her.
111
+ // Alice can see all notes from Bob and Carol in her query, including the private notes intended for her.
112
+ var _a, _b, _c, _d;
113
+ // create aggregator DID and install aggregator note protocol
114
+ const aggregator = yield TestDataGenerator.generateDidKeyPersona();
115
+ const aggregatorProtocolConfigure = yield ProtocolsConfigure.create({
116
+ signer: Jws.createSigner(aggregator),
117
+ definition: aggregatorProtocolDefinition,
118
+ });
119
+ const aggregatorProtocolReply = yield dwn.processMessage(aggregator.did, aggregatorProtocolConfigure.message);
120
+ expect(aggregatorProtocolReply.status.code).to.equal(202, 'aggregator configure');
121
+ // create 4 users and install user note protocol
122
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
123
+ const aliceProtocolConfigure = yield ProtocolsConfigure.create({
124
+ signer: Jws.createSigner(alice),
125
+ definition: userProtocolDefinition,
126
+ });
127
+ const aliceProtocolReply = yield dwn.processMessage(alice.did, aliceProtocolConfigure.message);
128
+ expect(aliceProtocolReply.status.code).to.equal(202, 'alice configure');
129
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
130
+ const bobProtocolConfigure = yield ProtocolsConfigure.create({
131
+ signer: Jws.createSigner(bob),
132
+ definition: userProtocolDefinition,
133
+ });
134
+ const bobProtocolReply = yield dwn.processMessage(bob.did, bobProtocolConfigure.message);
135
+ expect(bobProtocolReply.status.code).to.equal(202, 'bob configure');
136
+ const carol = yield TestDataGenerator.generateDidKeyPersona();
137
+ const carolProtocolConfigure = yield ProtocolsConfigure.create({
138
+ signer: Jws.createSigner(carol),
139
+ definition: userProtocolDefinition,
140
+ });
141
+ const carolProtocolReply = yield dwn.processMessage(carol.did, carolProtocolConfigure.message);
142
+ expect(carolProtocolReply.status.code).to.equal(202, 'carol configure');
143
+ const daniel = yield TestDataGenerator.generateDidKeyPersona();
144
+ const danielProtocolConfigure = yield ProtocolsConfigure.create({
145
+ signer: Jws.createSigner(daniel),
146
+ definition: userProtocolDefinition,
147
+ });
148
+ const danielProtocolReply = yield dwn.processMessage(daniel.did, danielProtocolConfigure.message);
149
+ expect(danielProtocolReply.status.code).to.equal(202, 'daniel configure');
150
+ // The aggregator creates member records for alice, bob and carol
151
+ const aliceMemberData = TestDataGenerator.randomBytes(256);
152
+ const aliceMember = yield RecordsWrite.create({
153
+ signer: Jws.createSigner(aggregator),
154
+ recipient: alice.did,
155
+ protocol: userProtocolDefinition.protocol,
156
+ protocolPath: 'member',
157
+ schema: 'https://example.org/member',
158
+ dataFormat: 'application/json',
159
+ data: aliceMemberData,
160
+ });
161
+ const aliceMemberReply = yield dwn.processMessage(aggregator.did, aliceMember.message, { dataStream: DataStream.fromBytes(aliceMemberData) });
162
+ expect(aliceMemberReply.status.code).to.equal(202, 'alice member ' + aliceMemberReply.status.detail);
163
+ const bobMemberData = TestDataGenerator.randomBytes(256);
164
+ const bobMember = yield RecordsWrite.create({
165
+ signer: Jws.createSigner(aggregator),
166
+ recipient: bob.did,
167
+ protocol: userProtocolDefinition.protocol,
168
+ protocolPath: 'member',
169
+ schema: 'https://example.org/member',
170
+ dataFormat: 'application/json',
171
+ data: bobMemberData,
172
+ });
173
+ const bobMemberReply = yield dwn.processMessage(aggregator.did, bobMember.message, { dataStream: DataStream.fromBytes(bobMemberData) });
174
+ expect(bobMemberReply.status.code).to.equal(202, 'bob member');
175
+ const carolMemberData = TestDataGenerator.randomBytes(256);
176
+ const carolMember = yield RecordsWrite.create({
177
+ signer: Jws.createSigner(aggregator),
178
+ recipient: carol.did,
179
+ protocol: userProtocolDefinition.protocol,
180
+ protocolPath: 'member',
181
+ schema: 'https://example.org/member',
182
+ dataFormat: 'application/json',
183
+ data: carolMemberData,
184
+ });
185
+ const carolMemberReply = yield dwn.processMessage(aggregator.did, carolMember.message, { dataStream: DataStream.fromBytes(carolMemberData) });
186
+ expect(carolMemberReply.status.code).to.equal(202, 'carol member');
187
+ // alice writes a public note to carol and posts it in the aggregator
188
+ const aliceNoteData = TestDataGenerator.randomBytes(256);
189
+ const aliceNoteToCarol = yield RecordsWrite.create({
190
+ signer: Jws.createSigner(alice),
191
+ recipient: carol.did,
192
+ published: true,
193
+ protocol: userProtocolDefinition.protocol,
194
+ protocolPath: 'note',
195
+ dataFormat: 'application/json',
196
+ schema: 'https://example.org/note',
197
+ data: aliceNoteData,
198
+ protocolRole: 'member'
199
+ });
200
+ // Alice writes it to her own DWN and the aggregator
201
+ const aliceLocalDWN = yield dwn.processMessage(alice.did, aliceNoteToCarol.message, { dataStream: DataStream.fromBytes(aliceNoteData) });
202
+ expect(aliceLocalDWN.status.code).to.equal(202, 'alice note');
203
+ const aliceAggregatorDWN = yield dwn.processMessage(aggregator.did, aliceNoteToCarol.message, {
204
+ dataStream: DataStream.fromBytes(aliceNoteData)
205
+ });
206
+ expect(aliceAggregatorDWN.status.code).to.equal(202, 'alice note aggregator');
207
+ // bob writes a public note to alice and posts it in the aggregator
208
+ const bobNoteToAliceData = TestDataGenerator.randomBytes(256);
209
+ const bobNoteToAlice = yield RecordsWrite.create({
210
+ signer: Jws.createSigner(bob),
211
+ recipient: alice.did,
212
+ published: true,
213
+ protocol: userProtocolDefinition.protocol,
214
+ protocolPath: 'note',
215
+ dataFormat: 'application/json',
216
+ schema: 'https://example.org/note',
217
+ data: bobNoteToAliceData,
218
+ protocolRole: 'member'
219
+ });
220
+ // Bob writes it to his own DWN and the aggregator
221
+ const bobLocalDWN = yield dwn.processMessage(bob.did, bobNoteToAlice.message, { dataStream: DataStream.fromBytes(bobNoteToAliceData) });
222
+ expect(bobLocalDWN.status.code).to.equal(202, 'bob note');
223
+ const bobAggregatorDWN = yield dwn.processMessage(aggregator.did, bobNoteToAlice.message, {
224
+ dataStream: DataStream.fromBytes(bobNoteToAliceData)
225
+ });
226
+ expect(bobAggregatorDWN.status.code).to.equal(202, 'bob note aggregator');
227
+ // carol writes a public note to bob and posts it in the aggregator
228
+ const carolNoteToBobData = TestDataGenerator.randomBytes(256);
229
+ const carolNoteToBob = yield RecordsWrite.create({
230
+ signer: Jws.createSigner(carol),
231
+ recipient: bob.did,
232
+ published: true,
233
+ protocol: userProtocolDefinition.protocol,
234
+ protocolPath: 'note',
235
+ dataFormat: 'application/json',
236
+ schema: 'https://example.org/note',
237
+ data: carolNoteToBobData,
238
+ protocolRole: 'member'
239
+ });
240
+ // Carol writes it to her own DWN and the aggregator
241
+ const carolLocalDWN = yield dwn.processMessage(carol.did, carolNoteToBob.message, {
242
+ dataStream: DataStream.fromBytes(carolNoteToBobData)
243
+ });
244
+ expect(carolLocalDWN.status.code).to.equal(202, 'carol note');
245
+ const carolAggregatorDWN = yield dwn.processMessage(aggregator.did, carolNoteToBob.message, {
246
+ dataStream: DataStream.fromBytes(carolNoteToBobData)
247
+ });
248
+ expect(carolAggregatorDWN.status.code).to.equal(202, 'carol note aggregator');
249
+ // daniel writes a public note to alice and posts it in the aggregator (which will reject it as he is not a member)
250
+ const danielNoteToAlice = TestDataGenerator.randomBytes(256);
251
+ const danielNote = yield RecordsWrite.create({
252
+ signer: Jws.createSigner(daniel),
253
+ recipient: alice.did,
254
+ published: true,
255
+ protocol: userProtocolDefinition.protocol,
256
+ protocolPath: 'note',
257
+ dataFormat: 'application/json',
258
+ schema: 'https://example.org/note',
259
+ data: danielNoteToAlice,
260
+ protocolRole: 'member'
261
+ });
262
+ // Daniel writes it to his own DWN and the aggregator
263
+ const danielLocalDWN = yield dwn.processMessage(daniel.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
264
+ expect(danielLocalDWN.status.code).to.equal(202, 'daniel note');
265
+ const danielAggregatorDWN = yield dwn.processMessage(aggregator.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
266
+ expect(danielAggregatorDWN.status.code).to.equal(401, 'daniel note aggregator');
267
+ // daniel can read public notes from multiple authors in a single query
268
+ const danielRead = yield RecordsQuery.create({
269
+ signer: Jws.createSigner(daniel),
270
+ filter: {
271
+ protocol: userProtocolDefinition.protocol,
272
+ protocolPath: 'note',
273
+ author: [alice.did, bob.did],
274
+ }
275
+ });
276
+ const danielReadReply = yield dwn.processMessage(aggregator.did, danielRead.message);
277
+ expect(danielReadReply.status.code).to.equal(200, 'daniel read');
278
+ expect((_a = danielReadReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(2, 'daniel read records');
279
+ expect(danielReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note');
280
+ expect(danielReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note');
281
+ // create private notes to carol from alice and bob
282
+ const alicePrivateNoteToCarol = TestDataGenerator.randomBytes(256);
283
+ const aliceNoteToCarolPrivate = yield RecordsWrite.create({
284
+ signer: Jws.createSigner(alice),
285
+ recipient: carol.did,
286
+ published: false,
287
+ protocol: userProtocolDefinition.protocol,
288
+ protocolPath: 'note',
289
+ dataFormat: 'application/json',
290
+ schema: 'https://example.org/note',
291
+ data: alicePrivateNoteToCarol,
292
+ protocolRole: 'member'
293
+ });
294
+ const aliceNoteToCarolLocal = yield dwn.processMessage(alice.did, aliceNoteToCarolPrivate.message, {
295
+ dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
296
+ });
297
+ expect(aliceNoteToCarolLocal.status.code).to.equal(202, 'alice private note');
298
+ const aliceNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, aliceNoteToCarolPrivate.message, {
299
+ dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
300
+ });
301
+ expect(aliceNoteToCarolAggregator.status.code).to.equal(202, 'alice private note aggregator');
302
+ const bobPrivateNoteToCarol = TestDataGenerator.randomBytes(256);
303
+ const bobNoteToCarolPrivate = yield RecordsWrite.create({
304
+ signer: Jws.createSigner(bob),
305
+ recipient: carol.did,
306
+ published: false,
307
+ protocol: userProtocolDefinition.protocol,
308
+ protocolPath: 'note',
309
+ dataFormat: 'application/json',
310
+ schema: 'https://example.org/note',
311
+ data: bobPrivateNoteToCarol,
312
+ protocolRole: 'member'
313
+ });
314
+ const bobNoteToCarolLocal = yield dwn.processMessage(bob.did, bobNoteToCarolPrivate.message, {
315
+ dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
316
+ });
317
+ expect(bobNoteToCarolLocal.status.code).to.equal(202, 'bob private note');
318
+ const bobNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, bobNoteToCarolPrivate.message, {
319
+ dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
320
+ });
321
+ expect(bobNoteToCarolAggregator.status.code).to.equal(202, 'bob private note aggregator');
322
+ // create a private note from bob to alice
323
+ const bobNoteToAlicePrivateData = TestDataGenerator.randomBytes(256);
324
+ const bobNoteToAlicePrivate = yield RecordsWrite.create({
325
+ signer: Jws.createSigner(bob),
326
+ recipient: alice.did,
327
+ published: false,
328
+ protocol: userProtocolDefinition.protocol,
329
+ protocolPath: 'note',
330
+ dataFormat: 'application/json',
331
+ schema: 'https://example.org/note',
332
+ data: bobNoteToAlicePrivateData,
333
+ protocolRole: 'member'
334
+ });
335
+ const bobNoteToAliceLocal = yield dwn.processMessage(bob.did, bobNoteToAlicePrivate.message, {
336
+ dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
337
+ });
338
+ expect(bobNoteToAliceLocal.status.code).to.equal(202, 'alice private note to bob');
339
+ const bobNoteToAliceAggregator = yield dwn.processMessage(aggregator.did, bobNoteToAlicePrivate.message, {
340
+ dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
341
+ });
342
+ expect(bobNoteToAliceAggregator.status.code).to.equal(202, 'alice private note to bob aggregator');
343
+ // confirm daniel can still only read the public notes
344
+ const danielRead2 = yield RecordsQuery.create({
345
+ signer: Jws.createSigner(daniel),
346
+ filter: {
347
+ protocol: userProtocolDefinition.protocol,
348
+ protocolPath: 'note',
349
+ author: [alice.did, bob.did],
350
+ }
351
+ });
352
+ const danielReadReply2 = yield dwn.processMessage(aggregator.did, danielRead2.message);
353
+ expect(danielReadReply2.status.code).to.equal(200, 'daniel read 2');
354
+ expect((_b = danielReadReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(2, 'daniel read records 2');
355
+ expect(danielReadReply2.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note 2');
356
+ expect(danielReadReply2.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note 2');
357
+ // carol queries for notes from alice and bob and gets the public notes and private notes destined for her
358
+ // carol does not see the private note from alice to bob
359
+ const carolRead = yield RecordsQuery.create({
360
+ signer: Jws.createSigner(carol),
361
+ filter: {
362
+ protocol: userProtocolDefinition.protocol,
363
+ protocolPath: 'note',
364
+ author: [alice.did, bob.did],
365
+ }
366
+ });
367
+ const carolReadReply = yield dwn.processMessage(aggregator.did, carolRead.message);
368
+ expect(carolReadReply.status.code).to.equal(200, 'carol read');
369
+ expect((_c = carolReadReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(4, 'carol read records');
370
+ expect(carolReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'carol read alice note');
371
+ expect(carolReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'carol read bob note');
372
+ expect(carolReadReply.entries[2].recordId).to.equal(aliceNoteToCarolPrivate.message.recordId, 'carol read alice private note');
373
+ expect(carolReadReply.entries[3].recordId).to.equal(bobNoteToCarolPrivate.message.recordId, 'carol read bob private note');
374
+ // alice queries for notes from bob and carol and gets the public notes and private notes destined for her
375
+ const aliceRead = yield RecordsQuery.create({
376
+ signer: Jws.createSigner(alice),
377
+ filter: {
378
+ protocol: userProtocolDefinition.protocol,
379
+ protocolPath: 'note',
380
+ author: [bob.did, carol.did],
381
+ }
382
+ });
383
+ const aliceReadReply = yield dwn.processMessage(aggregator.did, aliceRead.message);
384
+ expect(aliceReadReply.status.code).to.equal(200, 'alice read');
385
+ expect((_d = aliceReadReply.entries) === null || _d === void 0 ? void 0 : _d.length).to.equal(3, 'alice read records');
386
+ expect(aliceReadReply.entries[0].recordId).to.equal(bobNoteToAlice.message.recordId, 'alice note to carol public');
387
+ expect(aliceReadReply.entries[1].recordId).to.equal(carolNoteToBob.message.recordId, 'carol note to bob public');
388
+ expect(aliceReadReply.entries[2].recordId).to.equal(bobNoteToAlicePrivate.message.recordId, 'bob note to alice private');
389
+ }));
390
+ it('should support querying from multiple recipients', () => __awaiter(void 0, void 0, void 0, function* () {
391
+ var _a, _b, _c, _d;
392
+ // create aggregator DID and install aggregator note protocol
393
+ const aggregator = yield TestDataGenerator.generateDidKeyPersona();
394
+ const aggregatorProtocolConfigure = yield ProtocolsConfigure.create({
395
+ signer: Jws.createSigner(aggregator),
396
+ definition: aggregatorProtocolDefinition,
397
+ });
398
+ const aggregatorProtocolReply = yield dwn.processMessage(aggregator.did, aggregatorProtocolConfigure.message);
399
+ expect(aggregatorProtocolReply.status.code).to.equal(202, 'aggregator configure');
400
+ // create 4 users and install user note protocol
401
+ const alice = yield TestDataGenerator.generateDidKeyPersona();
402
+ const aliceProtocolConfigure = yield ProtocolsConfigure.create({
403
+ signer: Jws.createSigner(alice),
404
+ definition: userProtocolDefinition,
405
+ });
406
+ const aliceProtocolReply = yield dwn.processMessage(alice.did, aliceProtocolConfigure.message);
407
+ expect(aliceProtocolReply.status.code).to.equal(202, 'alice configure');
408
+ const bob = yield TestDataGenerator.generateDidKeyPersona();
409
+ const bobProtocolConfigure = yield ProtocolsConfigure.create({
410
+ signer: Jws.createSigner(bob),
411
+ definition: userProtocolDefinition,
412
+ });
413
+ const bobProtocolReply = yield dwn.processMessage(bob.did, bobProtocolConfigure.message);
414
+ expect(bobProtocolReply.status.code).to.equal(202, 'bob configure');
415
+ const carol = yield TestDataGenerator.generateDidKeyPersona();
416
+ const carolProtocolConfigure = yield ProtocolsConfigure.create({
417
+ signer: Jws.createSigner(carol),
418
+ definition: userProtocolDefinition,
419
+ });
420
+ const carolProtocolReply = yield dwn.processMessage(carol.did, carolProtocolConfigure.message);
421
+ expect(carolProtocolReply.status.code).to.equal(202, 'carol configure');
422
+ const daniel = yield TestDataGenerator.generateDidKeyPersona();
423
+ const danielProtocolConfigure = yield ProtocolsConfigure.create({
424
+ signer: Jws.createSigner(daniel),
425
+ definition: userProtocolDefinition,
426
+ });
427
+ const danielProtocolReply = yield dwn.processMessage(daniel.did, danielProtocolConfigure.message);
428
+ expect(danielProtocolReply.status.code).to.equal(202, 'daniel configure');
429
+ // The aggregator creates member records for alice, bob and carol
430
+ const aliceMemberData = TestDataGenerator.randomBytes(256);
431
+ const aliceMember = yield RecordsWrite.create({
432
+ signer: Jws.createSigner(aggregator),
433
+ recipient: alice.did,
434
+ protocol: userProtocolDefinition.protocol,
435
+ protocolPath: 'member',
436
+ schema: 'https://example.org/member',
437
+ dataFormat: 'application/json',
438
+ data: aliceMemberData,
439
+ });
440
+ const aliceMemberReply = yield dwn.processMessage(aggregator.did, aliceMember.message, { dataStream: DataStream.fromBytes(aliceMemberData) });
441
+ expect(aliceMemberReply.status.code).to.equal(202, 'alice member ' + aliceMemberReply.status.detail);
442
+ const bobMemberData = TestDataGenerator.randomBytes(256);
443
+ const bobMember = yield RecordsWrite.create({
444
+ signer: Jws.createSigner(aggregator),
445
+ recipient: bob.did,
446
+ protocol: userProtocolDefinition.protocol,
447
+ protocolPath: 'member',
448
+ schema: 'https://example.org/member',
449
+ dataFormat: 'application/json',
450
+ data: bobMemberData,
451
+ });
452
+ const bobMemberReply = yield dwn.processMessage(aggregator.did, bobMember.message, { dataStream: DataStream.fromBytes(bobMemberData) });
453
+ expect(bobMemberReply.status.code).to.equal(202, 'bob member');
454
+ const carolMemberData = TestDataGenerator.randomBytes(256);
455
+ const carolMember = yield RecordsWrite.create({
456
+ signer: Jws.createSigner(aggregator),
457
+ recipient: carol.did,
458
+ protocol: userProtocolDefinition.protocol,
459
+ protocolPath: 'member',
460
+ schema: 'https://example.org/member',
461
+ dataFormat: 'application/json',
462
+ data: carolMemberData,
463
+ });
464
+ const carolMemberReply = yield dwn.processMessage(aggregator.did, carolMember.message, { dataStream: DataStream.fromBytes(carolMemberData) });
465
+ expect(carolMemberReply.status.code).to.equal(202, 'carol member');
466
+ // alice writes a public note to carol and posts it in the aggregator
467
+ const aliceNoteData = TestDataGenerator.randomBytes(256);
468
+ const aliceNoteToCarol = yield RecordsWrite.create({
469
+ signer: Jws.createSigner(alice),
470
+ recipient: carol.did,
471
+ published: true,
472
+ protocol: userProtocolDefinition.protocol,
473
+ protocolPath: 'note',
474
+ dataFormat: 'application/json',
475
+ schema: 'https://example.org/note',
476
+ data: aliceNoteData,
477
+ protocolRole: 'member'
478
+ });
479
+ // Alice writes it to her own DWN and the aggregator
480
+ const aliceLocalDWN = yield dwn.processMessage(alice.did, aliceNoteToCarol.message, { dataStream: DataStream.fromBytes(aliceNoteData) });
481
+ expect(aliceLocalDWN.status.code).to.equal(202, 'alice note');
482
+ const aliceAggregatorDWN = yield dwn.processMessage(aggregator.did, aliceNoteToCarol.message, {
483
+ dataStream: DataStream.fromBytes(aliceNoteData)
484
+ });
485
+ expect(aliceAggregatorDWN.status.code).to.equal(202, 'alice note aggregator');
486
+ // bob writes a public note to alice and posts it in the aggregator
487
+ const bobNoteToAliceData = TestDataGenerator.randomBytes(256);
488
+ const bobNoteToAlice = yield RecordsWrite.create({
489
+ signer: Jws.createSigner(bob),
490
+ recipient: alice.did,
491
+ published: true,
492
+ protocol: userProtocolDefinition.protocol,
493
+ protocolPath: 'note',
494
+ dataFormat: 'application/json',
495
+ schema: 'https://example.org/note',
496
+ data: bobNoteToAliceData,
497
+ protocolRole: 'member'
498
+ });
499
+ // Bob writes it to his own DWN and the aggregator
500
+ const bobLocalDWN = yield dwn.processMessage(bob.did, bobNoteToAlice.message, { dataStream: DataStream.fromBytes(bobNoteToAliceData) });
501
+ expect(bobLocalDWN.status.code).to.equal(202, 'bob note');
502
+ const bobAggregatorDWN = yield dwn.processMessage(aggregator.did, bobNoteToAlice.message, {
503
+ dataStream: DataStream.fromBytes(bobNoteToAliceData)
504
+ });
505
+ expect(bobAggregatorDWN.status.code).to.equal(202, 'bob note aggregator');
506
+ // carol writes a public note to bob and posts it in the aggregator
507
+ const carolNoteToBobData = TestDataGenerator.randomBytes(256);
508
+ const carolNoteToBob = yield RecordsWrite.create({
509
+ signer: Jws.createSigner(carol),
510
+ recipient: bob.did,
511
+ published: true,
512
+ protocol: userProtocolDefinition.protocol,
513
+ protocolPath: 'note',
514
+ dataFormat: 'application/json',
515
+ schema: 'https://example.org/note',
516
+ data: carolNoteToBobData,
517
+ protocolRole: 'member'
518
+ });
519
+ // Carol writes it to her own DWN and the aggregator
520
+ const carolLocalDWN = yield dwn.processMessage(carol.did, carolNoteToBob.message, {
521
+ dataStream: DataStream.fromBytes(carolNoteToBobData)
522
+ });
523
+ expect(carolLocalDWN.status.code).to.equal(202, 'carol note');
524
+ const carolAggregatorDWN = yield dwn.processMessage(aggregator.did, carolNoteToBob.message, {
525
+ dataStream: DataStream.fromBytes(carolNoteToBobData)
526
+ });
527
+ expect(carolAggregatorDWN.status.code).to.equal(202, 'carol note aggregator');
528
+ // daniel writes a public note to alice and posts it in the aggregator (which will reject it as he is not a member)
529
+ const danielNoteToAlice = TestDataGenerator.randomBytes(256);
530
+ const danielNote = yield RecordsWrite.create({
531
+ signer: Jws.createSigner(daniel),
532
+ recipient: alice.did,
533
+ published: true,
534
+ protocol: userProtocolDefinition.protocol,
535
+ protocolPath: 'note',
536
+ dataFormat: 'application/json',
537
+ schema: 'https://example.org/note',
538
+ data: danielNoteToAlice,
539
+ protocolRole: 'member'
540
+ });
541
+ // Daniel writes it to his own DWN and the aggregator
542
+ const danielLocalDWN = yield dwn.processMessage(daniel.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
543
+ expect(danielLocalDWN.status.code).to.equal(202, 'daniel note');
544
+ const danielAggregatorDWN = yield dwn.processMessage(aggregator.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
545
+ expect(danielAggregatorDWN.status.code).to.equal(401, 'daniel note aggregator');
546
+ // daniel can read public notes from multiple authors in a single query
547
+ const danielRead = yield RecordsQuery.create({
548
+ signer: Jws.createSigner(daniel),
549
+ filter: {
550
+ protocol: userProtocolDefinition.protocol,
551
+ protocolPath: 'note',
552
+ recipient: [alice.did, carol.did],
553
+ }
554
+ });
555
+ const danielReadReply = yield dwn.processMessage(aggregator.did, danielRead.message);
556
+ expect(danielReadReply.status.code).to.equal(200, 'daniel read');
557
+ expect((_a = danielReadReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(2, 'daniel read records');
558
+ expect(danielReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note');
559
+ expect(danielReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note');
560
+ // create private notes to carol from alice and bob
561
+ const alicePrivateNoteToCarol = TestDataGenerator.randomBytes(256);
562
+ const aliceNoteToCarolPrivate = yield RecordsWrite.create({
563
+ signer: Jws.createSigner(alice),
564
+ recipient: carol.did,
565
+ published: false,
566
+ protocol: userProtocolDefinition.protocol,
567
+ protocolPath: 'note',
568
+ dataFormat: 'application/json',
569
+ schema: 'https://example.org/note',
570
+ data: alicePrivateNoteToCarol,
571
+ protocolRole: 'member'
572
+ });
573
+ const aliceNoteToCarolLocal = yield dwn.processMessage(alice.did, aliceNoteToCarolPrivate.message, {
574
+ dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
575
+ });
576
+ expect(aliceNoteToCarolLocal.status.code).to.equal(202, 'alice private note');
577
+ const aliceNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, aliceNoteToCarolPrivate.message, {
578
+ dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
579
+ });
580
+ expect(aliceNoteToCarolAggregator.status.code).to.equal(202, 'alice private note aggregator');
581
+ const bobPrivateNoteToCarol = TestDataGenerator.randomBytes(256);
582
+ const bobNoteToCarolPrivate = yield RecordsWrite.create({
583
+ signer: Jws.createSigner(bob),
584
+ recipient: carol.did,
585
+ published: false,
586
+ protocol: userProtocolDefinition.protocol,
587
+ protocolPath: 'note',
588
+ dataFormat: 'application/json',
589
+ schema: 'https://example.org/note',
590
+ data: bobPrivateNoteToCarol,
591
+ protocolRole: 'member'
592
+ });
593
+ const bobNoteToCarolLocal = yield dwn.processMessage(bob.did, bobNoteToCarolPrivate.message, {
594
+ dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
595
+ });
596
+ expect(bobNoteToCarolLocal.status.code).to.equal(202, 'bob private note');
597
+ const bobNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, bobNoteToCarolPrivate.message, {
598
+ dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
599
+ });
600
+ expect(bobNoteToCarolAggregator.status.code).to.equal(202, 'bob private note aggregator');
601
+ // create a private note from bob to alice
602
+ const bobNoteToAlicePrivateData = TestDataGenerator.randomBytes(256);
603
+ const bobNoteToAlicePrivate = yield RecordsWrite.create({
604
+ signer: Jws.createSigner(bob),
605
+ recipient: alice.did,
606
+ published: false,
607
+ protocol: userProtocolDefinition.protocol,
608
+ protocolPath: 'note',
609
+ dataFormat: 'application/json',
610
+ schema: 'https://example.org/note',
611
+ data: bobNoteToAlicePrivateData,
612
+ protocolRole: 'member'
613
+ });
614
+ const bobNoteToAliceLocal = yield dwn.processMessage(bob.did, bobNoteToAlicePrivate.message, {
615
+ dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
616
+ });
617
+ expect(bobNoteToAliceLocal.status.code).to.equal(202, 'alice private note to bob');
618
+ const bobNoteToAliceAggregator = yield dwn.processMessage(aggregator.did, bobNoteToAlicePrivate.message, {
619
+ dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
620
+ });
621
+ expect(bobNoteToAliceAggregator.status.code).to.equal(202, 'alice private note to bob aggregator');
622
+ // confirm daniel can still only read the public notes
623
+ const danielRead2 = yield RecordsQuery.create({
624
+ signer: Jws.createSigner(daniel),
625
+ filter: {
626
+ protocol: userProtocolDefinition.protocol,
627
+ protocolPath: 'note',
628
+ recipient: [alice.did, carol.did],
629
+ }
630
+ });
631
+ const danielReadReply2 = yield dwn.processMessage(aggregator.did, danielRead2.message);
632
+ expect(danielReadReply2.status.code).to.equal(200, 'daniel read 2');
633
+ expect((_b = danielReadReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(2, 'daniel read records 2');
634
+ expect(danielReadReply2.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note 2');
635
+ expect(danielReadReply2.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note 2');
636
+ // carol queries for notes from alice and bob and gets the public notes and private notes destined for her
637
+ // carol does not see the private note from alice to bob
638
+ const carolRead = yield RecordsQuery.create({
639
+ signer: Jws.createSigner(carol),
640
+ filter: {
641
+ protocol: userProtocolDefinition.protocol,
642
+ protocolPath: 'note',
643
+ recipient: [alice.did, carol.did],
644
+ }
645
+ });
646
+ const carolReadReply = yield dwn.processMessage(aggregator.did, carolRead.message);
647
+ expect(carolReadReply.status.code).to.equal(200, 'carol read');
648
+ expect((_c = carolReadReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(4, 'carol read records');
649
+ expect(carolReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'carol read alice note');
650
+ expect(carolReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'carol read bob note');
651
+ expect(carolReadReply.entries[2].recordId).to.equal(aliceNoteToCarolPrivate.message.recordId, 'carol read alice private note');
652
+ expect(carolReadReply.entries[3].recordId).to.equal(bobNoteToCarolPrivate.message.recordId, 'carol read bob private note');
653
+ // alice queries for notes from bob and carol and gets the public notes and private notes destined for her
654
+ const aliceRead = yield RecordsQuery.create({
655
+ signer: Jws.createSigner(alice),
656
+ filter: {
657
+ protocol: userProtocolDefinition.protocol,
658
+ protocolPath: 'note',
659
+ recipient: [carol.did, bob.did],
660
+ }
661
+ });
662
+ const aliceReadReply = yield dwn.processMessage(aggregator.did, aliceRead.message);
663
+ expect(aliceReadReply.status.code).to.equal(200, 'alice read');
664
+ expect((_d = aliceReadReply.entries) === null || _d === void 0 ? void 0 : _d.length).to.equal(3, 'alice read records');
665
+ expect(aliceReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'alice note to carol public');
666
+ expect(aliceReadReply.entries[1].recordId).to.equal(carolNoteToBob.message.recordId, 'carol note to bob public');
667
+ expect(aliceReadReply.entries[2].recordId).to.equal(aliceNoteToCarolPrivate.message.recordId, 'alice to carol private');
668
+ }));
669
+ });
670
+ //# sourceMappingURL=aggregator.spec.js.map