@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 { DwnConstant } from '../core/dwn-constant.js';
11
2
  import { Message } from '../core/message.js';
12
3
  import { Records } from '../utils/records.js';
@@ -17,171 +8,165 @@ import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.j
17
8
  * A class that provides an abstraction for the usage of MessageStore, DataStore, and StateIndex.
18
9
  */
19
10
  export class StorageController {
20
- constructor({ messageStore, dataStore, stateIndex, eventStream }) {
11
+ messageStore;
12
+ dataStore;
13
+ stateIndex;
14
+ eventLog;
15
+ constructor({ messageStore, dataStore, stateIndex, eventLog }) {
21
16
  this.messageStore = messageStore;
22
17
  this.dataStore = dataStore;
23
18
  this.stateIndex = stateIndex;
24
- this.eventStream = eventStream;
19
+ this.eventLog = eventLog;
25
20
  }
26
- performRecordsDelete(_a) {
27
- return __awaiter(this, arguments, void 0, function* ({ tenant, message }) {
28
- // get existing records matching the `recordId`
29
- const query = {
30
- interface: DwnInterfaceName.Records,
31
- recordId: message.descriptor.recordId
32
- };
33
- const { messages: existingMessages } = yield this.messageStore.query(tenant, [query]);
34
- // find which message is the newest, and if the incoming message is the newest
35
- const newestExistingMessage = yield Message.getNewestMessage(existingMessages);
36
- if (!Records.canPerformDeleteAgainstRecord(message, newestExistingMessage)) {
37
- return;
38
- }
39
- // NOTE: code above is duplicated from `RecordsDeleteHandler` and is already performed if this was invoked by the `RecordsDeleteHandler`,
40
- // But we repeat the logic for the code path when the ResumableTaskManager resumes the task.
41
- // We make the two different code paths to share this same method to reduce code duplication, there might be a better way to refactor this.
42
- const recordsDelete = yield RecordsDelete.parse(message);
43
- const initialWrite = yield RecordsWrite.getInitialWrite(existingMessages);
44
- const indexes = recordsDelete.constructIndexes(initialWrite);
45
- const messageCid = yield Message.getCid(message);
46
- yield this.messageStore.put(tenant, message, indexes);
47
- yield this.stateIndex.insert(tenant, messageCid, indexes);
48
- // only emit if the event stream is set
49
- if (this.eventStream !== undefined) {
50
- this.eventStream.emit(tenant, { message, initialWrite }, indexes);
51
- }
52
- if (message.descriptor.prune) {
53
- // purge/hard-delete all descendent records
54
- yield StorageController.purgeRecordDescendants(tenant, message.descriptor.recordId, this.messageStore, this.dataStore, this.stateIndex);
55
- }
56
- // delete all existing messages that are not newest, except for the initial write
57
- yield StorageController.deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, message, this.messageStore, this.dataStore, this.stateIndex);
58
- });
21
+ async performRecordsDelete({ tenant, message }) {
22
+ // get existing records matching the `recordId`
23
+ const query = {
24
+ interface: DwnInterfaceName.Records,
25
+ recordId: message.descriptor.recordId
26
+ };
27
+ const { messages: existingMessages } = await this.messageStore.query(tenant, [query]);
28
+ // find which message is the newest, and if the incoming message is the newest
29
+ const newestExistingMessage = await Message.getNewestMessage(existingMessages);
30
+ if (!Records.canPerformDeleteAgainstRecord(message, newestExistingMessage)) {
31
+ return;
32
+ }
33
+ // NOTE: code above is duplicated from `RecordsDeleteHandler` and is already performed if this was invoked by the `RecordsDeleteHandler`,
34
+ // But we repeat the logic for the code path when the ResumableTaskManager resumes the task.
35
+ // We make the two different code paths to share this same method to reduce code duplication, there might be a better way to refactor this.
36
+ const recordsDelete = await RecordsDelete.parse(message);
37
+ const initialWrite = await RecordsWrite.getInitialWrite(existingMessages);
38
+ const indexes = recordsDelete.constructIndexes(initialWrite);
39
+ const messageCid = await Message.getCid(message);
40
+ await this.messageStore.put(tenant, message, indexes);
41
+ await this.stateIndex.insert(tenant, messageCid, indexes);
42
+ // only emit if the event log is set
43
+ if (this.eventLog !== undefined) {
44
+ await this.eventLog.emit(tenant, { message, initialWrite }, indexes);
45
+ }
46
+ if (message.descriptor.prune) {
47
+ // purge/hard-delete all descendent records
48
+ await StorageController.purgeRecordDescendants(tenant, message.descriptor.recordId, this.messageStore, this.dataStore, this.stateIndex);
49
+ }
50
+ // delete all existing messages that are not newest, except for the initial write
51
+ await StorageController.deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, message, this.messageStore, this.dataStore, this.stateIndex);
59
52
  }
60
53
  /**
61
54
  * Deletes the data referenced by the given message if needed.
62
55
  * @param message The message to check if the data it references should be deleted.
63
56
  */
64
- static deleteFromDataStoreIfNeeded(dataStore, tenant, message, newestMessage) {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- if (message.descriptor.method !== DwnMethodName.Write) {
67
- return;
68
- }
69
- const recordsWriteMessage = message;
70
- // Optional short-circuit optimization to avoid unnecessary data store call since the data should be encoded with the message itself in this case,
71
- // but data store call is a no-op thus code still works correctly even if this short-circuit is removed.
72
- if (recordsWriteMessage.descriptor.dataSize <= DwnConstant.maxDataSizeAllowedToBeEncoded) {
73
- return;
74
- }
75
- // We must still keep the data if the newest message still references the same data.
76
- if (recordsWriteMessage.descriptor.dataCid === newestMessage.descriptor.dataCid) {
77
- return;
78
- }
79
- // Else we delete the data from the data store.
80
- yield dataStore.delete(tenant, recordsWriteMessage.recordId, recordsWriteMessage.descriptor.dataCid);
81
- });
57
+ static async deleteFromDataStoreIfNeeded(dataStore, tenant, message, newestMessage) {
58
+ if (message.descriptor.method !== DwnMethodName.Write) {
59
+ return;
60
+ }
61
+ const recordsWriteMessage = message;
62
+ // Optional short-circuit optimization to avoid unnecessary data store call since the data should be encoded with the message itself in this case,
63
+ // but data store call is a no-op thus code still works correctly even if this short-circuit is removed.
64
+ if (recordsWriteMessage.descriptor.dataSize <= DwnConstant.maxDataSizeAllowedToBeEncoded) {
65
+ return;
66
+ }
67
+ // We must still keep the data if the newest message still references the same data.
68
+ if (recordsWriteMessage.descriptor.dataCid === newestMessage.descriptor.dataCid) {
69
+ return;
70
+ }
71
+ // Else we delete the data from the data store.
72
+ await dataStore.delete(tenant, recordsWriteMessage.recordId, recordsWriteMessage.descriptor.dataCid);
82
73
  }
