@enbox/dwn-sdk-js 0.0.6 → 0.0.8

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 (527) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +762 -911
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/abstract-message.js +4 -0
  6. package/dist/esm/src/core/abstract-message.js.map +1 -1
  7. package/dist/esm/src/core/auth.js +22 -33
  8. package/dist/esm/src/core/auth.js.map +1 -1
  9. package/dist/esm/src/core/constants.js +11 -0
  10. package/dist/esm/src/core/constants.js.map +1 -0
  11. package/dist/esm/src/core/core-protocol.js +44 -0
  12. package/dist/esm/src/core/core-protocol.js.map +1 -0
  13. package/dist/esm/src/core/dwn-constant.js +7 -7
  14. package/dist/esm/src/core/dwn-constant.js.map +1 -1
  15. package/dist/esm/src/core/dwn-error.js +10 -12
  16. package/dist/esm/src/core/dwn-error.js.map +1 -1
  17. package/dist/esm/src/core/grant-authorization.js +50 -52
  18. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  19. package/dist/esm/src/core/message.js +85 -116
  20. package/dist/esm/src/core/message.js.map +1 -1
  21. package/dist/esm/src/core/messages-grant-authorization.js +63 -78
  22. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  23. package/dist/esm/src/core/protocol-authorization-action.js +266 -0
  24. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -0
  25. package/dist/esm/src/core/protocol-authorization-validation.js +321 -0
  26. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
  27. package/dist/esm/src/core/protocol-authorization.js +144 -741
  28. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  29. package/dist/esm/src/core/protocols-grant-authorization.js +24 -38
  30. package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -1
  31. package/dist/esm/src/core/record-chain.js +64 -0
  32. package/dist/esm/src/core/record-chain.js.map +1 -0
  33. package/dist/esm/src/core/records-grant-authorization.js +53 -72
  34. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  35. package/dist/esm/src/core/resumable-task-manager.js +50 -65
  36. package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
  37. package/dist/esm/src/core/tenant-gate.js +2 -13
  38. package/dist/esm/src/core/tenant-gate.js.map +1 -1
  39. package/dist/esm/src/dwn.js +108 -101
  40. package/dist/esm/src/dwn.js.map +1 -1
  41. package/dist/esm/src/event-stream/event-emitter-event-log.js +204 -0
  42. package/dist/esm/src/event-stream/event-emitter-event-log.js.map +1 -0
  43. package/dist/esm/src/handlers/messages-read.js +67 -81
  44. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  45. package/dist/esm/src/handlers/messages-subscribe.js +51 -63
  46. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  47. package/dist/esm/src/handlers/messages-sync.js +75 -89
  48. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  49. package/dist/esm/src/handlers/protocols-configure.js +153 -163
  50. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  51. package/dist/esm/src/handlers/protocols-query.js +52 -55
  52. package/dist/esm/src/handlers/protocols-query.js.map +1 -1
  53. package/dist/esm/src/handlers/records-count.js +97 -85
  54. package/dist/esm/src/handlers/records-count.js.map +1 -1
  55. package/dist/esm/src/handlers/records-delete.js +75 -93
  56. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  57. package/dist/esm/src/handlers/records-query.js +116 -105
  58. package/dist/esm/src/handlers/records-query.js.map +1 -1
  59. package/dist/esm/src/handlers/records-read.js +130 -132
  60. package/dist/esm/src/handlers/records-read.js.map +1 -1
  61. package/dist/esm/src/handlers/records-subscribe.js +164 -104
  62. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  63. package/dist/esm/src/handlers/records-write.js +213 -280
  64. package/dist/esm/src/handlers/records-write.js.map +1 -1
  65. package/dist/esm/src/index.js +5 -2
  66. package/dist/esm/src/index.js.map +1 -1
  67. package/dist/esm/src/interfaces/messages-read.js +24 -32
  68. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  69. package/dist/esm/src/interfaces/messages-subscribe.js +28 -41
  70. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  71. package/dist/esm/src/interfaces/messages-sync.js +26 -40
  72. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  73. package/dist/esm/src/interfaces/protocols-configure.js +87 -65
  74. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  75. package/dist/esm/src/interfaces/protocols-query.js +55 -68
  76. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  77. package/dist/esm/src/interfaces/records-count.js +50 -66
  78. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  79. package/dist/esm/src/interfaces/records-delete.js +45 -55
  80. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  81. package/dist/esm/src/interfaces/records-query.js +60 -76
  82. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  83. package/dist/esm/src/interfaces/records-read.js +51 -67
  84. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  85. package/dist/esm/src/interfaces/records-subscribe.js +53 -68
  86. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  87. package/dist/esm/src/interfaces/records-write-query.js +102 -0
  88. package/dist/esm/src/interfaces/records-write-query.js.map +1 -0
  89. package/dist/esm/src/interfaces/records-write-signing.js +81 -0
  90. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
  91. package/dist/esm/src/interfaces/records-write.js +396 -610
  92. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  93. package/dist/esm/src/jose/algorithms/signing/ed25519.js +10 -19
  94. package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -1
  95. package/dist/esm/src/jose/jws/general/builder.js +23 -35
  96. package/dist/esm/src/jose/jws/general/builder.js.map +1 -1
  97. package/dist/esm/src/jose/jws/general/verifier.js +56 -69
  98. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  99. package/dist/esm/src/protocols/permission-grant.js +43 -14
  100. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  101. package/dist/esm/src/protocols/permission-request.js +28 -14
  102. package/dist/esm/src/protocols/permission-request.js.map +1 -1
  103. package/dist/esm/src/protocols/permissions.js +325 -227
  104. package/dist/esm/src/protocols/permissions.js.map +1 -1
  105. package/dist/esm/src/smt/smt-store-level.js +42 -64
  106. package/dist/esm/src/smt/smt-store-level.js.map +1 -1
  107. package/dist/esm/src/smt/smt-store-memory.js +19 -45
  108. package/dist/esm/src/smt/smt-store-memory.js.map +1 -1
  109. package/dist/esm/src/smt/smt-utils.js +28 -45
  110. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  111. package/dist/esm/src/smt/sparse-merkle-tree.js +426 -471
  112. package/dist/esm/src/smt/sparse-merkle-tree.js.map +1 -1
  113. package/dist/esm/src/state-index/state-index-level.js +113 -150
  114. package/dist/esm/src/state-index/state-index-level.js.map +1 -1
  115. package/dist/esm/src/store/blockstore-level.js +54 -156
  116. package/dist/esm/src/store/blockstore-level.js.map +1 -1
  117. package/dist/esm/src/store/blockstore-mock.js +48 -153
  118. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  119. package/dist/esm/src/store/data-store-level.js +137 -100
  120. package/dist/esm/src/store/data-store-level.js.map +1 -1
  121. package/dist/esm/src/store/index-level-compound.js +246 -0
  122. package/dist/esm/src/store/index-level-compound.js.map +1 -0
  123. package/dist/esm/src/store/index-level.js +307 -715
  124. package/dist/esm/src/store/index-level.js.map +1 -1
  125. package/dist/esm/src/store/level-wrapper.js +143 -244
  126. package/dist/esm/src/store/level-wrapper.js.map +1 -1
  127. package/dist/esm/src/store/message-store-level.js +71 -94
  128. package/dist/esm/src/store/message-store-level.js.map +1 -1
  129. package/dist/esm/src/store/resumable-task-store-level.js +62 -101
  130. package/dist/esm/src/store/resumable-task-store-level.js.map +1 -1
  131. package/dist/esm/src/store/storage-controller.js +131 -146
  132. package/dist/esm/src/store/storage-controller.js.map +1 -1
  133. package/dist/esm/src/types/permission-types.js.map +1 -1
  134. package/dist/esm/src/types/protocols-types.js +10 -0
  135. package/dist/esm/src/types/protocols-types.js.map +1 -1
  136. package/dist/esm/src/types/records-types.js.map +1 -1
  137. package/dist/esm/src/utils/abort.js +8 -19
  138. package/dist/esm/src/utils/abort.js.map +1 -1
  139. package/dist/esm/src/utils/array.js +15 -49
  140. package/dist/esm/src/utils/array.js.map +1 -1
  141. package/dist/esm/src/utils/cid.js +29 -77
  142. package/dist/esm/src/utils/cid.js.map +1 -1
  143. package/dist/esm/src/utils/data-stream.js +37 -65
  144. package/dist/esm/src/utils/data-stream.js.map +1 -1
  145. package/dist/esm/src/utils/encryption.js +136 -162
  146. package/dist/esm/src/utils/encryption.js.map +1 -1
  147. package/dist/esm/src/utils/filter.js +1 -12
  148. package/dist/esm/src/utils/filter.js.map +1 -1
  149. package/dist/esm/src/utils/hd-key.js +45 -71
  150. package/dist/esm/src/utils/hd-key.js.map +1 -1
  151. package/dist/esm/src/utils/jws.js +9 -20
  152. package/dist/esm/src/utils/jws.js.map +1 -1
  153. package/dist/esm/src/utils/memory-cache.js +12 -23
  154. package/dist/esm/src/utils/memory-cache.js.map +1 -1
  155. package/dist/esm/src/utils/messages.js +21 -33
  156. package/dist/esm/src/utils/messages.js.map +1 -1
  157. package/dist/esm/src/utils/private-key-signer.js +9 -17
  158. package/dist/esm/src/utils/private-key-signer.js.map +1 -1
  159. package/dist/esm/src/utils/protocols.js +62 -70
  160. package/dist/esm/src/utils/protocols.js.map +1 -1
  161. package/dist/esm/src/utils/records.js +103 -166
  162. package/dist/esm/src/utils/records.js.map +1 -1
  163. package/dist/esm/src/utils/secp256k1.js +60 -96
  164. package/dist/esm/src/utils/secp256k1.js.map +1 -1
  165. package/dist/esm/src/utils/secp256r1.js +54 -71
  166. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  167. package/dist/esm/src/utils/time.js +5 -18
  168. package/dist/esm/src/utils/time.js.map +1 -1
  169. package/dist/esm/src/utils/url.js +3 -3
  170. package/dist/esm/src/utils/url.js.map +1 -1
  171. package/dist/esm/tests/core/auth.spec.js +3 -12
  172. package/dist/esm/tests/core/auth.spec.js.map +1 -1
  173. package/dist/esm/tests/core/message.spec.js +50 -59
  174. package/dist/esm/tests/core/message.spec.js.map +1 -1
  175. package/dist/esm/tests/core/protocol-authorization.spec.js +10 -18
  176. package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
  177. package/dist/esm/tests/dwn.spec.js +65 -89
  178. package/dist/esm/tests/dwn.spec.js.map +1 -1
  179. package/dist/esm/tests/event-emitter-event-log.spec.js +305 -0
  180. package/dist/esm/tests/event-emitter-event-log.spec.js.map +1 -0
  181. package/dist/esm/tests/features/author-delegated-grant.spec.js +337 -347
  182. package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
  183. package/dist/esm/tests/features/owner-delegated-grant.spec.js +160 -172
  184. package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
  185. package/dist/esm/tests/features/owner-signature.spec.js +78 -82
  186. package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
  187. package/dist/esm/tests/features/permissions.spec.js +449 -184
  188. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  189. package/dist/esm/tests/features/protocol-composition.spec.js +981 -360
  190. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  191. package/dist/esm/tests/features/protocol-create-action.spec.js +45 -54
  192. package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
  193. package/dist/esm/tests/features/protocol-delete-action.spec.js +99 -108
  194. package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
  195. package/dist/esm/tests/features/protocol-update-action.spec.js +108 -117
  196. package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
  197. package/dist/esm/tests/features/records-immutable.spec.js +315 -0
  198. package/dist/esm/tests/features/records-immutable.spec.js.map +1 -0
  199. package/dist/esm/tests/features/records-prune.spec.js +178 -194
  200. package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
  201. package/dist/esm/tests/features/records-record-limit.spec.js +542 -0
  202. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -0
  203. package/dist/esm/tests/features/records-tags.spec.js +456 -463
  204. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  205. package/dist/esm/tests/features/resumable-tasks.spec.js +88 -98
  206. package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
  207. package/dist/esm/tests/handlers/messages-read.spec.js +215 -210
  208. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  209. package/dist/esm/tests/handlers/messages-subscribe.spec.js +309 -171
  210. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  211. package/dist/esm/tests/handlers/messages-sync.spec.js +272 -199
  212. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  213. package/dist/esm/tests/handlers/protocols-configure.spec.js +247 -241
  214. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  215. package/dist/esm/tests/handlers/protocols-query.spec.js +159 -172
  216. package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
  217. package/dist/esm/tests/handlers/records-count.spec.js +101 -105
  218. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  219. package/dist/esm/tests/handlers/records-delete.spec.js +266 -279
  220. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  221. package/dist/esm/tests/handlers/records-query.spec.js +984 -996
  222. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  223. package/dist/esm/tests/handlers/records-read.spec.js +542 -671
  224. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  225. package/dist/esm/tests/handlers/records-subscribe.spec.js +433 -302
  226. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  227. package/dist/esm/tests/handlers/records-write.spec.js +1216 -1140
  228. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  229. package/dist/esm/tests/interfaces/messages-get.spec.js +39 -48
  230. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  231. package/dist/esm/tests/interfaces/messages-subscribe.spec.js +4 -13
  232. package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -1
  233. package/dist/esm/tests/interfaces/protocols-configure.spec.js +212 -88
  234. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  235. package/dist/esm/tests/interfaces/protocols-query.spec.js +8 -17
  236. package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -1
  237. package/dist/esm/tests/interfaces/records-delete.spec.js +8 -17
  238. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  239. package/dist/esm/tests/interfaces/records-query.spec.js +20 -29
  240. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  241. package/dist/esm/tests/interfaces/records-read.spec.js +42 -51
  242. package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -1
  243. package/dist/esm/tests/interfaces/records-subscribe.spec.js +16 -25
  244. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  245. package/dist/esm/tests/interfaces/records-write.spec.js +190 -219
  246. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  247. package/dist/esm/tests/jose/jws/general.spec.js +36 -45
  248. package/dist/esm/tests/jose/jws/general.spec.js.map +1 -1
  249. package/dist/esm/tests/protocols/permission-grant.spec.js +44 -50
  250. package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
  251. package/dist/esm/tests/protocols/permission-request.spec.js +23 -32
  252. package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
  253. package/dist/esm/tests/protocols/permissions.spec.js +49 -55
  254. package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
  255. package/dist/esm/tests/scenarios/aggregator.spec.js +127 -138
  256. package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
  257. package/dist/esm/tests/scenarios/deleted-record.spec.js +372 -36
  258. package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
  259. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +55 -64
  260. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  261. package/dist/esm/tests/scenarios/nested-roles.spec.js +66 -76
  262. package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
  263. package/dist/esm/tests/scenarios/subscriptions.spec.js +451 -354
  264. package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
  265. package/dist/esm/tests/smt/smt-store-level.spec.js +76 -87
  266. package/dist/esm/tests/smt/smt-store-level.spec.js.map +1 -1
  267. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js +344 -353
  268. package/dist/esm/tests/smt/sparse-merkle-tree.spec.js.map +1 -1
  269. package/dist/esm/tests/state-index/state-index-level.spec.js +117 -126
  270. package/dist/esm/tests/state-index/state-index-level.spec.js.map +1 -1
  271. package/dist/esm/tests/store/blockstore-level.spec.js +44 -99
  272. package/dist/esm/tests/store/blockstore-level.spec.js.map +1 -1
  273. package/dist/esm/tests/store/blockstore-mock.spec.js +40 -120
  274. package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -1
  275. package/dist/esm/tests/store/data-store-level.spec.js +160 -108
  276. package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
  277. package/dist/esm/tests/store/index-level.spec.js +404 -414
  278. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  279. package/dist/esm/tests/store/message-store-level.spec.js +13 -22
  280. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  281. package/dist/esm/tests/store/message-store.spec.js +229 -238
  282. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  283. package/dist/esm/tests/test-event-stream.js +12 -13
  284. package/dist/esm/tests/test-event-stream.js.map +1 -1
  285. package/dist/esm/tests/test-stores.js +16 -13
  286. package/dist/esm/tests/test-stores.js.map +1 -1
  287. package/dist/esm/tests/test-suite.js +8 -15
  288. package/dist/esm/tests/test-suite.js.map +1 -1
  289. package/dist/esm/tests/utils/cid.spec.js +24 -33
  290. package/dist/esm/tests/utils/cid.spec.js.map +1 -1
  291. package/dist/esm/tests/utils/data-stream.spec.js +48 -57
  292. package/dist/esm/tests/utils/data-stream.spec.js.map +1 -1
  293. package/dist/esm/tests/utils/encryption-callbacks.spec.js +45 -54
  294. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  295. package/dist/esm/tests/utils/encryption.spec.js +229 -82
  296. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  297. package/dist/esm/tests/utils/filters.spec.js +46 -55
  298. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  299. package/dist/esm/tests/utils/hd-key.spec.js +10 -19
  300. package/dist/esm/tests/utils/hd-key.spec.js.map +1 -1
  301. package/dist/esm/tests/utils/jws.spec.js +3 -12
  302. package/dist/esm/tests/utils/jws.spec.js.map +1 -1
  303. package/dist/esm/tests/utils/memory-cache.spec.js +9 -18
  304. package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -1
  305. package/dist/esm/tests/utils/messages.spec.js +18 -20
  306. package/dist/esm/tests/utils/messages.spec.js.map +1 -1
  307. package/dist/esm/tests/utils/poller.js +22 -33
  308. package/dist/esm/tests/utils/poller.js.map +1 -1
  309. package/dist/esm/tests/utils/private-key-signer.spec.js +15 -24
  310. package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -1
  311. package/dist/esm/tests/utils/records.spec.js +14 -27
  312. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  313. package/dist/esm/tests/utils/secp256k1.spec.js +16 -25
  314. package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -1
  315. package/dist/esm/tests/utils/secp256r1.spec.js +18 -27
  316. package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -1
  317. package/dist/esm/tests/utils/test-data-generator.js +446 -467
  318. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  319. package/dist/esm/tests/validation/json-schemas/definitions.spec.js +2 -11
  320. package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -1
  321. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +4 -13
  322. package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -1
  323. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +8 -17
  324. package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -1
  325. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +3 -12
  326. package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -1
  327. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +4 -13
  328. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  329. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +2 -11
  330. package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -1
  331. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js +2 -11
  332. package/dist/esm/tests/validation/json-schemas/records/records-read.spec.js.map +1 -1
  333. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +44 -24
  334. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  335. package/dist/types/generated/precompiled-validators.d.ts +49 -40
  336. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  337. package/dist/types/src/core/constants.d.ts +11 -0
  338. package/dist/types/src/core/constants.d.ts.map +1 -0
  339. package/dist/types/src/core/core-protocol.d.ts +89 -0
  340. package/dist/types/src/core/core-protocol.d.ts.map +1 -0
  341. package/dist/types/src/core/dwn-error.d.ts +9 -12
  342. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  343. package/dist/types/src/core/grant-authorization.d.ts +6 -2
  344. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  345. package/dist/types/src/core/protocol-authorization-action.d.ts +42 -0
  346. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -0
  347. package/dist/types/src/core/protocol-authorization-validation.d.ts +81 -0
  348. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
  349. package/dist/types/src/core/protocol-authorization.d.ts +24 -106
  350. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  351. package/dist/types/src/core/record-chain.d.ts +24 -0
  352. package/dist/types/src/core/record-chain.d.ts.map +1 -0
  353. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  354. package/dist/types/src/dwn.d.ts +19 -7
  355. package/dist/types/src/dwn.d.ts.map +1 -1
  356. package/dist/types/src/event-stream/event-emitter-event-log.d.ts +50 -0
  357. package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +1 -0
  358. package/dist/types/src/handlers/messages-read.d.ts +3 -8
  359. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  360. package/dist/types/src/handlers/messages-subscribe.d.ts +6 -10
  361. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  362. package/dist/types/src/handlers/messages-sync.d.ts +3 -8
  363. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  364. package/dist/types/src/handlers/protocols-configure.d.ts +3 -10
  365. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  366. package/dist/types/src/handlers/protocols-query.d.ts +3 -8
  367. package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
  368. package/dist/types/src/handlers/records-count.d.ts +3 -6
  369. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  370. package/dist/types/src/handlers/records-delete.d.ts +3 -8
  371. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  372. package/dist/types/src/handlers/records-query.d.ts +3 -8
  373. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  374. package/dist/types/src/handlers/records-read.d.ts +3 -8
  375. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  376. package/dist/types/src/handlers/records-subscribe.d.ts +8 -10
  377. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  378. package/dist/types/src/handlers/records-write.d.ts +4 -24
  379. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  380. package/dist/types/src/index.d.ts +8 -4
  381. package/dist/types/src/index.d.ts.map +1 -1
  382. package/dist/types/src/interfaces/messages-subscribe.d.ts +5 -0
  383. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  384. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  385. package/dist/types/src/interfaces/records-subscribe.d.ts +5 -0
  386. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  387. package/dist/types/src/interfaces/records-write-query.d.ts +33 -0
  388. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -0
  389. package/dist/types/src/interfaces/records-write-signing.d.ts +34 -0
  390. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
  391. package/dist/types/src/interfaces/records-write.d.ts +13 -53
  392. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  393. package/dist/types/src/protocols/permission-grant.d.ts +1 -1
  394. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  395. package/dist/types/src/protocols/permission-request.d.ts +1 -1
  396. package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
  397. package/dist/types/src/protocols/permissions.d.ts +40 -3
  398. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  399. package/dist/types/src/state-index/state-index-level.d.ts.map +1 -1
  400. package/dist/types/src/store/data-store-level.d.ts +20 -4
  401. package/dist/types/src/store/data-store-level.d.ts.map +1 -1
  402. package/dist/types/src/store/index-level-compound.d.ts +70 -0
  403. package/dist/types/src/store/index-level-compound.d.ts.map +1 -0
  404. package/dist/types/src/store/index-level.d.ts +4 -58
  405. package/dist/types/src/store/index-level.d.ts.map +1 -1
  406. package/dist/types/src/store/storage-controller.d.ts +4 -4
  407. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  408. package/dist/types/src/types/message-types.d.ts +3 -3
  409. package/dist/types/src/types/message-types.d.ts.map +1 -1
  410. package/dist/types/src/types/messages-types.d.ts +12 -3
  411. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  412. package/dist/types/src/types/method-handler.d.ts +24 -3
  413. package/dist/types/src/types/method-handler.d.ts.map +1 -1
  414. package/dist/types/src/types/permission-types.d.ts +7 -0
  415. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  416. package/dist/types/src/types/protocols-types.d.ts +41 -1
  417. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  418. package/dist/types/src/types/records-types.d.ts +16 -6
  419. package/dist/types/src/types/records-types.d.ts.map +1 -1
  420. package/dist/types/src/types/subscriptions.d.ts +151 -13
  421. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  422. package/dist/types/src/utils/hd-key.d.ts +1 -9
  423. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  424. package/dist/types/src/utils/messages.d.ts +7 -5
  425. package/dist/types/src/utils/messages.d.ts.map +1 -1
  426. package/dist/types/src/utils/protocols.d.ts +5 -0
  427. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  428. package/dist/types/src/utils/records.d.ts +1 -11
  429. package/dist/types/src/utils/records.d.ts.map +1 -1
  430. package/dist/types/tests/dwn.spec.d.ts.map +1 -1
  431. package/dist/types/tests/event-emitter-event-log.spec.d.ts +2 -0
  432. package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +1 -0
  433. package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
  434. package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
  435. package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
  436. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  437. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  438. package/dist/types/tests/features/records-immutable.spec.d.ts +2 -0
  439. package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -0
  440. package/dist/types/tests/features/records-record-limit.spec.d.ts +2 -0
  441. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -0
  442. package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
  443. package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
  444. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  445. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  446. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  447. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  448. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  449. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  450. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  451. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  452. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  453. package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
  454. package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
  455. package/dist/types/tests/test-event-stream.d.ts +11 -12
  456. package/dist/types/tests/test-event-stream.d.ts.map +1 -1
  457. package/dist/types/tests/test-suite.d.ts +2 -2
  458. package/dist/types/tests/test-suite.d.ts.map +1 -1
  459. package/dist/types/tests/utils/test-data-generator.d.ts +18 -0
  460. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  461. package/package.json +5 -4
  462. package/src/core/constants.ts +11 -0
  463. package/src/core/core-protocol.ts +129 -0
  464. package/src/core/dwn-error.ts +15 -12
  465. package/src/core/grant-authorization.ts +20 -3
  466. package/src/core/protocol-authorization-action.ts +377 -0
  467. package/src/core/protocol-authorization-validation.ts +487 -0
  468. package/src/core/protocol-authorization.ts +111 -856
  469. package/src/core/record-chain.ts +99 -0
  470. package/src/core/records-grant-authorization.ts +6 -8
  471. package/src/dwn.ts +58 -73
  472. package/src/event-stream/event-emitter-event-log.ts +283 -0
  473. package/src/handlers/messages-read.ts +8 -9
  474. package/src/handlers/messages-subscribe.ts +24 -28
  475. package/src/handlers/messages-sync.ts +10 -16
  476. package/src/handlers/protocols-configure.ts +47 -32
  477. package/src/handlers/protocols-query.ts +6 -9
  478. package/src/handlers/records-count.ts +11 -10
  479. package/src/handlers/records-delete.ts +12 -21
  480. package/src/handlers/records-query.ts +12 -12
  481. package/src/handlers/records-read.ts +34 -22
  482. package/src/handlers/records-subscribe.ts +47 -26
  483. package/src/handlers/records-write.ts +47 -104
  484. package/src/index.ts +9 -5
  485. package/src/interfaces/messages-subscribe.ts +7 -1
  486. package/src/interfaces/protocols-configure.ts +73 -8
  487. package/src/interfaces/records-count.ts +1 -1
  488. package/src/interfaces/records-delete.ts +1 -1
  489. package/src/interfaces/records-query.ts +1 -1
  490. package/src/interfaces/records-read.ts +1 -1
  491. package/src/interfaces/records-subscribe.ts +8 -1
  492. package/src/interfaces/records-write-query.ts +139 -0
  493. package/src/interfaces/records-write-signing.ts +123 -0
  494. package/src/interfaces/records-write.ts +66 -261
  495. package/src/protocols/permission-grant.ts +1 -1
  496. package/src/protocols/permission-request.ts +1 -1
  497. package/src/protocols/permissions.ts +148 -6
  498. package/src/state-index/state-index-level.ts +5 -7
  499. package/src/store/data-store-level.ts +124 -34
  500. package/src/store/index-level-compound.ts +324 -0
  501. package/src/store/index-level.ts +68 -341
  502. package/src/store/storage-controller.ts +11 -11
  503. package/src/types/message-types.ts +3 -3
  504. package/src/types/messages-types.ts +12 -3
  505. package/src/types/method-handler.ts +26 -4
  506. package/src/types/mitt.d.ts +28 -0
  507. package/src/types/permission-types.ts +7 -0
  508. package/src/types/protocols-types.ts +46 -0
  509. package/src/types/records-types.ts +16 -6
  510. package/src/types/subscriptions.ts +178 -14
  511. package/src/utils/hd-key.ts +0 -9
  512. package/src/utils/messages.ts +17 -37
  513. package/src/utils/protocols.ts +8 -0
  514. package/src/utils/records.ts +8 -59
  515. package/dist/esm/src/event-stream/event-emitter-stream.js +0 -60
  516. package/dist/esm/src/event-stream/event-emitter-stream.js.map +0 -1
  517. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +0 -77
  518. package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +0 -1
  519. package/dist/esm/tests/event-stream/event-stream.spec.js +0 -123
  520. package/dist/esm/tests/event-stream/event-stream.spec.js.map +0 -1
  521. package/dist/types/src/event-stream/event-emitter-stream.d.ts +0 -23
  522. package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +0 -1
  523. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts +0 -2
  524. package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +0 -1
  525. package/dist/types/tests/event-stream/event-stream.spec.d.ts +0 -2
  526. package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +0 -1
  527. package/src/event-stream/event-emitter-stream.ts +0 -69