83
74
  /**
84
75
  * Purges (permanent hard-delete) all descendant's data of the given `recordId`.
85
76
  */
86
- static purgeRecordDescendants(tenant, recordId, messageStore, dataStore, stateIndex) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- const filter = {
89
- interface: DwnInterfaceName.Records,
90
- parentId: recordId
91
- };
92
- const { messages: childMessages } = yield messageStore.query(tenant, [filter]);
93
- // group the child messages by `recordId`
94
- const recordIdToMessagesMap = new Map();
95
- for (const message of childMessages) {
96
- // get the recordId
97
- let recordId;
98
- if (Records.isRecordsWrite(message)) {
99
- recordId = message.recordId;
100
- }
101
- else {
102
- recordId = message.descriptor.recordId;
103
- }
104
- const existingMessages = recordIdToMessagesMap.get(recordId);
105
- if (existingMessages) {
106
- existingMessages.push(message);
107
- }
108
- else {
109
- recordIdToMessagesMap.set(recordId, [message]);
110
- }
77
+ static async purgeRecordDescendants(tenant, recordId, messageStore, dataStore, stateIndex) {
78
+ const filter = {
79
+ interface: DwnInterfaceName.Records,
80
+ parentId: recordId
81
+ };
82
+ const { messages: childMessages } = await messageStore.query(tenant, [filter]);
83
+ // group the child messages by `recordId`
84
+ const recordIdToMessagesMap = new Map();
85
+ for (const message of childMessages) {
86
+ // get the recordId
87
+ let recordId;
88
+ if (Records.isRecordsWrite(message)) {
89
+ recordId = message.recordId;
111
90
  }
112
- // purge all child's descendants first
113
- for (const childRecordId of recordIdToMessagesMap.keys()) {
114
- // purge the child's descendent messages first
115
- yield StorageController.purgeRecordDescendants(tenant, childRecordId, messageStore, dataStore, stateIndex);
91
+ else {
92
+ recordId = message.descriptor.recordId;
116
93
  }
117
- // then purge the child messages themselves
118
- for (const childRecordId of recordIdToMessagesMap.keys()) {
119
- yield StorageController.purgeRecordMessages(tenant, recordIdToMessagesMap.get(childRecordId), messageStore, dataStore, stateIndex);
94
+ const existingMessages = recordIdToMessagesMap.get(recordId);
95
+ if (existingMessages) {
96
+ existingMessages.push(message);
120
97
  }
121
- });
98
+ else {
99
+ recordIdToMessagesMap.set(recordId, [message]);
100
+ }
101
+ }
102
+ // purge all child's descendants first
103
+ for (const childRecordId of recordIdToMessagesMap.keys()) {
104
+ // purge the child's descendent messages first
105
+ await StorageController.purgeRecordDescendants(tenant, childRecordId, messageStore, dataStore, stateIndex);
106
+ }
107
+ // then purge the child messages themselves
108
+ for (const childRecordId of recordIdToMessagesMap.keys()) {
109
+ await StorageController.purgeRecordMessages(tenant, recordIdToMessagesMap.get(childRecordId), messageStore, dataStore, stateIndex);
110
+ }
122
111
  }
123
112
  /**
124
113
  * Purges (permanent hard-delete) all messages of the SAME `recordId` given and their associated data and events.
125
114
  * Assumes that the given `recordMessages` are all of the same `recordId`.
126
115
  */
127
- static purgeRecordMessages(tenant, recordMessages, messageStore, dataStore, stateIndex) {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- // delete the data from the data store first so no chance of orphaned data (not having a message referencing it) in case of server crash
130
- // NOTE: only the `RecordsWrite` with latest timestamp can possibly have data associated with it so we do this filtering as an optimization
131
- // NOTE: however there could still be no data associated with the `RecordsWrite` with newest timestamp, because either:
132
- // 1. the data is encoded with the message itself; or
133
- // 2. the newest `RecordsWrite` may not be the "true" latest state due to:
134
- // a. sync has yet to write the latest `RecordsWrite`; or
135
- // b. `recordMessages` maybe an incomplete page of results if the caller uses the paging in its query
136
- // Calling dataStore.delete() is a no-op if the data is not found, so we are safe to call it redundantly.
137
- const recordsWrites = recordMessages.filter((message) => message.descriptor.method === DwnMethodName.Write);
138
- const newestRecordsWrite = (yield Message.getNewestMessage(recordsWrites));
139
- yield dataStore.delete(tenant, newestRecordsWrite.recordId, newestRecordsWrite.descriptor.dataCid);
140
- // then delete all events associated with the record messages before deleting the messages so we don't have orphaned events
141
- const messageCids = yield Promise.all(recordMessages.map((message) => Message.getCid(message)));
142
- yield stateIndex.delete(tenant, messageCids);
143
- // finally delete all record messages
144
- yield Promise.all(messageCids.map((messageCid) => messageStore.delete(tenant, messageCid)));
145
- });
116
+ static async purgeRecordMessages(tenant, recordMessages, messageStore, dataStore, stateIndex) {
117
+ // delete the data from the data store first so no chance of orphaned data (not having a message referencing it) in case of server crash
118
+ // NOTE: only the `RecordsWrite` with latest timestamp can possibly have data associated with it so we do this filtering as an optimization
119
+ // NOTE: however there could still be no data associated with the `RecordsWrite` with newest timestamp, because either:
120
+ // 1. the data is encoded with the message itself; or
121
+ // 2. the newest `RecordsWrite` may not be the "true" latest state due to:
122
+ // a. sync has yet to write the latest `RecordsWrite`; or
123
+ // b. `recordMessages` maybe an incomplete page of results if the caller uses the paging in its query
124
+ // Calling dataStore.delete() is a no-op if the data is not found, so we are safe to call it redundantly.
125
+ const recordsWrites = recordMessages.filter((message) => message.descriptor.method === DwnMethodName.Write);
126
+ const newestRecordsWrite = (await Message.getNewestMessage(recordsWrites));
127
+ await dataStore.delete(tenant, newestRecordsWrite.recordId, newestRecordsWrite.descriptor.dataCid);
128
+ // then delete all events associated with the record messages before deleting the messages so we don't have orphaned events
129
+ const messageCids = await Promise.all(recordMessages.map((message) => Message.getCid(message)));
130
+ await stateIndex.delete(tenant, messageCids);
131
+ // finally delete all record messages
132
+ await Promise.all(messageCids.map((messageCid) => messageStore.delete(tenant, messageCid)));
146
133
  }
147
134
  /**
148
135
  * Deletes all messages in `existingMessages` that are older than the `newestMessage` in the given tenant,
149
136
  * but keep the initial write write for future processing by ensuring its `isLatestBaseState` index is "false".
150
137
  */
151
- static deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, newestMessage, messageStore, dataStore, stateIndex) {
152
- return __awaiter(this, void 0, void 0, function* () {
153
- const deletedMessageCids = [];
154
- // NOTE: under normal operation, there should only be at most two existing records per `recordId` (initial + a potential subsequent write/delete),
155
- // but the DWN may crash before `delete()` is called below, so we use a loop as a tactic to clean up lingering data as needed
156
- for (const message of existingMessages) {
157
- const messageIsOld = yield Message.isOlder(message, newestMessage);
158
- if (messageIsOld) {
159
- // the easiest implementation here is delete each old messages
160
- // and re-create it with the right index (isLatestBaseState = 'false') if the message is the initial write,
161
- // but there is room for better/more efficient implementation here
162
- yield StorageController.deleteFromDataStoreIfNeeded(dataStore, tenant, message, newestMessage);
163
- // delete message from message store
164
- const messageCid = yield Message.getCid(message);
165
- yield messageStore.delete(tenant, messageCid);
166
- // if the existing message is the initial write
167
- // we actually need to keep it BUT, need to ensure the message is no longer marked as the latest state
168
- const existingMessageIsInitialWrite = yield RecordsWrite.isInitialWrite(message);
169
- if (existingMessageIsInitialWrite) {
170
- const existingRecordsWrite = yield RecordsWrite.parse(message);
171
- const isLatestBaseState = false;
172
- const indexes = yield existingRecordsWrite.constructIndexes(isLatestBaseState);
173
- const writeMessage = message;
174
- delete writeMessage.encodedData;
175
- yield messageStore.put(tenant, writeMessage, indexes);
176
- }
177
- else {
178
- const messageCid = yield Message.getCid(message);
179
- deletedMessageCids.push(messageCid);
180
- }
138
+ static async deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, newestMessage, messageStore, dataStore, stateIndex) {
139
+ const deletedMessageCids = [];
140
+ // NOTE: under normal operation, there should only be at most two existing records per `recordId` (initial + a potential subsequent write/delete),
141
+ // but the DWN may crash before `delete()` is called below, so we use a loop as a tactic to clean up lingering data as needed
142
+ for (const message of existingMessages) {
143
+ const messageIsOld = await Message.isOlder(message, newestMessage);
144
+ if (messageIsOld) {
145
+ // the easiest implementation here is delete each old messages
146
+ // and re-create it with the right index (isLatestBaseState = 'false') if the message is the initial write,
147
+ // but there is room for better/more efficient implementation here
148
+ await StorageController.deleteFromDataStoreIfNeeded(dataStore, tenant, message, newestMessage);
149
+ // delete message from message store
150
+ const messageCid = await Message.getCid(message);
151
+ await messageStore.delete(tenant, messageCid);
152
+ // if the existing message is the initial write
153
+ // we actually need to keep it BUT, need to ensure the message is no longer marked as the latest state
154
+ const existingMessageIsInitialWrite = await RecordsWrite.isInitialWrite(message);
155
+ if (existingMessageIsInitialWrite) {
156
+ const existingRecordsWrite = await RecordsWrite.parse(message);
157
+ const isLatestBaseState = false;
158
+ const indexes = await existingRecordsWrite.constructIndexes(isLatestBaseState);
159
+ const writeMessage = message;
160
+ delete writeMessage.encodedData;
161
+ await messageStore.put(tenant, writeMessage, indexes);
162
+ }
163
+ else {
164
+ const messageCid = await Message.getCid(message);
165
+ deletedMessageCids.push(messageCid);
181
166
  }
182
- yield stateIndex.delete(tenant, deletedMessageCids);
183
167
  }
184
- });
168
+ await stateIndex.delete(tenant, deletedMessageCids);
169
+ }
185
170
  }
186
171
  }
187
172
  //# sourceMappingURL=storage-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-controller.js","sourceRoot":"","sources":["../../../../src/store/storage-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-controller.js","sourceRoot":"","sources":["../../../../src/store/storage-controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission-types.js","sourceRoot":"","sources":["../../../../src/types/permission-types.ts"],"names":[],"mappings":"AAiGA,MAAM,CAAN,IAAY,8BAGX;AAHD,WAAY,8BAA8B;IACxC,uDAAqB,CAAA;IACrB,2DAAyB,CAAA;AAC3B,CAAC,EAHW,8BAA8B,KAA9B,8BAA8B,QAGzC"}
1
+ {"version":3,"file":"permission-types.js","sourceRoot":"","sources":["../../../../src/types/permission-types.ts"],"names":[],"mappings":"AAwGA,MAAM,CAAN,IAAY,8BAGX;AAHD,WAAY,8BAA8B;IACxC,uDAAqB,CAAA;IACrB,2DAAyB,CAAA;AAC3B,CAAC,EAHW,8BAA8B,KAA9B,8BAA8B,QAGzC"}
@@ -15,4 +15,14 @@ export var ProtocolAction;
15
15
  ProtocolAction["Read"] = "read";
16
16
  ProtocolAction["Update"] = "update";
17
17
  })(ProtocolAction || (ProtocolAction = {}));