@@ -1,12 +1,3 @@
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
1
  import * as cbor from '@ipld/dag-cbor';
11
2
  import { CID } from 'multiformats/cid';
12
3
  import { DataStream } from '../../src/utils/data-stream.js';
@@ -34,6 +25,22 @@ import { X25519 } from '@enbox/crypto';
34
25
  import { ContentEncryptionAlgorithm, Encryption } from '../../src/utils/encryption.js';
35
26
  import { DwnInterfaceName, DwnMethodName } from '../../src/enums/dwn-interface-method.js';
36
27
  import { HdKey, KeyDerivationScheme } from '../../src/utils/hd-key.js';
28
+ /**
29
+ * Protocol definition that matches the defaults used by `TestDataGenerator.generateRecordsWrite()`:
30
+ * `protocol: 'http://test-protocol.xyz'`, `protocolPath: 'testRecord'`.
31
+ *
32
+ * Install via `TestDataGenerator.installDefaultTestProtocol(dwn, persona)`.
33
+ */
34
+ export const defaultTestProtocolDefinition = {
35
+ protocol: 'http://test-protocol.xyz',
36
+ published: false,
37
+ types: {
38
+ testRecord: {}
39
+ },
40
+ structure: {
41
+ testRecord: {}
42
+ }
43
+ };
37
44
  /**
38
45
  * Utility class for generating data for testing.
39
46
  */