18
+ /**
19
+ * Supported strategies for handling writes that would exceed a `$recordLimit`.
20
+ */
21
+ export var ProtocolRecordLimitStrategy;
22
+ (function (ProtocolRecordLimitStrategy) {
23
+ /** Reject the incoming write with an error. The author must delete old records first. */
24
+ ProtocolRecordLimitStrategy["Reject"] = "reject";
25
+ /** Automatically delete the oldest record(s) (by `dateCreated`) to make room for the new one. */
26
+ ProtocolRecordLimitStrategy["PurgeOldest"] = "purgeOldest";
27
+ })(ProtocolRecordLimitStrategy || (ProtocolRecordLimitStrategy = {}));
18
28
  //# sourceMappingURL=protocols-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocols-types.js","sourceRoot":"","sources":["../../../../src/types/protocols-types.ts"],"names":[],"mappings":"AA+DA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;AACzB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACxB,wCAAsB,CAAA;IACtB,sCAAoB,CAAA;IACpB,wCAAsB,CAAA;IACtB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,mCAAiB,CAAA;AACnB,CAAC,EATW,cAAc,KAAd,cAAc,QASzB"}
1
+ {"version":3,"file":"protocols-types.js","sourceRoot":"","sources":["../../../../src/types/protocols-types.ts"],"names":[],"mappings":"AA+DA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;AACzB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACxB,wCAAsB,CAAA;IACtB,sCAAoB,CAAA;IACpB,wCAAsB,CAAA;IACtB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,mCAAiB,CAAA;AACnB,CAAC,EATW,cAAc,KAAd,cAAc,QASzB;AA8ED;;GAEG;AACH,MAAM,CAAN,IAAY,2BAKX;AALD,WAAY,2BAA2B;IACrC,yFAAyF;IACzF,gDAAiB,CAAA;IACjB,iGAAiG;IACjG,0DAA2B,CAAA;AAC7B,CAAC,EALW,2BAA2B,KAA3B,2BAA2B,QAKtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"records-types.js","sourceRoot":"","sources":["../../../../src/types/records-types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,iDAAqC,CAAA;IACrC,mDAAuC,CAAA;IACvC,qDAAyC,CAAA;IACzC,uDAA2C,CAAA;IAC3C,iDAAqC,CAAA;IACrC,mDAAuC,CAAA;AACzC,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
1
+ {"version":3,"file":"records-types.js","sourceRoot":"","sources":["../../../../src/types/records-types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,iDAAqC,CAAA;IACrC,mDAAuC,CAAA;IACvC,qDAAyC,CAAA;IACzC,uDAA2C,CAAA;IAC3C,iDAAqC,CAAA;IACrC,mDAAuC,CAAA;AACzC,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
@@ -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
  /**
11
2
  * Wraps the given `AbortSignal` in a `Promise` that rejects if it is programmatically triggered,
12
3
  * otherwise the promise will remain in await state (will never resolve).
@@ -26,15 +17,13 @@ function promisifySignal(signal) {
26
17
  /**
27
18
  * Wraps the given `Promise` such that it will reject if the `AbortSignal` is triggered.
28
19
  */
29
- export function executeUnlessAborted(promise, signal) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- if (!signal) {
32
- return promise;
33
- }
34
- return Promise.race([
35
- promise,
36
- promisifySignal(signal),
37
- ]);
38
- });
20
+ export async function executeUnlessAborted(promise, signal) {
21
+ if (!signal) {
22
+ return promise;
23
+ }
24
+ return Promise.race([
25
+ promise,
26
+ promisifySignal(signal),
27
+ ]);
39
28
  }
40
29
  //# sourceMappingURL=abort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../../src/utils/abort.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;GAGG;AACH,SAAS,eAAe,CAAI,MAAmB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,+DAA+D;QAC/D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAgB,oBAAoB,CAAI,OAAmB,EAAE,MAA+B;;QAChG,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC;YAClB,OAAO;YACP,eAAe,CAAI,MAAM,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CAAA"}
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../../src/utils/abort.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,SAAS,eAAe,CAAI,MAAmB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,+DAA+D;QAC/D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,OAAmB,EAAE,MAA+B;IAChG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,eAAe,CAAI,MAAM,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC"}
@@ -1,19 +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
- var __asyncValues = (this && this.__asyncValues) || function (o) {
11
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
12
- var m = o[Symbol.asyncIterator], i;
13
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
14
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
15
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
16
- };
17
1
  /**
18
2
  * Array utility methods.
19
3
  */
@@ -28,45 +12,27 @@ export class ArrayUtility {
28
12
  /**
29
13
  * Asynchronously iterates an {AsyncGenerator} to return all the values in an array.
30
14
  */
31
- static fromAsyncGenerator(iterator) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- var _a, iterator_1, iterator_1_1;
34
- var _b, e_1, _c, _d;
35
- const array = [];
36
- try {
37
- for (_a = true, iterator_1 = __asyncValues(iterator); iterator_1_1 = yield iterator_1.next(), _b = iterator_1_1.done, !_b; _a = true) {
38
- _d = iterator_1_1.value;
39
- _a = false;
40
- const value = _d;
41
- array.push(value);
42
- }
43
- }
44
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
45
- finally {
46
- try {
47
- if (!_a && !_b && (_c = iterator_1.return)) yield _c.call(iterator_1);
48
- }
49
- finally { if (e_1) throw e_1.error; }
50
- }
51
- return array;
52
- });
15
+ static async fromAsyncGenerator(iterator) {
16
+ const array = [];
17
+ for await (const value of iterator) {
18
+ array.push(value);
19
+ }
20
+ return array;
53
21
  }
54
22
  /**
55
23
  * Generic asynchronous sort method.
56
24
  */
57
- static asyncSort(array, asyncComparer) {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- // this is a bubble sort implementation
60
- for (let i = 0; i < array.length; i++) {
61
- for (let j = i + 1; j < array.length; j++) {
62
- const comparison = yield asyncComparer(array[i], array[j]);
63
- if (comparison > 0) {
64
- [array[i], array[j]] = [array[j], array[i]]; // Swap
65
- }
25
+ static async asyncSort(array, asyncComparer) {
26
+ // this is a bubble sort implementation
27
+ for (let i = 0; i < array.length; i++) {
28
+ for (let j = i + 1; j < array.length; j++) {
29
+ const comparison = await asyncComparer(array[i], array[j]);
30
+ if (comparison > 0) {
31
+ [array[i], array[j]] = [array[j], array[i]]; // Swap
66
32
  }
67
33
  }
68
- return array;
69
- });
34
+ }
35
+ return array;
70
36
  }
71
37
  }
72
38
  //# sourceMappingURL=array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/utils/array.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB;;OAEG;IACI,MAAM,CAAC,eAAe,CAAC,MAAkB,EAAE,MAAiB;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzG,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAO,kBAAkB,CAAI,QAA2B;;;;YACnE,MAAM,KAAK,GAAa,EAAG,CAAC;;gBAC5B,gBAA0B,aAAA,cAAA,QAAQ,CAAA,kFAAE,CAAC;oBAAX,wBAAQ;oBAAR,WAAQ;oBAAvB,MAAM,KAAK,KAAA,CAAA;oBACpB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;;;;;;;;;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAED;;OAEG;IACI,MAAM,CAAO,SAAS,CAAI,KAAU,EAAE,aAA8C;;YACzF,uCAAuC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3D,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;wBACnB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;oBACtD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;CACF"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/utils/array.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB;;OAEG;IACI,MAAM,CAAC,eAAe,CAAC,MAAkB,EAAE,MAAiB;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzG,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAI,QAA2B;QACnE,MAAM,KAAK,GAAa,EAAG,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAI,KAAU,EAAE,aAA8C;QACzF,uCAAuC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}