@@ -41,143 +48,146 @@ export class TestDataGenerator {
41
48
  /**
42
49
  * Generates a persona.
43
50
  */
44
- static generatePersona(input) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- var _a, _b;
47
- // generate DID if not given
48
- let did = input === null || input === void 0 ? void 0 : input.did;
49
- if (!did) {
50
- const didSuffix = TestDataGenerator.randomString(32);
51
- did = `did:example:${didSuffix}`;
52
- }
53
- // generate persona key ID if not given
54
- const keyIdSuffix = TestDataGenerator.randomString(10);
55
- const keyId = (_a = input === null || input === void 0 ? void 0 : input.keyId) !== null && _a !== void 0 ? _a : `${did}#${keyIdSuffix}`;
56
- // generate persona signing key pair if not given (secp256k1 for ES256K signatures)
57
- const keyPair = (_b = input === null || input === void 0 ? void 0 : input.keyPair) !== null && _b !== void 0 ? _b : yield Secp256k1.generateKeyPair();
58
- // generate persona encryption key pair if not given (X25519 for ECDH-ES key agreement)
59
- let encryptionKeyPair = input === null || input === void 0 ? void 0 : input.encryptionKeyPair;
60
- if (!encryptionKeyPair) {
61
- const encPrivateKey = yield X25519.generateKey();
62
- const encPublicKey = yield X25519.getPublicKey({ key: encPrivateKey });
63
- encryptionKeyPair = {
64
- publicJwk: encPublicKey,
65
- privateJwk: encPrivateKey,
66
- };
67
- }
68
- const persona = {
69
- did,
70
- keyId,
71
- keyPair,
72
- encryptionKeyPair,
73
- signer: new PrivateKeySigner({
74
- privateJwk: keyPair.privateJwk,
75
- algorithm: keyPair.privateJwk.alg,
76
- keyId: `${did}#${keyId}`,
77
- })
51
+ static async generatePersona(input) {
52
+ // generate DID if not given
53
+ let did = input?.did;
54
+ if (!did) {
55
+ const didSuffix = TestDataGenerator.randomString(32);
56
+ did = `did:example:${didSuffix}`;
57
+ }
58
+ // generate persona key ID if not given
59
+ const keyIdSuffix = TestDataGenerator.randomString(10);
60
+ const keyId = input?.keyId ?? `${did}#${keyIdSuffix}`;
61
+ // generate persona signing key pair if not given (secp256k1 for ES256K signatures)
62
+ const keyPair = input?.keyPair ?? await Secp256k1.generateKeyPair();
63
+ // generate persona encryption key pair if not given (X25519 for ECDH-ES key agreement)
64
+ let encryptionKeyPair = input?.encryptionKeyPair;
65
+ if (!encryptionKeyPair) {
66
+ const encPrivateKey = await X25519.generateKey();
67
+ const encPublicKey = await X25519.getPublicKey({ key: encPrivateKey });
68
+ encryptionKeyPair = {
69
+ publicJwk: encPublicKey,
70
+ privateJwk: encPrivateKey,
78
71
  };
79
- return persona;
72
+ }
73
+ const persona = {
74
+ did,
75
+ keyId,
76
+ keyPair,
77
+ encryptionKeyPair,
78
+ signer: new PrivateKeySigner({
79
+ privateJwk: keyPair.privateJwk,
80
+ algorithm: keyPair.privateJwk.alg,
81
+ keyId: `${did}#${keyId}`,
82
+ })
83
+ };
84
+ return persona;
85
+ }
86
+ /**
87
+ * Installs the default test protocol (`http://test-protocol.xyz` with `testRecord` type)
88
+ * on the given DWN for the given persona. Call this before processing any RecordsWrite
89
+ * created with `generateRecordsWrite()` that uses the default protocol.
90
+ */
91
+ static async installDefaultTestProtocol(dwn, persona) {
92
+ const protocolsConfigure = await ProtocolsConfigure.create({
93
+ definition: defaultTestProtocolDefinition,
94
+ signer: Jws.createSigner(persona),
80
95
  });
96
+ const reply = await dwn.processMessage(persona.did, protocolsConfigure.message);
97
+ if (reply.status.code !== 202) {
98
+ throw new Error(`Failed to install default test protocol: ${reply.status.code} ${reply.status.detail}`);
99
+ }
81
100
  }
82
101
  /**
83
102
  * Generates a ProtocolsConfigure message for testing.
84
103
  * Optional parameters are generated if not given.
85
104
  * Implementation currently uses `ProtocolsConfigure.create()`.
86
105
  */
87
- static generateProtocolsConfigure(input) {
88
- return __awaiter(this, void 0, void 0, function* () {
89
- var _a, _b;
90
- const author = (_a = input === null || input === void 0 ? void 0 : input.author) !== null && _a !== void 0 ? _a : yield TestDataGenerator.generatePersona();
91
- // generate protocol types and definition if not given
92
- let definition = input === null || input === void 0 ? void 0 : input.protocolDefinition;
93
- if (!definition) {
94
- const generatedLabel = 'record' + TestDataGenerator.randomString(10);
95
- definition = {
96
- protocol: TestDataGenerator.randomString(20),
97
- published: (_b = input === null || input === void 0 ? void 0 : input.published) !== null && _b !== void 0 ? _b : false,
98
- types: {},
99
- structure: {}
100
- };
101
- definition.types[generatedLabel] = {
102
- schema: `test-object`,
103
- dataFormats: ['text/plain']
104
- };
105
- definition.structure[generatedLabel] = {};
106
- }
107
- const signer = Jws.createSigner(author);
108
- const options = {
109
- messageTimestamp: input === null || input === void 0 ? void 0 : input.messageTimestamp,
110
- definition,
111
- signer,
112
- permissionGrantId: input === null || input === void 0 ? void 0 : input.permissionGrantId,
113
- delegatedGrant: input === null || input === void 0 ? void 0 : input.delegatedGrant
106
+ static async generateProtocolsConfigure(input) {
107
+ const author = input?.author ?? await TestDataGenerator.generatePersona();
108
+ // generate protocol types and definition if not given
109
+ let definition = input?.protocolDefinition;
110
+ if (!definition) {
111
+ const generatedLabel = 'record' + TestDataGenerator.randomString(10);
112
+ definition = {
113
+ protocol: TestDataGenerator.randomString(20),
114
+ published: input?.published ?? false,
115
+ types: {},
116
+ structure: {}
114
117
  };
115
- const protocolsConfigure = yield ProtocolsConfigure.create(options);
116
- return {
117
- author,
118
- message: protocolsConfigure.message,
119
- protocolsConfigure
118
+ definition.types[generatedLabel] = {
119
+ schema: `test-object`,
120
+ dataFormats: ['text/plain']
120
121
  };
121
- });
122
+ definition.structure[generatedLabel] = {};
123
+ }
124
+ const signer = Jws.createSigner(author);
125
+ const options = {
126
+ messageTimestamp: input?.messageTimestamp,
127
+ definition,
128
+ signer,
129
+ permissionGrantId: input?.permissionGrantId,
130
+ delegatedGrant: input?.delegatedGrant
131
+ };
132
+ const protocolsConfigure = await ProtocolsConfigure.create(options);
133
+ return {
134
+ author,
135
+ message: protocolsConfigure.message,
136
+ protocolsConfigure
137
+ };
122
138
  }
123
139
  ;
124
140
  /**
125
141
  * Generates a ProtocolsQuery message for testing.
126
142
  */
127
- static generateProtocolsQuery(input) {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- var _a;
130
- // generate author persona if not given
131
- const author = (_a = input === null || input === void 0 ? void 0 : input.author) !== null && _a !== void 0 ? _a : yield TestDataGenerator.generatePersona();
132
- const signer = Jws.createSigner(author);
133
- const options = {
134
- messageTimestamp: input === null || input === void 0 ? void 0 : input.messageTimestamp,
135
- filter: input === null || input === void 0 ? void 0 : input.filter,
136
- signer,
137
- permissionGrantId: input === null || input === void 0 ? void 0 : input.permissionGrantId,
138
- };
139
- removeUndefinedProperties(options);
140
- const protocolsQuery = yield ProtocolsQuery.create(options);
141
- return {
142
- author,
143
- message: protocolsQuery.message,
144
- protocolsQuery
145
- };
146
- });
143
+ static async generateProtocolsQuery(input) {
144
+ // generate author persona if not given
145
+ const author = input?.author ?? await TestDataGenerator.generatePersona();
146
+ const signer = Jws.createSigner(author);
147
+ const options = {
148
+ messageTimestamp: input?.messageTimestamp,
149
+ filter: input?.filter,
150
+ signer,
151
+ permissionGrantId: input?.permissionGrantId,
152
+ };
153
+ removeUndefinedProperties(options);
154
+ const protocolsQuery = await ProtocolsQuery.create(options);
155
+ return {
156
+ author,
157
+ message: protocolsQuery.message,
158
+ protocolsQuery
159
+ };
147
160
  }
148
161
  ;
149
- static generateGrantCreate(input) {
150
- return __awaiter(this, void 0, void 0, function* () {
151
- var _a, _b, _c, _d, _e, _f;
152
- const author = (_a = input === null || input === void 0 ? void 0 : input.author) !== null && _a !== void 0 ? _a : yield TestDataGenerator.generatePersona();
153
- const grantedToPersona = (_b = input === null || input === void 0 ? void 0 : input.grantedTo) !== null && _b !== void 0 ? _b : yield TestDataGenerator.generatePersona();
154
- const dateExpires = (_c = input === null || input === void 0 ? void 0 : input.dateExpires) !== null && _c !== void 0 ? _c : Time.createOffsetTimestamp({ seconds: 10 });
155
- const scope = (_d = input === null || input === void 0 ? void 0 : input.scope) !== null && _d !== void 0 ? _d : {
156
- interface: DwnInterfaceName.Messages,
157
- method: DwnMethodName.Read
158
- };
159
- const signer = Jws.createSigner(author);
160
- const grantedTo = grantedToPersona.did;
161
- const options = {
162
- signer,
163
- grantedTo,
164
- dateExpires,
165
- scope,
166
- description: (_e = input === null || input === void 0 ? void 0 : input.description) !== null && _e !== void 0 ? _e : TestDataGenerator.randomString(10),
167
- delegated: (_f = input === null || input === void 0 ? void 0 : input.delegated) !== null && _f !== void 0 ? _f : false,
168
- requestId: input === null || input === void 0 ? void 0 : input.requestId,
169
- conditions: input === null || input === void 0 ? void 0 : input.conditions,
170
- };
171
- const grant = yield PermissionsProtocol.createGrant(options);
172
- const dataStream = DataStream.fromBytes(grant.permissionGrantBytes);
173
- return {
174
- dataStream,
175
- recordsWrite: grant.recordsWrite,
176
- dataBytes: grant.permissionGrantBytes,
177
- message: grant.recordsWrite.message,
178
- dataEncodedMessage: grant.dataEncodedMessage
179
- };
180
- });
162
+ static async generateGrantCreate(input) {
163
+ const author = input?.author ?? await TestDataGenerator.generatePersona();
164
+ const grantedToPersona = input?.grantedTo ?? await TestDataGenerator.generatePersona();
165
+ const dateExpires = input?.dateExpires ?? Time.createOffsetTimestamp({ seconds: 10 });
166
+ const scope = input?.scope ?? {
167
+ interface: DwnInterfaceName.Messages,
168
+ method: DwnMethodName.Read
169
+ };
170
+ const signer = Jws.createSigner(author);
171
+ const grantedTo = grantedToPersona.did;
172
+ const options = {
173
+ signer,
174
+ grantedTo,
175
+ dateExpires,
176
+ scope,
177
+ description: input?.description ?? TestDataGenerator.randomString(10),
178
+ delegated: input?.delegated ?? false,
179
+ requestId: input?.requestId,
180
+ conditions: input?.conditions,
181
+ };
182
+ const grant = await PermissionsProtocol.createGrant(options);
183
+ const dataStream = DataStream.fromBytes(grant.permissionGrantBytes);
184
+ return {
185
+ dataStream,
186
+ recordsWrite: grant.recordsWrite,
187
+ dataBytes: grant.permissionGrantBytes,
188
+ message: grant.recordsWrite.message,
189
+ dataEncodedMessage: grant.dataEncodedMessage
190
+ };
181
191
  }
182
192
  ;
183
193
  /**
@@ -190,54 +200,51 @@ export class TestDataGenerator {
190
200
  * @param input.signer MessageSigner of the message. Generated if not given.
191
201
  * @param input.schema Schema of the message. Randomly generated if not given.
192
202
  */
193
- static generateRecordsWrite(input) {
194
- return __awaiter(this, void 0, void 0, function* () {
195
- var _a, _b, _c, _d, _e;
196
- const author = (_a = input === null || input === void 0 ? void 0 : input.author) !== null && _a !== void 0 ? _a : yield TestDataGenerator.generatePersona();
197
- const signer = Jws.createSigner(author);
198
- const attestationSigners = Jws.createSigners((_b = input === null || input === void 0 ? void 0 : input.attesters) !== null && _b !== void 0 ? _b : []);
199
- const dataCid = input === null || input === void 0 ? void 0 : input.dataCid;
200
- const dataSize = input === null || input === void 0 ? void 0 : input.dataSize;
201
- let dataBytes;
202
- let dataStream;
203
- if (dataCid === undefined && dataSize === undefined) {
204
- dataBytes = (_c = input === null || input === void 0 ? void 0 : input.data) !== null && _c !== void 0 ? _c : TestDataGenerator.randomBytes(32);
205
- dataStream = DataStream.fromBytes(dataBytes);
206
- }
207
- const options = {
208
- recipient: input === null || input === void 0 ? void 0 : input.recipient,
209
- protocol: input === null || input === void 0 ? void 0 : input.protocol,
210
- protocolPath: input === null || input === void 0 ? void 0 : input.protocolPath,
211
- protocolRole: input === null || input === void 0 ? void 0 : input.protocolRole,
212
- schema: (_d = input === null || input === void 0 ? void 0 : input.schema) !== null && _d !== void 0 ? _d : `http://${TestDataGenerator.randomString(20)}`,
213
- tags: input === null || input === void 0 ? void 0 : input.tags,
214
- recordId: input === null || input === void 0 ? void 0 : input.recordId,
215
- parentContextId: input === null || input === void 0 ? void 0 : input.parentContextId,
216
- published: input === null || input === void 0 ? void 0 : input.published,
217
- dataFormat: (_e = input === null || input === void 0 ? void 0 : input.dataFormat) !== null && _e !== void 0 ? _e : 'application/json',
218
- dateCreated: input === null || input === void 0 ? void 0 : input.dateCreated,
219
- messageTimestamp: input === null || input === void 0 ? void 0 : input.messageTimestamp,
220
- datePublished: input === null || input === void 0 ? void 0 : input.datePublished,
221
- data: dataBytes,
222
- dataCid,
223
- dataSize,
224
- signer,
225
- attestationSigners,
226
- encryptionInput: input === null || input === void 0 ? void 0 : input.encryptionInput,
227
- permissionGrantId: input === null || input === void 0 ? void 0 : input.permissionGrantId,
228
- };
229
- const recordsWrite = yield RecordsWrite.create(options);
230
- const message = recordsWrite.message;
231
- return {
232
- author,
233
- message,
234
- dataCid,
235
- dataSize,
236
- dataBytes,
237
- dataStream,
238
- recordsWrite
239
- };
240
- });
203
+ static async generateRecordsWrite(input) {
204
+ const author = input?.author ?? await TestDataGenerator.generatePersona();
205
+ const signer = Jws.createSigner(author);
206
+ const attestationSigners = Jws.createSigners(input?.attesters ?? []);
207
+ const dataCid = input?.dataCid;
208
+ const dataSize = input?.dataSize;
209
+ let dataBytes;
210
+ let dataStream;
211
+ if (dataCid === undefined && dataSize === undefined) {
212
+ dataBytes = input?.data ?? TestDataGenerator.randomBytes(32);
213
+ dataStream = DataStream.fromBytes(dataBytes);
214
+ }
215
+ const options = {
216
+ recipient: input?.recipient,
217
+ protocol: input?.protocol ?? 'http://test-protocol.xyz',
218
+ protocolPath: input?.protocolPath ?? 'testRecord',
219
+ protocolRole: input?.protocolRole,
220
+ schema: input?.schema ?? `http://${TestDataGenerator.randomString(20)}`,
221
+ tags: input?.tags,
222
+ recordId: input?.recordId,
223
+ parentContextId: input?.parentContextId,
224
+ published: input?.published,
225
+ dataFormat: input?.dataFormat ?? 'application/json',
226
+ dateCreated: input?.dateCreated,
227
+ messageTimestamp: input?.messageTimestamp,
228
+ datePublished: input?.datePublished,
229
+ data: dataBytes,
230
+ dataCid,
231
+ dataSize,
232
+ signer,
233
+ attestationSigners,
234
+ encryptionInput: input?.encryptionInput,
235
+ permissionGrantId: input?.permissionGrantId,
236
+ };
237
+ const recordsWrite = await RecordsWrite.create(options);
238
+ const message = recordsWrite.message;
239
+ return {
240
+ author,
241
+ message,
242
+ dataCid,
243
+ dataSize,
244
+ dataBytes,
245
+ dataStream,
246
+ recordsWrite
247
+ };
241
248
  }
242
249
  ;
243
250
  /**
@@ -253,286 +260,264 @@ export class TestDataGenerator {
253
260
  * @param input.encryptSymmetricKeyWithProtocolContextDerivedKey
254
261
  * Set to `true` to attach the symmetric key encrypted by the protocol context derived public key
255
262
  */
256
- static generateProtocolEncryptedRecordsWrite(input) {
257
- return __awaiter(this, void 0, void 0, function* () {
258
- var _a, _b, _c;
259
- const { plaintextBytes, author, recipient, protocolDefinition, protocolPath, protocolParentContextId, protocolContextDerivingRootKeyId, protocolContextDerivedPublicKeyJwk, } = input;
260
- // encrypt the plaintext data for the target with a randomly generated symmetric key
261
- const dataEncryptionInitializationVector = TestDataGenerator.randomBytes(12); // 12 bytes for AES-GCM
262
- const dataEncryptionKey = TestDataGenerator.randomBytes(32);
263
- const { ciphertext: encryptedDataBytes, tag: authenticationTag } = yield Encryption.aeadEncrypt(ContentEncryptionAlgorithm.A256GCM, dataEncryptionKey, dataEncryptionInitializationVector, plaintextBytes);
264
- // author generates a RecordsWrite using the encrypted data
265
- const protocolPathSegments = protocolPath.split('/');
266
- const recordType = protocolPathSegments[protocolPathSegments.length - 1];
267
- const { message, dataStream, recordsWrite } = yield TestDataGenerator.generateRecordsWrite({
268
- author,
269
- recipient,
270
- protocol: protocolDefinition.protocol,
271
- protocolPath,
272
- parentContextId: protocolParentContextId,
273
- schema: protocolDefinition.types[recordType].schema,
274
- dataFormat: (_a = protocolDefinition.types[recordType].dataFormats) === null || _a === void 0 ? void 0 : _a[0],
275
- data: encryptedDataBytes
276
- });
277
- // final encryption input (`keyEncryptionInputs` to be populated below)
278
- const encryptionInput = {
279
- initializationVector: dataEncryptionInitializationVector,
280
- key: dataEncryptionKey,
281
- authenticationTag,
282
- keyEncryptionInputs: []
263
+ static async generateProtocolEncryptedRecordsWrite(input) {
264
+ const { plaintextBytes, author, recipient, protocolDefinition, protocolPath, protocolParentContextId, protocolContextDerivingRootKeyId, protocolContextDerivedPublicKeyJwk, } = input;
265
+ // encrypt the plaintext data for the target with a randomly generated symmetric key
266
+ const dataEncryptionInitializationVector = TestDataGenerator.randomBytes(12); // 12 bytes for AES-GCM
267
+ const dataEncryptionKey = TestDataGenerator.randomBytes(32);
268
+ const { ciphertext: encryptedDataBytes, tag: authenticationTag } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.A256GCM, dataEncryptionKey, dataEncryptionInitializationVector, plaintextBytes);
269
+ // author generates a RecordsWrite using the encrypted data
270
+ const protocolPathSegments = protocolPath.split('/');
271
+ const recordType = protocolPathSegments[protocolPathSegments.length - 1];
272
+ const { message, dataStream, recordsWrite } = await TestDataGenerator.generateRecordsWrite({
273
+ author,
274
+ recipient,
275
+ protocol: protocolDefinition.protocol,
276
+ protocolPath,
277
+ parentContextId: protocolParentContextId,
278
+ schema: protocolDefinition.types[recordType].schema,
279
+ dataFormat: protocolDefinition.types[recordType].dataFormats?.[0],
280
+ data: encryptedDataBytes
281
+ });
282
+ // final encryption input (`keyEncryptionInputs` to be populated below)
283
+ const encryptionInput = {
284
+ initializationVector: dataEncryptionInitializationVector,
285
+ key: dataEncryptionKey,
286
+ authenticationTag,
287
+ keyEncryptionInputs: []
288
+ };
289
+ if (input.encryptSymmetricKeyWithProtocolPathDerivedKey) {
290
+ // locate the rule set corresponding the protocol path of the message
291
+ let protocolRuleSetSegment = protocolDefinition.structure;
292
+ for (const pathSegment of protocolPathSegments) {
293
+ protocolRuleSetSegment = protocolRuleSetSegment[pathSegment];
294
+ }
295
+ const protocolPathDerivedPublicKeyJwk = protocolRuleSetSegment.$encryption?.publicKeyJwk;
296
+ const protocolPathDerivationRootKeyId = protocolRuleSetSegment.$encryption?.rootKeyId;
297
+ const protocolPathDerivedKeyEncryptionInput = {
298
+ publicKeyId: protocolPathDerivationRootKeyId,
299
+ publicKey: protocolPathDerivedPublicKeyJwk,
300
+ derivationScheme: KeyDerivationScheme.ProtocolPath
283
301
  };
284
- if (input.encryptSymmetricKeyWithProtocolPathDerivedKey) {
285
- // locate the rule set corresponding the protocol path of the message
286
- let protocolRuleSetSegment = protocolDefinition.structure;
287
- for (const pathSegment of protocolPathSegments) {
288
- protocolRuleSetSegment = protocolRuleSetSegment[pathSegment];
289
- }
290
- const protocolPathDerivedPublicKeyJwk = (_b = protocolRuleSetSegment.$encryption) === null || _b === void 0 ? void 0 : _b.publicKeyJwk;
291
- const protocolPathDerivationRootKeyId = (_c = protocolRuleSetSegment.$encryption) === null || _c === void 0 ? void 0 : _c.rootKeyId;
292
- const protocolPathDerivedKeyEncryptionInput = {
293
- publicKeyId: protocolPathDerivationRootKeyId,
294
- publicKey: protocolPathDerivedPublicKeyJwk,
295
- derivationScheme: KeyDerivationScheme.ProtocolPath
302
+ encryptionInput.keyEncryptionInputs.push(protocolPathDerivedKeyEncryptionInput);
303
+ }
304
+ if (input.encryptSymmetricKeyWithProtocolContextDerivedKey) {
305
+ // generate key encryption input that will encrypt the symmetric encryption key using protocol-context derived public key
306
+ let protocolContextDerivedKeyEncryptionInput;
307
+ if (protocolParentContextId === undefined) {
308
+ // author generates protocol-context derived public key for encrypting symmetric key
309
+ const authorRootPrivateKey = {
310
+ rootKeyId: author.keyId,
311
+ derivationScheme: KeyDerivationScheme.ProtocolContext,
312
+ derivedPrivateKey: author.encryptionKeyPair.privateJwk
313
+ };
314
+ const contextId = await RecordsWrite.getEntryId(author.did, message.descriptor);
315
+ const contextDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(contextId);
316
+ const authorGeneratedProtocolContextDerivedPublicKeyJwk = await HdKey.derivePublicKey(authorRootPrivateKey, contextDerivationPath);
317
+ protocolContextDerivedKeyEncryptionInput = {
318
+ publicKeyId: author.keyId,
319
+ publicKey: authorGeneratedProtocolContextDerivedPublicKeyJwk,
320
+ derivationScheme: KeyDerivationScheme.ProtocolContext
296
321
  };
297
- encryptionInput.keyEncryptionInputs.push(protocolPathDerivedKeyEncryptionInput);
298
322
  }
299
- if (input.encryptSymmetricKeyWithProtocolContextDerivedKey) {
300
- // generate key encryption input that will encrypt the symmetric encryption key using protocol-context derived public key
301
- let protocolContextDerivedKeyEncryptionInput;
302
- if (protocolParentContextId === undefined) {
303
- // author generates protocol-context derived public key for encrypting symmetric key
304
- const authorRootPrivateKey = {
305
- rootKeyId: author.keyId,
306
- derivationScheme: KeyDerivationScheme.ProtocolContext,
307
- derivedPrivateKey: author.encryptionKeyPair.privateJwk
308
- };
309
- const contextId = yield RecordsWrite.getEntryId(author.did, message.descriptor);
310
- const contextDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(contextId);
311
- const authorGeneratedProtocolContextDerivedPublicKeyJwk = yield HdKey.derivePublicKey(authorRootPrivateKey, contextDerivationPath);
312
- protocolContextDerivedKeyEncryptionInput = {
313
- publicKeyId: author.keyId,
314
- publicKey: authorGeneratedProtocolContextDerivedPublicKeyJwk,
315
- derivationScheme: KeyDerivationScheme.ProtocolContext
316
- };
317
- }
318
- else {
319
- if (protocolContextDerivingRootKeyId === undefined ||
320
- protocolContextDerivedPublicKeyJwk === undefined) {
321
- throw new Error('`protocolContextDerivingRootKeyId` and `protocolContextDerivedPublicKeyJwk` must both be defined if `protocolContextId` is given');
322
- }
323
- protocolContextDerivedKeyEncryptionInput = {
324
- publicKeyId: protocolContextDerivingRootKeyId,
325
- publicKey: protocolContextDerivedPublicKeyJwk,
326
- derivationScheme: KeyDerivationScheme.ProtocolContext
327
- };
323
+ else {
324
+ if (protocolContextDerivingRootKeyId === undefined ||
325
+ protocolContextDerivedPublicKeyJwk === undefined) {
326
+ throw new Error('`protocolContextDerivingRootKeyId` and `protocolContextDerivedPublicKeyJwk` must both be defined if `protocolContextId` is given');
328
327
  }
329
- encryptionInput.keyEncryptionInputs.push(protocolContextDerivedKeyEncryptionInput);
328
+ protocolContextDerivedKeyEncryptionInput = {
329
+ publicKeyId: protocolContextDerivingRootKeyId,
330
+ publicKey: protocolContextDerivedPublicKeyJwk,
331
+ derivationScheme: KeyDerivationScheme.ProtocolContext
332
+ };
330
333
  }
331
- yield recordsWrite.encryptSymmetricEncryptionKey(encryptionInput);
332
- yield recordsWrite.sign({ signer: Jws.createSigner(author) });
333
- return { message, dataStream: dataStream, recordsWrite, encryptedDataBytes, encryptionInput };
334
- });
334
+ encryptionInput.keyEncryptionInputs.push(protocolContextDerivedKeyEncryptionInput);
335
+ }
336
+ await recordsWrite.encryptSymmetricEncryptionKey(encryptionInput);
337
+ await recordsWrite.sign({ signer: Jws.createSigner(author) });
338
+ return { message, dataStream: dataStream, recordsWrite, encryptedDataBytes, encryptionInput };
335
339
  }
336
340
  /**
337
341
  * Generates a valid RecordsWrite that modifies the given an existing write.
338
342
  * Any mutable property is not specified will be automatically mutated.
339
343
  * e.g. if `published` is not specified, it will be toggled from the state of the given existing write.
340
344
  */
341
- static generateFromRecordsWrite(input) {
342
- return __awaiter(this, void 0, void 0, function* () {
343
- var _a, _b, _c;
344
- const existingMessage = input.existingWrite.message;
345
- const currentTime = Time.getCurrentTimestamp();
346
- const published = ((_a = input.published) !== null && _a !== void 0 ? _a : existingMessage.descriptor.published) ? false : true; // toggle from the parent value if not given explicitly
347
- const datePublished = (_b = input.datePublished) !== null && _b !== void 0 ? _b : (published ? currentTime : undefined);
348
- const dataBytes = (_c = input.data) !== null && _c !== void 0 ? _c : TestDataGenerator.randomBytes(32);
349
- const dataStream = DataStream.fromBytes(dataBytes);
350
- const options = {
351
- recordsWriteMessage: input.existingWrite.message,
352
- data: dataBytes,
353
- published,
354
- datePublished,
355
- messageTimestamp: input.messageTimestamp,
356
- protocolRole: input.protocolRole,
357
- tags: input.tags,
358
- signer: Jws.createSigner(input.author)
359
- };
360
- const recordsWrite = yield RecordsWrite.createFrom(options);
361
- return {
362
- message: recordsWrite.message,
363
- recordsWrite,
364
- dataBytes,
365
- dataStream
366
- };
367
- });
345
+ static async generateFromRecordsWrite(input) {
346
+ const existingMessage = input.existingWrite.message;
347
+ const currentTime = Time.getCurrentTimestamp();
348
+ const published = input.published ?? existingMessage.descriptor.published ? false : true; // toggle from the parent value if not given explicitly
349
+ const datePublished = input.datePublished ?? (published ? currentTime : undefined);
350
+ const dataBytes = input.data ?? TestDataGenerator.randomBytes(32);
351
+ const dataStream = DataStream.fromBytes(dataBytes);
352
+ const options = {
353
+ recordsWriteMessage: input.existingWrite.message,
354
+ data: dataBytes,
355
+ published,
356
+ datePublished,
357
+ messageTimestamp: input.messageTimestamp,
358
+ protocolRole: input.protocolRole,
359
+ tags: input.tags,
360
+ signer: Jws.createSigner(input.author)
361
+ };
362
+ const recordsWrite = await RecordsWrite.createFrom(options);
363
+ return {
364
+ message: recordsWrite.message,
365
+ recordsWrite,
366
+ dataBytes,
367
+ dataStream
368
+ };
368
369
  }
369
370
  /**
370
371
  * Generates a RecordsQuery message for testing.
371
372
  */
372
- static generateRecordsQuery(input) {
373
- return __awaiter(this, void 0, void 0, function* () {
374
- var _a, _b;
375
- let author = input === null || input === void 0 ? void 0 : input.author;
376
- const anonymous = (_a = input === null || input === void 0 ? void 0 : input.anonymous) !== null && _a !== void 0 ? _a : false;
377
- if (anonymous && author) {
378
- throw new Error('Cannot have `author` and be anonymous at the same time.');
379
- }
380
- // generate author if needed
381
- if (author === undefined && !anonymous) {
382
- author = yield TestDataGenerator.generatePersona();
383
- }
384
- let signer = undefined;
385
- if (author !== undefined) {
386
- signer = Jws.createSigner(author);
387
- }
388
- const options = {
389
- messageTimestamp: input === null || input === void 0 ? void 0 : input.messageTimestamp,
390
- signer,
391
- filter: (_b = input === null || input === void 0 ? void 0 : input.filter) !== null && _b !== void 0 ? _b : { schema: TestDataGenerator.randomString(10) }, // must have one filter property if no filter is given
392
- dateSort: input === null || input === void 0 ? void 0 : input.dateSort,
393
- pagination: input === null || input === void 0 ? void 0 : input.pagination,
394
- protocolRole: input === null || input === void 0 ? void 0 : input.protocolRole,
395
- };
396
- removeUndefinedProperties(options);
397
- const recordsQuery = yield RecordsQuery.create(options);
398
- const message = recordsQuery.message;
399
- return {
400
- author,
401
- message
402
- };
403
- });
373
+ static async generateRecordsQuery(input) {
374
+ let author = input?.author;
375
+ const anonymous = input?.anonymous ?? false;
376
+ if (anonymous && author) {
377
+ throw new Error('Cannot have `author` and be anonymous at the same time.');
378
+ }
379
+ // generate author if needed
380
+ if (author === undefined && !anonymous) {
381
+ author = await TestDataGenerator.generatePersona();
382
+ }
383
+ let signer = undefined;
384
+ if (author !== undefined) {
385
+ signer = Jws.createSigner(author);
386
+ }
387
+ const options = {
388
+ messageTimestamp: input?.messageTimestamp,
389
+ signer,
390
+ filter: input?.filter ?? { schema: TestDataGenerator.randomString(10) }, // must have one filter property if no filter is given
391
+ dateSort: input?.dateSort,
392
+ pagination: input?.pagination,
393
+ protocolRole: input?.protocolRole,
394
+ };
395
+ removeUndefinedProperties(options);
396
+ const recordsQuery = await RecordsQuery.create(options);
397
+ const message = recordsQuery.message;
398
+ return {
399
+ author,
400
+ message
401
+ };
404
402
  }
405
403
  ;
406
404
  /**
407
405
  * Generates a RecordsSubscribe message for testing.
408
406
  */
409
- static generateRecordsSubscribe(input) {
410
- return __awaiter(this, void 0, void 0, function* () {
411
- var _a, _b;
412
- let author = input === null || input === void 0 ? void 0 : input.author;
413
- const anonymous = (_a = input === null || input === void 0 ? void 0 : input.anonymous) !== null && _a !== void 0 ? _a : false;
414
- if (anonymous && author) {
415
- throw new Error('Cannot have `author` and be anonymous at the same time.');
416
- }
417
- // generate author if needed
418
- if (author === undefined && !anonymous) {
419
- author = yield TestDataGenerator.generatePersona();
420
- }
421
- let signer = undefined;
422
- if (author !== undefined) {
423
- signer = Jws.createSigner(author);
424
- }
425
- const options = {
426
- messageTimestamp: input === null || input === void 0 ? void 0 : input.messageTimestamp,
427
- signer,
428
- filter: (_b = input === null || input === void 0 ? void 0 : input.filter) !== null && _b !== void 0 ? _b : { schema: TestDataGenerator.randomString(10) }, // must have one filter property if no filter is given
429
- dateSort: input === null || input === void 0 ? void 0 : input.dateSort,
430
- pagination: input === null || input === void 0 ? void 0 : input.pagination,
431
- protocolRole: input === null || input === void 0 ? void 0 : input.protocolRole,
432
- };
433
- removeUndefinedProperties(options);
434
- const recordsSubscribe = yield RecordsSubscribe.create(options);
435
- const message = recordsSubscribe.message;
436
- return {
437
- author,
438
- message
439
- };
440
- });
407
+ static async generateRecordsSubscribe(input) {
408
+ let author = input?.author;
409
+ const anonymous = input?.anonymous ?? false;
410
+ if (anonymous && author) {
411
+ throw new Error('Cannot have `author` and be anonymous at the same time.');
412
+ }
413
+ // generate author if needed
414
+ if (author === undefined && !anonymous) {
415
+ author = await TestDataGenerator.generatePersona();
416
+ }
417
+ let signer = undefined;
418
+ if (author !== undefined) {
419
+ signer = Jws.createSigner(author);
420
+ }
421
+ const options = {
422
+ messageTimestamp: input?.messageTimestamp,
423
+ signer,
424
+ filter: input?.filter ?? { schema: TestDataGenerator.randomString(10) }, // must have one filter property if no filter is given
425
+ dateSort: input?.dateSort,
426
+ pagination: input?.pagination,
427
+ protocolRole: input?.protocolRole,
428
+ cursor: input?.cursor,
429
+ };
430
+ removeUndefinedProperties(options);
431
+ const recordsSubscribe = await RecordsSubscribe.create(options);
432
+ const message = recordsSubscribe.message;
433
+ return {
434
+ author,
435
+ message
436
+ };
441
437
  }
442
438
  /**
443
439
  * Generates a RecordsCount message for testing.
444
440
  */
445
- static generateRecordsCount(input) {
446
- return __awaiter(this, void 0, void 0, function* () {
447
- var _a, _b;
448
- let author = input === null || input === void 0 ? void 0 : input.author;
449
- const anonymous = (_a = input === null || input === void 0 ? void 0 : input.anonymous) !== null && _a !== void 0 ? _a : false;
450
- if (anonymous && author) {
451
- throw new Error('Cannot have `author` and be anonymous at the same time.');
452
- }
453
- // generate author if needed
454
- if (author === undefined && !anonymous) {
455
- author = yield TestDataGenerator.generatePersona();
456
- }
457
- let signer = undefined;
458
- if (author !== undefined) {
459
- signer = Jws.createSigner(author);
460
- }
461
- const options = {
462
- messageTimestamp: input === null || input === void 0 ? void 0 : input.messageTimestamp,
463
- signer,
464
- filter: (_b = input === null || input === void 0 ? void 0 : input.filter) !== null && _b !== void 0 ? _b : { schema: TestDataGenerator.randomString(10) },
465
- protocolRole: input === null || input === void 0 ? void 0 : input.protocolRole,
466
- };
467
- removeUndefinedProperties(options);
468
- const recordsCount = yield RecordsCount.create(options);
469
- const message = recordsCount.message;
470
- return {
471
- author,
472
- message
473
- };
474
- });
441
+ static async generateRecordsCount(input) {
442
+ let author = input?.author;
443
+ const anonymous = input?.anonymous ?? false;
444
+ if (anonymous && author) {
445
+ throw new Error('Cannot have `author` and be anonymous at the same time.');
446
+ }
447
+ // generate author if needed
448
+ if (author === undefined && !anonymous) {
449
+ author = await TestDataGenerator.generatePersona();
450
+ }
451
+ let signer = undefined;
452
+ if (author !== undefined) {
453
+ signer = Jws.createSigner(author);
454
+ }
455
+ const options = {
456
+ messageTimestamp: input?.messageTimestamp,
457
+ signer,
458
+ filter: input?.filter ?? { schema: TestDataGenerator.randomString(10) },
459
+ protocolRole: input?.protocolRole,
460
+ };
461
+ removeUndefinedProperties(options);
462
+ const recordsCount = await RecordsCount.create(options);
463
+ const message = recordsCount.message;
464
+ return {
465
+ author,
466
+ message
467
+ };
475
468
  }
476
469
  /**
477
470
  * Generates a RecordsDelete for testing.
478
471
  */
479
- static generateRecordsDelete(input) {
480
- return __awaiter(this, void 0, void 0, function* () {
481
- var _a, _b;
482
- const author = (_a = input === null || input === void 0 ? void 0 : input.author) !== null && _a !== void 0 ? _a : yield TestDataGenerator.generateDidKeyPersona();
483
- const recordsDelete = yield RecordsDelete.create({
484
- recordId: (_b = input === null || input === void 0 ? void 0 : input.recordId) !== null && _b !== void 0 ? _b : yield TestDataGenerator.randomCborSha256Cid(),
485
- protocolRole: input === null || input === void 0 ? void 0 : input.protocolRole,
486
- signer: Jws.createSigner(author)
487
- });
488
- return {
489
- author,
490
- recordsDelete,
491
- message: recordsDelete.message
492
- };
472
+ static async generateRecordsDelete(input) {
473
+ const author = input?.author ?? await TestDataGenerator.generateDidKeyPersona();
474
+ const recordsDelete = await RecordsDelete.create({
475
+ recordId: input?.recordId ?? await TestDataGenerator.randomCborSha256Cid(),
476
+ protocolRole: input?.protocolRole,
477
+ signer: Jws.createSigner(author)
493
478
  });
479
+ return {
480
+ author,
481
+ recordsDelete,
482
+ message: recordsDelete.message
483
+ };
494
484
  }
495
485
  /**
496
486
  * Generates a MessagesSubscribe message for testing.
497
487
  */
498
- static generateMessagesSubscribe(input) {
499
- return __awaiter(this, void 0, void 0, function* () {
500
- var _a;
501
- const author = (_a = input === null || input === void 0 ? void 0 : input.author) !== null && _a !== void 0 ? _a : yield TestDataGenerator.generatePersona();
502
- const signer = Jws.createSigner(author);
503
- const options = {
504
- filters: input === null || input === void 0 ? void 0 : input.filters,
505
- messageTimestamp: input === null || input === void 0 ? void 0 : input.messageTimestamp,
506
- permissionGrantId: input === null || input === void 0 ? void 0 : input.permissionGrantId,
507
- signer,
508
- };
509
- removeUndefinedProperties(options);
510
- const messagesSubscribe = yield MessagesSubscribe.create(options);
511
- const message = messagesSubscribe.message;
512
- return {
513
- author,
514
- messagesSubscribe,
515
- message
516
- };
517
- });
488
+ static async generateMessagesSubscribe(input) {
489
+ const author = input?.author ?? await TestDataGenerator.generatePersona();
490
+ const signer = Jws.createSigner(author);
491
+ const options = {
492
+ filters: input?.filters,
493
+ messageTimestamp: input?.messageTimestamp,
494
+ permissionGrantId: input?.permissionGrantId,
495
+ cursor: input?.cursor,
496
+ signer,
497
+ };
498
+ removeUndefinedProperties(options);
499
+ const messagesSubscribe = await MessagesSubscribe.create(options);
500
+ const message = messagesSubscribe.message;
501
+ return {
502
+ author,
503
+ messagesSubscribe,
504
+ message
505
+ };
518
506
  }
519
- static generateMessagesRead(input) {
520
- return __awaiter(this, void 0, void 0, function* () {
521
- var _a;
522
- const author = (_a = input === null || input === void 0 ? void 0 : input.author) !== null && _a !== void 0 ? _a : yield TestDataGenerator.generatePersona();
523
- const signer = Jws.createSigner(author);
524
- const options = {
525
- signer,
526
- messageCid: input.messageCid,
527
- permissionGrantId: input.permissionGrantId
528
- };
529
- const messagesRead = yield MessagesRead.create(options);
530
- return {
531
- author,
532
- messagesRead,
533
- message: messagesRead.message,
534
- };
535
- });
507
+ static async generateMessagesRead(input) {
508
+ const author = input?.author ?? await TestDataGenerator.generatePersona();
509
+ const signer = Jws.createSigner(author);
510
+ const options = {
511
+ signer,
512
+ messageCid: input.messageCid,
513
+ permissionGrantId: input.permissionGrantId
514
+ };
515
+ const messagesRead = await MessagesRead.create(options);
516
+ return {
517
+ author,
518
+ messagesRead,
519
+ message: messagesRead.message,
520
+ };
536
521
  }
537
522
  /**
538
523
  * Generates a dummy `authorization` property for a DWN message that only conforms to schema validation.
@@ -557,13 +542,11 @@ export class TestDataGenerator {
557
542
  /**
558
543
  * Generates a random but well-formed signature string in Base64Url format.
559
544
  */
560
- static randomSignatureString() {
561
- return __awaiter(this, void 0, void 0, function* () {
562
- const keyPair = yield ed25519.generateKeyPair();
563
- const signatureBytes = yield ed25519.sign(TestDataGenerator.randomBytes(32), keyPair.privateJwk);
564
- const signatureString = Encoder.bytesToBase64Url(signatureBytes);
565
- return signatureString;
566
- });
545
+ static async randomSignatureString() {
546
+ const keyPair = await ed25519.generateKeyPair();
547
+ const signatureBytes = await ed25519.sign(TestDataGenerator.randomBytes(32), keyPair.privateJwk);
548
+ const signatureString = Encoder.bytesToBase64Url(signatureBytes);
549
+ return signatureString;
567
550
  }
568
551
  /**
569
552
  * Generates a random alpha-numeric string.
@@ -592,13 +575,11 @@ export class TestDataGenerator {
592
575
  /**
593
576
  * Generates a random CBOR SHA256 CID.
594
577
  */
595
- static randomCborSha256Cid() {
596
- return __awaiter(this, void 0, void 0, function* () {
597
- const randomBytes = TestDataGenerator.randomBytes(32);
598
- const randomMultihash = yield sha256.digest(randomBytes);
599
- const cid = yield CID.createV1(cbor.code, randomMultihash);
600
- return cid.toString();
601
- });
578
+ static async randomCborSha256Cid() {
579
+ const randomBytes = TestDataGenerator.randomBytes(32);
580
+ const randomMultihash = await sha256.digest(randomBytes);
581
+ const cid = await CID.createV1(cbor.code, randomMultihash);
582
+ return cid.toString();
602
583
  }
603
584
  /**
604
585
  * Generates a random within a range (inclusive).
@@ -648,36 +629,34 @@ export class TestDataGenerator {
648
629
  /**
649
630
  * Generates a did:key persona.
650
631
  */
651
- static generateDidKeyPersona() {
652
- return __awaiter(this, void 0, void 0, function* () {
653
- const did = yield DidKey.create();
654
- const signingMethod = yield DidKey.getSigningMethod({ didDocument: did.document });
655
- const keyId = signingMethod.id;
656
- const portableDid = yield did.export();
657
- const keyPair = {
658
- // TODO: #672 - port and use type from @enbox/crypto - https://github.com/enboxorg/enbox/issues/672
659
- publicJwk: signingMethod.publicKeyJwk,
660
- privateJwk: portableDid.privateKeys[0],
661
- };
662
- // Generate X25519 encryption key pair for did:key personas
663
- const encPrivateKey = yield X25519.generateKey();
664
- const encPublicKey = yield X25519.getPublicKey({ key: encPrivateKey });
665
- const encryptionKeyPair = {
666
- publicJwk: encPublicKey,
667
- privateJwk: encPrivateKey,
668
- };
669
- return {
670
- did: did.uri,
671
- keyId,
672
- keyPair,
673
- encryptionKeyPair,
674
- signer: new PrivateKeySigner({
675
- privateJwk: keyPair.privateJwk,
676
- algorithm: keyPair.privateJwk.alg,
677
- keyId
678
- })
679
- };
680
- });
632
+ static async generateDidKeyPersona() {
633
+ const did = await DidKey.create();
634
+ const signingMethod = await DidKey.getSigningMethod({ didDocument: did.document });
635
+ const keyId = signingMethod.id;
636
+ const portableDid = await did.export();
637
+ const keyPair = {
638
+ // TODO: #672 - port and use type from @enbox/crypto - https://github.com/enboxorg/enbox/issues/672
639
+ publicJwk: signingMethod.publicKeyJwk,
640
+ privateJwk: portableDid.privateKeys[0],
641
+ };
642
+ // Generate X25519 encryption key pair for did:key personas
643
+ const encPrivateKey = await X25519.generateKey();
644
+ const encPublicKey = await X25519.getPublicKey({ key: encPrivateKey });
645
+ const encryptionKeyPair = {
646
+ publicJwk: encPublicKey,
647
+ privateJwk: encPrivateKey,
648
+ };
649
+ return {
650
+ did: did.uri,
651
+ keyId,
652
+ keyPair,
653
+ encryptionKeyPair,
654
+ signer: new PrivateKeySigner({
655
+ privateJwk: keyPair.privateJwk,
656
+ algorithm: keyPair.privateJwk.alg,
657
+ keyId
658
+ })
659
+ };
681
660
  }
682
661
  }
683
662
  //# sourceMappingURL=test-data-generator.js.map