@xyo-network/sdk-js 3.12.5 → 3.14.0

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 (235) hide show
  1. package/eslint.config.mjs +1 -1
  2. package/package.json +23 -21
  3. package/scripts/run-cycle.mjs +71 -0
  4. package/packages/modules-mongo/dist/browser/index.mjs +0 -195
  5. package/packages/modules-mongo/dist/browser/index.mjs.map +0 -1
  6. package/packages/modules-mongo/dist/neutral/index.mjs +0 -195
  7. package/packages/modules-mongo/dist/neutral/index.mjs.map +0 -1
  8. package/packages/modules-mongo/dist/node/index.mjs +0 -195
  9. package/packages/modules-mongo/dist/node/index.mjs.map +0 -1
  10. package/packages/modules-mongo/dist/types/Archivist/addArchivistModuleFactories.d.ts +0 -3
  11. package/packages/modules-mongo/dist/types/Archivist/addArchivistModuleFactories.d.ts.map +0 -1
  12. package/packages/modules-mongo/dist/types/Archivist/index.d.ts +0 -2
  13. package/packages/modules-mongo/dist/types/Archivist/index.d.ts.map +0 -1
  14. package/packages/modules-mongo/dist/types/Diviner/addDivinerModuleFactories.d.ts +0 -3
  15. package/packages/modules-mongo/dist/types/Diviner/addDivinerModuleFactories.d.ts.map +0 -1
  16. package/packages/modules-mongo/dist/types/Diviner/index.d.ts +0 -2
  17. package/packages/modules-mongo/dist/types/Diviner/index.d.ts.map +0 -1
  18. package/packages/modules-mongo/dist/types/Job/getJobs.d.ts +0 -4
  19. package/packages/modules-mongo/dist/types/Job/getJobs.d.ts.map +0 -1
  20. package/packages/modules-mongo/dist/types/Job/index.d.ts +0 -2
  21. package/packages/modules-mongo/dist/types/Job/index.d.ts.map +0 -1
  22. package/packages/modules-mongo/dist/types/JobQueue/JobQueueContainerModule.d.ts +0 -3
  23. package/packages/modules-mongo/dist/types/JobQueue/JobQueueContainerModule.d.ts.map +0 -1
  24. package/packages/modules-mongo/dist/types/JobQueue/getJobQueue.d.ts +0 -3
  25. package/packages/modules-mongo/dist/types/JobQueue/getJobQueue.d.ts.map +0 -1
  26. package/packages/modules-mongo/dist/types/JobQueue/getName.d.ts +0 -2
  27. package/packages/modules-mongo/dist/types/JobQueue/getName.d.ts.map +0 -1
  28. package/packages/modules-mongo/dist/types/JobQueue/index.d.ts +0 -2
  29. package/packages/modules-mongo/dist/types/JobQueue/index.d.ts.map +0 -1
  30. package/packages/modules-mongo/dist/types/Mongo/AddressInfo.d.ts +0 -6
  31. package/packages/modules-mongo/dist/types/Mongo/AddressInfo.d.ts.map +0 -1
  32. package/packages/modules-mongo/dist/types/Mongo/Indexes/IndexCreationInfo.d.ts +0 -3
  33. package/packages/modules-mongo/dist/types/Mongo/Indexes/IndexCreationInfo.d.ts.map +0 -1
  34. package/packages/modules-mongo/dist/types/Mongo/Indexes/Specifications/AddressInfo/UX_address.d.ts +0 -3
  35. package/packages/modules-mongo/dist/types/Mongo/Indexes/Specifications/AddressInfo/UX_address.d.ts.map +0 -1
  36. package/packages/modules-mongo/dist/types/Mongo/Indexes/Specifications/AddressInfo/index.d.ts +0 -3
  37. package/packages/modules-mongo/dist/types/Mongo/Indexes/Specifications/AddressInfo/index.d.ts.map +0 -1
  38. package/packages/modules-mongo/dist/types/Mongo/Indexes/Specifications/index.d.ts +0 -2
  39. package/packages/modules-mongo/dist/types/Mongo/Indexes/Specifications/index.d.ts.map +0 -1
  40. package/packages/modules-mongo/dist/types/Mongo/Indexes/addIndexes.d.ts +0 -2
  41. package/packages/modules-mongo/dist/types/Mongo/Indexes/addIndexes.d.ts.map +0 -1
  42. package/packages/modules-mongo/dist/types/Mongo/Indexes/index.d.ts +0 -2
  43. package/packages/modules-mongo/dist/types/Mongo/Indexes/index.d.ts.map +0 -1
  44. package/packages/modules-mongo/dist/types/Mongo/index.d.ts +0 -3
  45. package/packages/modules-mongo/dist/types/Mongo/index.d.ts.map +0 -1
  46. package/packages/modules-mongo/dist/types/Mongo/initializeDatabase.d.ts +0 -2
  47. package/packages/modules-mongo/dist/types/Mongo/initializeDatabase.d.ts.map +0 -1
  48. package/packages/modules-mongo/dist/types/PreviousHashStore/MongoDBPreviousHashStore.d.ts +0 -12
  49. package/packages/modules-mongo/dist/types/PreviousHashStore/MongoDBPreviousHashStore.d.ts.map +0 -1
  50. package/packages/modules-mongo/dist/types/PreviousHashStore/addPreviousHashStore.d.ts +0 -2
  51. package/packages/modules-mongo/dist/types/PreviousHashStore/addPreviousHashStore.d.ts.map +0 -1
  52. package/packages/modules-mongo/dist/types/PreviousHashStore/index.d.ts +0 -2
  53. package/packages/modules-mongo/dist/types/PreviousHashStore/index.d.ts.map +0 -1
  54. package/packages/modules-mongo/dist/types/addMongoModules.d.ts +0 -3
  55. package/packages/modules-mongo/dist/types/addMongoModules.d.ts.map +0 -1
  56. package/packages/modules-mongo/dist/types/canAddMongoModules.d.ts +0 -2
  57. package/packages/modules-mongo/dist/types/canAddMongoModules.d.ts.map +0 -1
  58. package/packages/modules-mongo/dist/types/index.d.ts +0 -4
  59. package/packages/modules-mongo/dist/types/index.d.ts.map +0 -1
  60. package/packages/modules-mongo/dist/types/mongoTypes.d.ts +0 -5
  61. package/packages/modules-mongo/dist/types/mongoTypes.d.ts.map +0 -1
  62. package/packages/modules-mongo/packages/archivist/dist/browser/index.mjs +0 -274
  63. package/packages/modules-mongo/packages/archivist/dist/browser/index.mjs.map +0 -1
  64. package/packages/modules-mongo/packages/archivist/dist/neutral/index.mjs +0 -274
  65. package/packages/modules-mongo/packages/archivist/dist/neutral/index.mjs.map +0 -1
  66. package/packages/modules-mongo/packages/archivist/dist/node/index.mjs +0 -274
  67. package/packages/modules-mongo/packages/archivist/dist/node/index.mjs.map +0 -1
  68. package/packages/modules-mongo/packages/archivist/dist/types/Archivist.d.ts +0 -69
  69. package/packages/modules-mongo/packages/archivist/dist/types/Archivist.d.ts.map +0 -1
  70. package/packages/modules-mongo/packages/archivist/dist/types/ArchivistV2.d.ts +0 -65
  71. package/packages/modules-mongo/packages/archivist/dist/types/ArchivistV2.d.ts.map +0 -1
  72. package/packages/modules-mongo/packages/archivist/dist/types/index.d.ts +0 -4
  73. package/packages/modules-mongo/packages/archivist/dist/types/index.d.ts.map +0 -1
  74. package/packages/modules-mongo/packages/archivist/dist/types/lib/index.d.ts +0 -2
  75. package/packages/modules-mongo/packages/archivist/dist/types/lib/index.d.ts.map +0 -1
  76. package/packages/modules-mongo/packages/archivist/dist/types/lib/validByType.d.ts +0 -4
  77. package/packages/modules-mongo/packages/archivist/dist/types/lib/validByType.d.ts.map +0 -1
  78. package/packages/modules-mongo/packages/archivist/packages/model/dist/browser/index.mjs +0 -6
  79. package/packages/modules-mongo/packages/archivist/packages/model/dist/browser/index.mjs.map +0 -1
  80. package/packages/modules-mongo/packages/archivist/packages/model/dist/neutral/index.mjs +0 -6
  81. package/packages/modules-mongo/packages/archivist/packages/model/dist/neutral/index.mjs.map +0 -1
  82. package/packages/modules-mongo/packages/archivist/packages/model/dist/node/index.mjs +0 -6
  83. package/packages/modules-mongo/packages/archivist/packages/model/dist/node/index.mjs.map +0 -1
  84. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Config.d.ts +0 -9
  85. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Config.d.ts.map +0 -1
  86. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/ConfigV2.d.ts +0 -8
  87. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/ConfigV2.d.ts.map +0 -1
  88. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Labels.d.ts +0 -5
  89. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Labels.d.ts.map +0 -1
  90. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Params.d.ts +0 -9
  91. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Params.d.ts.map +0 -1
  92. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Schema.d.ts +0 -3
  93. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/Schema.d.ts.map +0 -1
  94. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/index.d.ts +0 -5
  95. package/packages/modules-mongo/packages/archivist/packages/model/dist/types/index.d.ts.map +0 -1
  96. package/packages/modules-mongo/packages/diviner/dist/browser/index.mjs +0 -1100
  97. package/packages/modules-mongo/packages/diviner/dist/browser/index.mjs.map +0 -1
  98. package/packages/modules-mongo/packages/diviner/dist/neutral/index.mjs +0 -1100
  99. package/packages/modules-mongo/packages/diviner/dist/neutral/index.mjs.map +0 -1
  100. package/packages/modules-mongo/packages/diviner/dist/node/index.mjs +0 -1100
  101. package/packages/modules-mongo/packages/diviner/dist/node/index.mjs.map +0 -1
  102. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/defineJobs.d.ts +0 -3
  103. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/defineJobs.d.ts.map +0 -1
  104. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/getName.d.ts +0 -2
  105. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/getName.d.ts.map +0 -1
  106. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/index.d.ts +0 -3
  107. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/index.d.ts.map +0 -1
  108. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/scheduleJobs.d.ts +0 -3
  109. package/packages/modules-mongo/packages/diviner/dist/types/JobQueue/scheduleJobs.d.ts.map +0 -1
  110. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBAddressHistoryDiviner.d.ts +0 -61
  111. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBAddressHistoryDiviner.d.ts.map +0 -1
  112. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBAddressSpaceBatchDiviner.d.ts +0 -67
  113. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBAddressSpaceBatchDiviner.d.ts.map +0 -1
  114. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBAddressSpaceDiviner.d.ts +0 -57
  115. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBAddressSpaceDiviner.d.ts.map +0 -1
  116. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBBoundWitnessDiviner.d.ts +0 -59
  117. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBBoundWitnessDiviner.d.ts.map +0 -1
  118. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBBoundWitnessStatsDiviner.d.ts +0 -91
  119. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBBoundWitnessStatsDiviner.d.ts.map +0 -1
  120. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBPayloadDiviner.d.ts +0 -57
  121. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBPayloadDiviner.d.ts.map +0 -1
  122. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBPayloadStatsDiviner.d.ts +0 -104
  123. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBPayloadStatsDiviner.d.ts.map +0 -1
  124. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBSchemaListDiviner.d.ts +0 -61
  125. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBSchemaListDiviner.d.ts.map +0 -1
  126. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBSchemaStatsDiviner.d.ts +0 -113
  127. package/packages/modules-mongo/packages/diviner/dist/types/MongoDBSchemaStatsDiviner.d.ts.map +0 -1
  128. package/packages/modules-mongo/packages/diviner/dist/types/SetIterator/BatchSetIterator.d.ts +0 -10
  129. package/packages/modules-mongo/packages/diviner/dist/types/SetIterator/BatchSetIterator.d.ts.map +0 -1
  130. package/packages/modules-mongo/packages/diviner/dist/types/SetIterator/SetIterator.d.ts +0 -9
  131. package/packages/modules-mongo/packages/diviner/dist/types/SetIterator/SetIterator.d.ts.map +0 -1
  132. package/packages/modules-mongo/packages/diviner/dist/types/SetIterator/index.d.ts +0 -3
  133. package/packages/modules-mongo/packages/diviner/dist/types/SetIterator/index.d.ts.map +0 -1
  134. package/packages/modules-mongo/packages/diviner/dist/types/UserLocationsDiviner.d.ts +0 -41
  135. package/packages/modules-mongo/packages/diviner/dist/types/UserLocationsDiviner.d.ts.map +0 -1
  136. package/packages/modules-mongo/packages/diviner/dist/types/index.d.ts +0 -12
  137. package/packages/modules-mongo/packages/diviner/dist/types/index.d.ts.map +0 -1
  138. package/packages/modules-mongo/packages/module/dist/browser/index.mjs +0 -4
  139. package/packages/modules-mongo/packages/module/dist/browser/index.mjs.map +0 -1
  140. package/packages/modules-mongo/packages/module/dist/neutral/index.mjs +0 -4
  141. package/packages/modules-mongo/packages/module/dist/neutral/index.mjs.map +0 -1
  142. package/packages/modules-mongo/packages/module/dist/node/index.mjs +0 -4
  143. package/packages/modules-mongo/packages/module/dist/node/index.mjs.map +0 -1
  144. package/packages/modules-mongo/packages/module/dist/types/index.d.ts +0 -3
  145. package/packages/modules-mongo/packages/module/dist/types/index.d.ts.map +0 -1
  146. package/packages/modules-mongo/packages/module/packages/abstract/dist/browser/index.mjs +0 -277
  147. package/packages/modules-mongo/packages/module/packages/abstract/dist/browser/index.mjs.map +0 -1
  148. package/packages/modules-mongo/packages/module/packages/abstract/dist/neutral/index.mjs +0 -277
  149. package/packages/modules-mongo/packages/module/packages/abstract/dist/neutral/index.mjs.map +0 -1
  150. package/packages/modules-mongo/packages/module/packages/abstract/dist/node/index.mjs +0 -277
  151. package/packages/modules-mongo/packages/module/packages/abstract/dist/node/index.mjs.map +0 -1
  152. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/AnyAbstractModule.d.ts +0 -4
  153. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/AnyAbstractModule.d.ts.map +0 -1
  154. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Collections.d.ts +0 -9
  155. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Collections.d.ts.map +0 -1
  156. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Databases.d.ts +0 -4
  157. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Databases.d.ts.map +0 -1
  158. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Defaults.d.ts +0 -5
  159. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Defaults.d.ts.map +0 -1
  160. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/IndexDescription.d.ts +0 -24
  161. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/IndexDescription.d.ts.map +0 -1
  162. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Indexes/CollectionIndexFunction.d.ts +0 -3
  163. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Indexes/CollectionIndexFunction.d.ts.map +0 -1
  164. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Indexes/index.d.ts +0 -2
  165. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Indexes/index.d.ts.map +0 -1
  166. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Module.d.ts +0 -42
  167. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/Module.d.ts.map +0 -1
  168. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/ModuleV2.d.ts +0 -39
  169. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/ModuleV2.d.ts.map +0 -1
  170. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/getBaseMongoSdk.d.ts +0 -6
  171. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/getBaseMongoSdk.d.ts.map +0 -1
  172. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/getMongoDBConfig.d.ts +0 -5
  173. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/getMongoDBConfig.d.ts.map +0 -1
  174. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/hasMongoDBConfig.d.ts +0 -2
  175. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/hasMongoDBConfig.d.ts.map +0 -1
  176. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/index.d.ts +0 -4
  177. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/config/index.d.ts.map +0 -1
  178. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/index.d.ts +0 -10
  179. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/index.d.ts.map +0 -1
  180. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/util/dbProperty.d.ts +0 -4
  181. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/util/dbProperty.d.ts.map +0 -1
  182. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/util/index.d.ts +0 -2
  183. package/packages/modules-mongo/packages/module/packages/abstract/dist/types/util/index.d.ts.map +0 -1
  184. package/packages/modules-mongo/packages/module/packages/model/dist/browser/index.mjs +0 -10
  185. package/packages/modules-mongo/packages/module/packages/model/dist/browser/index.mjs.map +0 -1
  186. package/packages/modules-mongo/packages/module/packages/model/dist/neutral/index.mjs +0 -10
  187. package/packages/modules-mongo/packages/module/packages/model/dist/neutral/index.mjs.map +0 -1
  188. package/packages/modules-mongo/packages/module/packages/model/dist/node/index.mjs +0 -10
  189. package/packages/modules-mongo/packages/module/packages/model/dist/node/index.mjs.map +0 -1
  190. package/packages/modules-mongo/packages/module/packages/model/dist/types/Config.d.ts +0 -9
  191. package/packages/modules-mongo/packages/module/packages/model/dist/types/Config.d.ts.map +0 -1
  192. package/packages/modules-mongo/packages/module/packages/model/dist/types/ConfigV2.d.ts +0 -8
  193. package/packages/modules-mongo/packages/module/packages/model/dist/types/ConfigV2.d.ts.map +0 -1
  194. package/packages/modules-mongo/packages/module/packages/model/dist/types/Labels.d.ts +0 -6
  195. package/packages/modules-mongo/packages/module/packages/model/dist/types/Labels.d.ts.map +0 -1
  196. package/packages/modules-mongo/packages/module/packages/model/dist/types/Module.d.ts +0 -9
  197. package/packages/modules-mongo/packages/module/packages/model/dist/types/Module.d.ts.map +0 -1
  198. package/packages/modules-mongo/packages/module/packages/model/dist/types/ModuleV2.d.ts +0 -7
  199. package/packages/modules-mongo/packages/module/packages/model/dist/types/ModuleV2.d.ts.map +0 -1
  200. package/packages/modules-mongo/packages/module/packages/model/dist/types/MongoDBModuleStatic.d.ts +0 -5
  201. package/packages/modules-mongo/packages/module/packages/model/dist/types/MongoDBModuleStatic.d.ts.map +0 -1
  202. package/packages/modules-mongo/packages/module/packages/model/dist/types/Params.d.ts +0 -10
  203. package/packages/modules-mongo/packages/module/packages/model/dist/types/Params.d.ts.map +0 -1
  204. package/packages/modules-mongo/packages/module/packages/model/dist/types/ParamsV2.d.ts +0 -9
  205. package/packages/modules-mongo/packages/module/packages/model/dist/types/ParamsV2.d.ts.map +0 -1
  206. package/packages/modules-mongo/packages/module/packages/model/dist/types/Schema.d.ts +0 -3
  207. package/packages/modules-mongo/packages/module/packages/model/dist/types/Schema.d.ts.map +0 -1
  208. package/packages/modules-mongo/packages/module/packages/model/dist/types/index.d.ts +0 -10
  209. package/packages/modules-mongo/packages/module/packages/model/dist/types/index.d.ts.map +0 -1
  210. package/packages/modules-mongo/packages/payload/dist/browser/index.mjs +0 -51
  211. package/packages/modules-mongo/packages/payload/dist/browser/index.mjs.map +0 -1
  212. package/packages/modules-mongo/packages/payload/dist/neutral/index.mjs +0 -51
  213. package/packages/modules-mongo/packages/payload/dist/neutral/index.mjs.map +0 -1
  214. package/packages/modules-mongo/packages/payload/dist/node/index.mjs +0 -51
  215. package/packages/modules-mongo/packages/payload/dist/node/index.mjs.map +0 -1
  216. package/packages/modules-mongo/packages/payload/dist/types/BoundWitness/BoundWitnessMongoMeta.d.ts +0 -7
  217. package/packages/modules-mongo/packages/payload/dist/types/BoundWitness/BoundWitnessMongoMeta.d.ts.map +0 -1
  218. package/packages/modules-mongo/packages/payload/dist/types/BoundWitness/BoundWitnessWithMongoMeta.d.ts +0 -6
  219. package/packages/modules-mongo/packages/payload/dist/types/BoundWitness/BoundWitnessWithMongoMeta.d.ts.map +0 -1
  220. package/packages/modules-mongo/packages/payload/dist/types/BoundWitness/index.d.ts +0 -3
  221. package/packages/modules-mongo/packages/payload/dist/types/BoundWitness/index.d.ts.map +0 -1
  222. package/packages/modules-mongo/packages/payload/dist/types/Mappings/fromDbRepresentation.d.ts +0 -8
  223. package/packages/modules-mongo/packages/payload/dist/types/Mappings/fromDbRepresentation.d.ts.map +0 -1
  224. package/packages/modules-mongo/packages/payload/dist/types/Mappings/index.d.ts +0 -3
  225. package/packages/modules-mongo/packages/payload/dist/types/Mappings/index.d.ts.map +0 -1
  226. package/packages/modules-mongo/packages/payload/dist/types/Mappings/toDbRepresentation.d.ts +0 -8
  227. package/packages/modules-mongo/packages/payload/dist/types/Mappings/toDbRepresentation.d.ts.map +0 -1
  228. package/packages/modules-mongo/packages/payload/dist/types/Payload/PayloadMongoMeta.d.ts +0 -11
  229. package/packages/modules-mongo/packages/payload/dist/types/Payload/PayloadMongoMeta.d.ts.map +0 -1
  230. package/packages/modules-mongo/packages/payload/dist/types/Payload/PayloadWithMongoMeta.d.ts +0 -5
  231. package/packages/modules-mongo/packages/payload/dist/types/Payload/PayloadWithMongoMeta.d.ts.map +0 -1
  232. package/packages/modules-mongo/packages/payload/dist/types/Payload/index.d.ts +0 -3
  233. package/packages/modules-mongo/packages/payload/dist/types/Payload/index.d.ts.map +0 -1
  234. package/packages/modules-mongo/packages/payload/dist/types/index.d.ts +0 -4
  235. package/packages/modules-mongo/packages/payload/dist/types/index.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/MongoDBAddressHistoryDiviner.ts","../../src/MongoDBAddressSpaceBatchDiviner.ts","../../src/MongoDBAddressSpaceDiviner.ts","../../src/MongoDBBoundWitnessDiviner.ts","../../src/MongoDBBoundWitnessStatsDiviner.ts","../../src/JobQueue/defineJobs.ts","../../src/JobQueue/scheduleJobs.ts","../../src/SetIterator/BatchSetIterator.ts","../../src/SetIterator/SetIterator.ts","../../src/MongoDBPayloadDiviner.ts","../../src/MongoDBPayloadStatsDiviner.ts","../../src/MongoDBSchemaListDiviner.ts","../../src/MongoDBSchemaStatsDiviner.ts","../../src/UserLocationsDiviner.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address, Hash } from '@xylabs/hex'\nimport { hexFromHexString } from '@xylabs/hex'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { AddressHistoryQueryPayload } from '@xyo-network/diviner-address-history'\nimport {\n AddressHistoryDiviner,\n AddressHistoryDivinerConfigSchema,\n isAddressHistoryQueryPayload,\n} from '@xyo-network/diviner-address-history'\nimport {\n DefaultLimit, DefaultMaxTimeMS, MongoDBModuleMixin,\n} from '@xyo-network/module-abstract-mongodb'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { BoundWitnessWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation } from '@xyo-network/payload-mongodb'\nimport type { Filter, Sort } from 'mongodb'\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(AddressHistoryDiviner)\n\nexport class MongoDBAddressHistoryDiviner extends MongoDBDivinerBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, AddressHistoryDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = AddressHistoryDivinerConfigSchema\n\n protected override async divineHandler(payloads?: Payload[]): Promise<BoundWitness[]> {\n const query = payloads?.find(isAddressHistoryQueryPayload) as AddressHistoryQueryPayload | undefined\n // TODO: Support multiple queries\n if (!query) return []\n\n const { address, limit } = query\n // TODO: The address field seems to be meant for the address\n // of the intended handler but is being used here to filter\n // for the query. This should be fixed to use a separate field.\n const addresses = sanitizeAddress(address)\n assertEx(addresses, () => 'MongoDBAddressHistoryDiviner: Missing address for query')\n const blocks = await this.getBlocks(addresses, limit || DefaultLimit)\n return blocks.map(fromDbRepresentation) as BoundWitness[]\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n\n private getBlocks = async (address: Address, limit: number): Promise<BoundWitnessWithMongoMeta[]> => {\n let nextHash: Hash | undefined = undefined\n const blocks: BoundWitnessWithMongoMeta[] = []\n const defaultFilter: Filter<BoundWitnessWithMongoMeta> = { addresses: address }\n const sort: Sort = { _sequence: -1 }\n for (let i = 0; i < limit; i++) {\n let block: BoundWitnessWithMongoMeta | undefined = undefined\n const byDataHash: Filter<BoundWitnessWithMongoMeta> = { ...defaultFilter }\n if (nextHash) byDataHash._hash = nextHash\n const foundByDataHash = (await (await this.boundWitnesses.find(byDataHash)).sort(sort).limit(1).maxTimeMS(DefaultMaxTimeMS).toArray()).pop()\n if (foundByDataHash) {\n block = foundByDataHash\n } else {\n const byRootHash: Filter<BoundWitnessWithMongoMeta> = { ...defaultFilter }\n if (nextHash) byRootHash._dataHash = nextHash\n const foundByRootHash = (await (await this.boundWitnesses.find(byRootHash)).sort(sort).limit(1).maxTimeMS(DefaultMaxTimeMS).toArray()).pop()\n if (foundByRootHash) {\n block = foundByRootHash\n }\n }\n if (!block) break\n blocks.push(block)\n const addressIndex = block.addresses.indexOf(address)\n const previousHash = block.previous_hashes[addressIndex]\n if (!previousHash) break\n nextHash = previousHash\n }\n return blocks\n }\n}\n\nconst sanitizeAddress = (a: string | string[] | undefined): Address => {\n return assertEx(\n (\n ([] as (string | undefined)[])\n // eslint-disable-next-line unicorn/prefer-spread\n .concat(a)\n .filter(exists)\n .map(x => x.toLowerCase())\n .map(z => hexFromHexString(z, { prefix: false }))\n .findLast(exists)\n ), () => 'MongoDBAddressHistoryDiviner: Invalid address',\n )\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { difference, union } from '@xylabs/set'\nimport { Account } from '@xyo-network/account'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport type { BoundWitnessPointerPayload } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessPointerSchema } from '@xyo-network/boundwitness-model'\nimport { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract'\nimport { AddressSpaceBatchDivinerConfigSchema } from '@xyo-network/diviner-models'\nimport {\n COLLECTIONS, DATABASES, DefaultMaxTimeMS, MongoDBModuleMixin,\n} from '@xyo-network/module-abstract-mongodb'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { RunCommandOptions } from 'mongodb'\n\nconst moduleName = 'MongoDBAddressSpaceBatchDiviner'\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(AddressSpaceDiviner)\n\nexport class MongoDBAddressSpaceBatchDiviner extends MongoDBDivinerBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, AddressSpaceBatchDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = AddressSpaceBatchDivinerConfigSchema\n\n // TODO: Get via config or default\n protected readonly batchSize = 50\n protected currentlyRunning = false\n protected response: BoundWitnessPointerPayload | undefined\n protected witnessedAddresses: Set<string> = new Set<string>()\n\n private _paginationAccount?: AccountInstance\n\n protected async backgroundDivine(): Promise<void> {\n if (this.currentlyRunning) return\n try {\n this.currentlyRunning = true\n if (await this.initializeArchivist()) {\n const result = await this.boundWitnesses.useMongo((db) => {\n return db.db(DATABASES.Archivist).command(\n {\n distinct: COLLECTIONS.BoundWitnesses,\n key: 'addresses',\n },\n { maxTimeMS: DefaultMaxTimeMS } as RunCommandOptions,\n )\n })\n // Ensure uniqueness on case\n const addresses = new Set<string>(result?.values?.map((address: string) => address?.toLowerCase()).filter(exists))\n // Filter addresses we've seen before\n const newAddresses = difference(addresses, this.witnessedAddresses)\n if (newAddresses.size === 0) return\n const toStore = [...newAddresses].map((address) => {\n return { address, schema: AddressSchema }\n })\n const archivistMod = await this.archivistInstance()\n // Save the paginated address response to the respective archivist\n const archivist = ArchivistWrapper.wrap(archivistMod, await this.getPaginationAccount())\n for (let j = 0; j < toStore.length; j += this.batchSize) {\n const batch = toStore.slice(j, j + this.batchSize)\n await archivist.insert(batch)\n }\n this.witnessedAddresses = union(this.witnessedAddresses, newAddresses)\n }\n } catch (error) {\n this.logger?.error(`${moduleName}.BackgroundDivine: ${error}`)\n } finally {\n this.currentlyRunning = false\n }\n }\n\n protected override divineHandler(_payloads?: Payload[]): Promise<Payload[]> {\n // Restart if not running\n void this.backgroundDivine()\n // Return last calculated response\n return this.response ? Promise.resolve([this.response]) : Promise.resolve([])\n }\n\n protected async getPaginationAccount() {\n this._paginationAccount = this._paginationAccount ?? (await Account.random())\n return this._paginationAccount\n }\n\n protected async initializeArchivist() {\n try {\n // Create a paginationAccount per archivist\n const archivistMod = await this.archivistInstance()\n assertEx(archivistMod, () => `${moduleName}.Start: No archivists found`)\n const archivist = ArchivistWrapper.wrap(archivistMod, this.account)\n // Pre-mint response payload pointer for dereferencing results\n const divinedAnswerPointer = new PayloadBuilder<BoundWitnessPointerPayload>({ schema: BoundWitnessPointerSchema })\n .fields({ reference: [[{ address: (await this.getPaginationAccount()).address }], [{ schema: AddressSchema }]] })\n .build()\n // Ensure the pointer exists in the archivist (but don't insert it twice)\n const divinedAnswerPointerExists = (await archivist.get([await PayloadBuilder.dataHash(divinedAnswerPointer)]))?.length > 0\n if (!divinedAnswerPointerExists) await archivist.insert([divinedAnswerPointer])\n // Save the pointer to return to callers\n this.response = divinedAnswerPointer\n return true\n } catch {\n // Anything preventing us from connecting to the archivist\n // will require a full re-initialization\n this.response = undefined\n }\n return false\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n void this.backgroundDivine()\n return true\n }\n}\n","import { exists } from '@xylabs/exists'\nimport { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract'\nimport { AddressSpaceDivinerConfigSchema } from '@xyo-network/diviner-models'\nimport { DefaultMaxTimeMS, MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(AddressSpaceDiviner)\n\nexport class MongoDBAddressSpaceDiviner extends MongoDBDivinerBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, AddressSpaceDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = AddressSpaceDivinerConfigSchema\n\n protected override async divineHandler(_payloads?: Payload[]): Promise<Payload[]> {\n // TODO: Most Recently Used, Most Frequently Used, Addresses of Value/Importance to Me\n const result = await this.boundWitnesses.useCollection(async (collection) => {\n return await collection.distinct('addresses', {}, { maxTimeMS: DefaultMaxTimeMS })\n })\n // Ensure uniqueness on case\n const addresses = new Set<string>(result?.map((address: string) => address?.toLowerCase()).filter(exists))\n return [...addresses].map((address) => {\n return { address, schema: AddressSchema }\n })\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { flatten } from '@xylabs/array'\nimport { exists } from '@xylabs/exists'\nimport { hexFromHexString } from '@xylabs/hex'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-abstract'\nimport type { BoundWitnessDivinerQueryPayload } from '@xyo-network/diviner-boundwitness-model'\nimport {\n BoundWitnessDivinerConfigSchema,\n isBoundWitnessDivinerQueryPayload,\n} from '@xyo-network/diviner-boundwitness-model'\nimport {\n DefaultLimit, DefaultMaxTimeMS, DefaultOrder, MongoDBModuleMixin,\n} from '@xyo-network/module-abstract-mongodb'\nimport {\n type Payload, type Schema, SequenceConstants,\n} from '@xyo-network/payload-model'\nimport type { BoundWitnessWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport { fromDbRepresentation } from '@xyo-network/payload-mongodb'\nimport type { Filter, SortDirection } from 'mongodb'\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(BoundWitnessDiviner)\n\nexport class MongoDBBoundWitnessDiviner extends MongoDBDivinerBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BoundWitnessDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = BoundWitnessDivinerConfigSchema\n\n // eslint-disable-next-line complexity\n protected override async divineHandler(payloads?: Payload[]): Promise<BoundWitness[]> {\n const query = payloads?.find<BoundWitnessDivinerQueryPayload>(isBoundWitnessDivinerQueryPayload)\n // TODO: Support multiple queries\n if (!query) return []\n // NOTE: We're supporting address (which is deprecated) until we can ensure that all\n // clients are using addresses\n const {\n address,\n addresses,\n destination,\n limit = DefaultLimit,\n cursor = (query.order ?? DefaultOrder) === 'asc' ? SequenceConstants.minLocalSequence : SequenceConstants.maxLocalSequence,\n order = DefaultOrder,\n payload_hashes,\n payload_schemas,\n sourceQuery,\n } = query\n\n const direction = order === 'asc' ? 1 : -1\n const sort: { [key: string]: SortDirection } = { _sequence: direction }\n const filter: Filter<BoundWitnessWithMongoMeta> = {}\n if (cursor) {\n filter._sequence = order === 'desc' ? { $exists: true, $lt: cursor } : { $exists: true, $gt: cursor }\n }\n\n // NOTE: Defaulting to $all since it makes the most sense when singing addresses are supplied\n // but based on how MongoDB implements multi-key indexes $in might be much faster and we could\n // solve the multi-sig problem via multiple API calls when multi-sig is desired instead of\n // potentially impacting performance for all single-address queries\n const allAddresses = flatten(address, addresses)\n .map(x => hexFromHexString(x, { prefix: false }))\n .filter(exists)\n if (allAddresses.length > 0) filter.addresses = allAddresses.length === 1 ? allAddresses[0] : { $all: allAddresses }\n if (payload_hashes?.length) filter.payload_hashes = { $in: payload_hashes }\n if (payload_schemas?.length) filter.payload_schemas = { $all: payload_schemas }\n if (sourceQuery) filter['_$sourceQuery'] = sourceQuery\n if (destination?.length) filter['_$destination'] = { $in: destination }\n const result = (await (await this.boundWitnesses.find(filter)).sort(sort).limit(limit).maxTimeMS(DefaultMaxTimeMS).toArray()).map(\n fromDbRepresentation,\n ) as BoundWitness[]\n return result\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport type { Address } from '@xylabs/hex'\nimport { MongoClientWrapper } from '@xylabs/mongo'\nimport { fulfilled, rejected } from '@xylabs/promise'\nimport { BoundWitnessStatsDiviner } from '@xyo-network/diviner-boundwitness-stats-abstract'\nimport type {\n AttachableDivinerInstance,\n BoundWitnessStatsPayload,\n BoundWitnessStatsQueryPayload,\n DivinerParams,\n} from '@xyo-network/diviner-models'\nimport {\n asDivinerInstance,\n BoundWitnessStatsDivinerConfigSchema,\n BoundWitnessStatsDivinerSchema,\n isBoundWitnessStatsQueryPayload,\n} from '@xyo-network/diviner-models'\nimport {\n COLLECTIONS, DATABASES, MongoDBModuleMixin,\n} from '@xyo-network/module-abstract-mongodb'\nimport type { AddressPayload } from '@xyo-network/module-model'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema, WithSources,\n} from '@xyo-network/payload-model'\nimport type { BoundWitnessWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport type { Job, JobProvider } from '@xyo-network/shared'\nimport type {\n ChangeStream, ChangeStreamInsertDocument, ChangeStreamOptions, ResumeToken, UpdateOptions,\n} from 'mongodb'\n\nimport { defineJobs, scheduleJobs } from './JobQueue/index.js'\nimport { SetIterator } from './SetIterator/index.js'\n\nconst updateOptions: UpdateOptions = { upsert: true }\n\ninterface Stats {\n address: string\n bound_witnesses?: {\n count?: number\n }\n}\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(BoundWitnessStatsDiviner)\n\nconst moduleName = 'MongoDBBoundWitnessStatsDiviner'\n\nexport class MongoDBBoundWitnessStatsDiviner\n extends MongoDBDivinerBase<DivinerParams, BoundWitnessStatsQueryPayload, BoundWitnessStatsPayload>\n implements\n BoundWitnessStatsDiviner<DivinerParams, BoundWitnessStatsQueryPayload, BoundWitnessStatsPayload>,\n AttachableDivinerInstance<DivinerParams, BoundWitnessStatsQueryPayload, BoundWitnessStatsPayload>,\n JobProvider {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BoundWitnessStatsDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = BoundWitnessStatsDivinerConfigSchema\n\n /**\n * Iterates over know addresses obtained from AddressDiviner\n */\n protected readonly addressIterator: SetIterator<Address> = new SetIterator([])\n\n /**\n * The interval at which the background divine task will run. Prevents\n * continuously iterating over DB and exhausting DB resources\n */\n protected readonly backgroundDivineIntervalMs = 250\n\n /**\n * A reference to the background task to ensure that the\n * continuous background divine stays running\n */\n protected backgroundDivineTask: Promise<void> | undefined\n\n protected changeStream: ChangeStream | undefined = undefined\n protected pendingCounts: Record<string, number> = {}\n protected resumeAfter: ResumeToken | undefined = undefined\n\n get jobs(): Job[] {\n return [\n {\n name: `${moduleName}.UpdateChanges`,\n onSuccess: () => {\n this.pendingCounts = {}\n },\n schedule: '1 minute',\n task: async () => await this.updateChanges(),\n },\n {\n name: `${moduleName}.DivineAddressesBatch`,\n schedule: '5 minute',\n task: async () => await this.divineAddressesBatch(),\n },\n ]\n }\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload<BoundWitnessStatsPayload>[]> {\n const query = payloads?.find<BoundWitnessStatsQueryPayload>(isBoundWitnessStatsQueryPayload)\n const addresses\n = query?.address\n ? Array.isArray(query?.address)\n ? query.address\n : [query.address]\n : undefined\n const counts = addresses ? await Promise.all(addresses.map(address => this.divineAddress(address))) : [await this.divineAllAddresses()]\n return counts.map(\n count => new PayloadBuilder<BoundWitnessStatsPayload>({ schema: BoundWitnessStatsDivinerSchema }).fields({ count }).build(),\n )\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n await this.registerWithChangeStream()\n defineJobs(this.jobQueue, this.jobs)\n\n this.jobQueue.once('ready', async () => await scheduleJobs(this.jobQueue, this.jobs))\n return true\n }\n\n protected override async stopHandler() {\n await this.changeStream?.close()\n return await super.stopHandler()\n }\n\n private backgroundDivine = async (): Promise<void> => {\n for (const address of this.addressIterator) {\n try {\n await this.divineAddressFull(address)\n } catch (error) {\n this.logger?.error(`${moduleName}.BackgroundDivine: ${error}`)\n }\n await delay(this.backgroundDivineIntervalMs)\n }\n this.backgroundDivineTask = undefined\n }\n\n private divineAddress = async (address: Address) => {\n const stats = await this.boundWitnesses.useMongo(async (mongo) => {\n return await mongo.db(DATABASES.Archivist).collection<Stats>(COLLECTIONS.ArchivistStats).findOne({ address: address })\n })\n const remote = stats?.bound_witnesses?.count || 0\n const local = this.pendingCounts[address] || 0\n return remote + local\n }\n\n private divineAddressFull = async (address: Address) => {\n const count = await this.boundWitnesses.useCollection(collection => collection.countDocuments({ addresses: { $in: [address] } }))\n await this.storeDivinedResult(address, count)\n return count\n }\n\n private divineAddressesBatch = async () => {\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Updating Addresses`)\n const addressSpaceDiviners = await this.upResolver.resolve(assertEx('AddressSpaceDiviner'))\n const addressSpaceDiviner = asDivinerInstance(addressSpaceDiviners, `${moduleName}.DivineAddressesBatch: Missing AddressSpaceDiviner`)\n const result = (await addressSpaceDiviner.divine([])) || []\n const addresses = result.filter((x): x is WithSources<AddressPayload> => x.schema === AddressSchema).map(x => x.address)\n const additions = this.addressIterator.addValues(addresses)\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Incoming Addresses Total: ${addresses.length} New: ${additions}`)\n if (addresses.length > 0 && !this.backgroundDivineTask) this.backgroundDivineTask = this.backgroundDivine()\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Updated Addresses`)\n }\n\n private divineAllAddresses = () => this.boundWitnesses.useCollection(collection => collection.estimatedDocumentCount())\n\n private processChange = (change: ChangeStreamInsertDocument<BoundWitnessWithMongoMeta>) => {\n this.resumeAfter = change._id\n const addresses = change?.fullDocument?.addresses\n for (const address of addresses) {\n if (address) this.pendingCounts[address] = (this.pendingCounts[address] || 0) + 1\n }\n }\n\n private registerWithChangeStream = async () => {\n this.logger?.log(`${moduleName}.RegisterWithChangeStream: Registering`)\n const wrapper = MongoClientWrapper.get(this.boundWitnesses.uri, this.boundWitnesses.config.maxPoolSize)\n const connection = await wrapper.connect()\n assertEx(connection, () => `${moduleName}.RegisterWithChangeStream: Connection failed`)\n const collection = connection.db(DATABASES.Archivist).collection(COLLECTIONS.BoundWitnesses)\n const opts: ChangeStreamOptions = this.resumeAfter ? { resumeAfter: this.resumeAfter } : {}\n this.changeStream = collection.watch([], opts)\n this.changeStream.on('change', this.processChange)\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.changeStream.on('error', this.registerWithChangeStream)\n this.logger?.log(`${moduleName}.RegisterWithChangeStream: Registered`)\n }\n\n private storeDivinedResult = async (address: string, count: number) => {\n await this.boundWitnesses.useMongo(async (mongo) => {\n await mongo\n .db(DATABASES.Archivist)\n .collection(COLLECTIONS.ArchivistStats)\n .updateOne({ address }, { $set: { [`${COLLECTIONS.BoundWitnesses}.count`]: count } }, updateOptions)\n })\n this.pendingCounts[address] = 0\n }\n\n private updateChanges = async () => {\n this.logger?.log(`${moduleName}.UpdateChanges: Updating`)\n const updates = Object.keys(this.pendingCounts).map((address) => {\n const count = this.pendingCounts[address]\n this.pendingCounts[address] = 0\n const $inc = { [`${COLLECTIONS.BoundWitnesses}.count`]: count }\n return this.boundWitnesses.useMongo(async (mongo) => {\n await mongo.db(DATABASES.Archivist).collection(COLLECTIONS.ArchivistStats).updateOne({ address }, { $inc }, updateOptions)\n })\n })\n const results = await Promise.allSettled(updates)\n const succeeded = results.filter(fulfilled).length\n const failed = results.filter(rejected).length\n this.logger?.log(`${moduleName}.UpdateChanges: Updated - Succeeded: ${succeeded} Failed: ${failed}`)\n }\n}\n","import type { Job, JobQueue } from '@xyo-network/shared'\n\n// TODO: Depends on job schedule, calculate dynamically\n// to something like 25% of schedule to allow for retries\nconst options = { lockLifetime: 10_000 }\n\nexport const defineJobs = (jobQueue: JobQueue, jobs: Job[]) => {\n for (const job of jobs) {\n const { name, task } = job\n jobQueue.define(name, options, task)\n if (job.onComplete) jobQueue.on(`complete:${name}`, job.onComplete)\n if (job.onFail) jobQueue.on(`fail:${name}`, job.onFail)\n if (job.onStart) jobQueue.on(`start:${name}`, job.onStart)\n if (job.onSuccess) jobQueue.on(`success:${name}`, job.onSuccess)\n }\n}\n","import type { Job, JobQueue } from '@xyo-network/shared'\n\nexport const scheduleJobs = async (jobQueue: JobQueue, jobs: Job[]) => {\n // eslint-disable-next-line unicorn/no-array-method-this-argument\n await Promise.all(jobs.map(async job => await jobQueue.every(job.schedule, job.name)))\n}\n","import {\n difference, intersection, union,\n} from '@xylabs/set'\n\nexport class BatchSetIterator<T> implements Iterator<T[]> {\n private batchSize: number\n private done: Set<T>\n private todo: Set<T>\n\n constructor(values: T[], batchSize: number) {\n this.todo = new Set(values)\n this.done = new Set<T>()\n this.batchSize = batchSize\n }\n\n [Symbol.iterator](): IterableIterator<T[]> {\n return this\n }\n\n addValues(values: Iterable<T> | Readonly<T>[] | null | undefined): number {\n const incoming = new Set(values)\n const knownTodo = intersection(this.todo, incoming)\n const knownDone = intersection(this.done, incoming)\n const known = union(knownTodo, knownDone)\n const unknown = difference(incoming, known)\n this.todo = union(this.todo, unknown)\n return unknown.size\n }\n\n next(): IteratorResult<T[]> {\n if (this.todo.size === 0) {\n if (this.done.size === 0) {\n return {\n done: true,\n value: [],\n }\n }\n this.todo = new Set(this.done)\n this.done = new Set<T>()\n }\n\n const todo = [...this.todo]\n const batch = todo.slice(0, this.batchSize)\n const remaining = todo.slice(this.batchSize)\n\n this.todo = new Set(remaining)\n this.done = union(this.done, new Set(batch))\n\n return {\n done: false,\n value: batch,\n }\n }\n}\n","import {\n difference, intersection, union,\n} from '@xylabs/set'\n\nexport class SetIterator<T> implements Iterator<T> {\n private done: Set<T>\n private todo: Set<T>\n\n constructor(values: T[]) {\n this.todo = new Set(values)\n this.done = new Set<T>()\n }\n\n [Symbol.iterator](): IterableIterator<T> {\n return this\n }\n\n addValues(values: Iterable<T> | Readonly<T>[] | null | undefined): number {\n const incoming = new Set(values)\n const knownTodo = intersection(this.todo, incoming)\n const knownDone = intersection(this.done, incoming)\n const known = union(knownTodo, knownDone)\n const unknown = difference(incoming, known)\n this.todo = union(this.todo, unknown)\n return unknown.size\n }\n\n next(): IteratorResult<T> {\n if (this.todo.size === 0) {\n if (this.done.size === 0) {\n return {\n done: true,\n value: undefined,\n }\n }\n this.todo = new Set(this.done)\n this.done = new Set<T>()\n }\n\n const value = this.todo.values().next().value\n if (value !== undefined) {\n this.todo.delete(value)\n this.done.add(value)\n\n return {\n done: false,\n value,\n }\n }\n\n return {\n done: true,\n value,\n }\n }\n}\n","import type { AnyObject } from '@xylabs/object'\nimport { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'\nimport type { PayloadDivinerQueryPayload } from '@xyo-network/diviner-payload-model'\nimport { isPayloadDivinerQueryPayload, PayloadDivinerConfigSchema } from '@xyo-network/diviner-payload-model'\nimport {\n DefaultLimit, DefaultMaxTimeMS, DefaultOrder, MongoDBModuleMixin,\n} from '@xyo-network/module-abstract-mongodb'\nimport {\n type Payload, type Schema, SequenceConstants,\n} from '@xyo-network/payload-model'\nimport { fromDbRepresentation } from '@xyo-network/payload-mongodb'\nimport type { Filter, SortDirection } from 'mongodb'\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(PayloadDiviner)\n\nexport class MongoDBPayloadDiviner extends MongoDBDivinerBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, PayloadDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = PayloadDivinerConfigSchema\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const query = payloads?.find(isPayloadDivinerQueryPayload) as PayloadDivinerQueryPayload\n // TODO: Support multiple queries\n if (!query) throw new Error('Received payload is not a Query')\n\n const {\n limit = DefaultLimit,\n cursor = (query.order ?? DefaultOrder) === 'asc' ? SequenceConstants.minLocalSequence : SequenceConstants.maxLocalSequence,\n order = DefaultOrder,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n schema,\n schemas,\n ...props\n } = query\n const direction = order === 'asc' ? 1 : -1\n const sort: { [key: string]: SortDirection } = { _sequence: direction }\n // TODO: Joel, why is AnyObject needed?\n const filter: Filter<AnyObject> = {}\n if (cursor) {\n filter._sequence = order === 'desc' ? { $lt: cursor } : { $gt: cursor }\n }\n\n // TODO: Optimize for single schema supplied too\n if (schemas?.length) filter.schema = { $in: schemas }\n // Add additional filter criteria\n if (Object.keys(props).length > 0) {\n const additionalFilterCriteria = Object.entries(props)\n for (const [prop, propFilter] of additionalFilterCriteria) {\n // Skip any reserved properties\n if (`${prop}`?.startsWith('$')) continue\n // Add the filter criteria\n // TODO: We need to decide when it makes sense for $in vs $all and expose that to the caller\n filter[prop as keyof Payload] = Array.isArray(propFilter) ? { $in: propFilter } : (propFilter as string)\n }\n }\n\n let result\n\n const filtered = await this.payloads.find(filter)\n result = (await filtered.sort(sort).limit(limit).maxTimeMS(DefaultMaxTimeMS).toArray()).map(fromDbRepresentation)\n return result.map(fromDbRepresentation)\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { MongoClientWrapper } from '@xylabs/mongo'\nimport { fulfilled, rejected } from '@xylabs/promise'\nimport type { DivinerParams } from '@xyo-network/diviner-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport { PayloadStatsDiviner } from '@xyo-network/diviner-payload-stats-abstract'\nimport type {\n PayloadStatsPayload,\n PayloadStatsQueryPayload,\n} from '@xyo-network/diviner-payload-stats-model'\nimport {\n isPayloadStatsQueryPayload,\n PayloadStatsDivinerConfigSchema,\n PayloadStatsDivinerSchema,\n} from '@xyo-network/diviner-payload-stats-model'\nimport {\n COLLECTIONS, DATABASES, MongoDBModuleMixin,\n} from '@xyo-network/module-abstract-mongodb'\nimport type { AddressPayload } from '@xyo-network/module-model'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema, WithSources,\n} from '@xyo-network/payload-model'\nimport type { BoundWitnessWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport type { Job, JobProvider } from '@xyo-network/shared'\nimport type {\n ChangeStream, ChangeStreamInsertDocument, ChangeStreamOptions, ResumeToken, UpdateOptions,\n} from 'mongodb'\n\nimport { defineJobs, scheduleJobs } from './JobQueue/index.js'\nimport { SetIterator } from './SetIterator/index.js'\n\nconst updateOptions: UpdateOptions = { upsert: true }\n\ninterface Stats {\n address: string\n payloads?: {\n count?: number\n }\n}\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(PayloadStatsDiviner)\n\nconst moduleName = 'MongoDBPayloadStatsDiviner'\n\nexport class MongoDBPayloadStatsDiviner\n extends MongoDBDivinerBase<DivinerParams, PayloadStatsQueryPayload, PayloadStatsPayload>\n implements PayloadStatsDiviner<DivinerParams, PayloadStatsQueryPayload, PayloadStatsPayload>, JobProvider {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, PayloadStatsDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = PayloadStatsDivinerConfigSchema\n\n /**\n * Iterates over know addresses obtained from AddressDiviner\n */\n protected readonly addressIterator: SetIterator<string> = new SetIterator([])\n\n /**\n * The max number of records to search during the aggregate query\n */\n protected readonly aggregateLimit = 1000\n\n /**\n * The max number of iterations of aggregate queries to allow when\n * divining the schema stats for a single address\n */\n protected readonly aggregateMaxIterations = 1_000_000\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n /**\n * The interval at which the background divine task will run. Prevents\n * continuously iterating over DB and exhausting DB resources\n */\n protected readonly backgroundDivineIntervalMs = 250\n\n /**\n * A reference to the background task to ensure that the\n * continuous background divine stays running\n */\n protected backgroundDivineTask: Promise<void> | undefined\n\n protected changeStream: ChangeStream | undefined = undefined\n protected pendingCounts: Record<string, number> = {}\n protected resumeAfter: ResumeToken | undefined = undefined\n\n get jobs(): Job[] {\n return [\n {\n name: `${moduleName}.UpdateChanges`,\n onSuccess: () => {\n this.pendingCounts = {}\n },\n schedule: '1 minute',\n task: async () => await this.updateChanges(),\n },\n {\n name: `${moduleName}.DivineAddressesBatch`,\n schedule: '5 minute',\n task: async () => await this.divineAddressesBatch(),\n },\n ]\n }\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload<PayloadStatsPayload>[]> {\n const query = payloads?.find<PayloadStatsQueryPayload>(isPayloadStatsQueryPayload)\n const addresses\n = query?.address\n ? Array.isArray(query?.address)\n ? query.address\n : [query.address]\n : undefined\n const counts = addresses ? await Promise.all(addresses.map(address => this.divineAddress(address))) : [await this.divineAllAddresses()]\n return await Promise.all(\n counts.map(count => new PayloadBuilder<PayloadStatsPayload>({ schema: PayloadStatsDivinerSchema }).fields({ count }).build()),\n )\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n await this.registerWithChangeStream()\n defineJobs(this.jobQueue, this.jobs)\n\n this.jobQueue.once('ready', async () => await scheduleJobs(this.jobQueue, this.jobs))\n return true\n }\n\n protected override async stopHandler() {\n await this.changeStream?.close()\n return await super.stopHandler()\n }\n\n private backgroundDivine = async (): Promise<void> => {\n for (const address of this.addressIterator) {\n try {\n await this.divineAddressFull(address)\n } catch (error) {\n this.logger?.error(`${moduleName}.BackgroundDivine: ${error}`)\n }\n await delay(this.backgroundDivineIntervalMs)\n }\n this.backgroundDivineTask = undefined\n }\n\n private divineAddress = async (address: string) => {\n const stats = await this.payloads.useMongo(async (mongo) => {\n return await mongo.db(DATABASES.Archivist).collection<Stats>(COLLECTIONS.ArchivistStats).findOne({ address: address })\n })\n const remote = stats?.payloads?.count || 0\n const local = this.pendingCounts[address] || 0\n return remote + local\n }\n\n private divineAddressFull = async (address: string) => {\n let total = 0\n for (let iteration = 0; iteration < this.aggregateMaxIterations; iteration++) {\n const count = await this.boundWitnesses.useCollection((collection) => {\n return collection\n .aggregate<{ payload_hashes: number }>([\n { $sort: { _timestamp: -1, addresses: 1 } },\n // Find all BoundWitnesses containing this address\n { $match: { addresses: { $in: [address] } } },\n // In batches\n { $skip: iteration * this.aggregateLimit },\n { $limit: this.aggregateLimit },\n // Flatten the payload_hashes to individual documents\n { $unwind: { path: '$payload_hashes' } },\n // Count all the payload hashes witnessed for this address\n { $count: 'payload_hashes' },\n ])\n .maxTimeMS(this.aggregateTimeoutMs)\n .next()\n })\n if (count != null) {\n total += count.payload_hashes\n continue\n }\n break\n }\n await this.storeDivinedResult(address, total)\n return total\n }\n\n private divineAddressesBatch = async () => {\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Updating Addresses`)\n const addressSpaceDiviners = await this.upResolver.resolve('AddressSpaceDiviner')\n const addressSpaceDiviner = asDivinerInstance(addressSpaceDiviners, `${moduleName}.DivineAddressesBatch: Missing AddressSpaceDiviner`)\n const result = (await addressSpaceDiviner.divine()) ?? []\n const addresses = result.filter((x): x is WithSources<AddressPayload> => x.schema === AddressSchema).map(x => x.address)\n const additions = this.addressIterator.addValues(addresses)\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Incoming Addresses Total: ${addresses.length} New: ${additions}`)\n if (addresses.length > 0 && !this.backgroundDivineTask) this.backgroundDivineTask = this.backgroundDivine()\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Updated Addresses`)\n }\n\n private divineAllAddresses = () => this.payloads.useCollection(collection => collection.estimatedDocumentCount())\n\n private processChange = (change: ChangeStreamInsertDocument<BoundWitnessWithMongoMeta>) => {\n this.resumeAfter = change._id\n const addresses = change.fullDocument.addresses\n const count = change.fullDocument?.payload_hashes?.length || 0\n if (addresses?.length && count) {\n for (const address of addresses) {\n if (address) this.pendingCounts[address] = (this.pendingCounts[address] || 0) + count\n }\n }\n }\n\n private registerWithChangeStream = async () => {\n this.logger?.log(`${moduleName}.RegisterWithChangeStream: Registering`)\n const wrapper = MongoClientWrapper.get(this.boundWitnesses.uri, this.boundWitnesses.config.maxPoolSize)\n const connection = await wrapper.connect()\n assertEx(connection, () => `${moduleName}.RegisterWithChangeStream: Connection failed`)\n const collection = connection.db(DATABASES.Archivist).collection(COLLECTIONS.BoundWitnesses)\n const opts: ChangeStreamOptions = this.resumeAfter ? { resumeAfter: this.resumeAfter } : {}\n this.changeStream = collection.watch([], opts)\n this.changeStream.on('change', this.processChange)\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.changeStream.on('error', this.registerWithChangeStream)\n this.logger?.log(`${moduleName}.RegisterWithChangeStream: Registered`)\n }\n\n private storeDivinedResult = async (address: string, count: number) => {\n await this.payloads.useMongo(async (mongo) => {\n await mongo\n .db(DATABASES.Archivist)\n .collection(COLLECTIONS.ArchivistStats)\n .updateOne({ address }, { $set: { [`${COLLECTIONS.Payloads}.count`]: count } }, updateOptions)\n })\n this.pendingCounts[address] = 0\n }\n\n private updateChanges = async () => {\n this.logger?.log(`${moduleName}.UpdateChanges: Updating`)\n const updates = Object.keys(this.pendingCounts).map((address) => {\n const count = this.pendingCounts[address]\n this.pendingCounts[address] = 0\n const $inc = { [`${COLLECTIONS.Payloads}.count`]: count }\n return this.payloads.useMongo(async (mongo) => {\n await mongo.db(DATABASES.Archivist).collection(COLLECTIONS.ArchivistStats).updateOne({ address }, { $inc }, updateOptions)\n })\n })\n const results = await Promise.allSettled(updates)\n const succeeded = results.filter(fulfilled).length\n const failed = results.filter(rejected).length\n this.logger?.log(`${moduleName}.UpdateChanges: Updated - Succeeded: ${succeeded} Failed: ${failed}`)\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport { SchemaListDiviner } from '@xyo-network/diviner-schema-list-abstract'\nimport type {\n SchemaListPayload,\n SchemaListQueryPayload,\n} from '@xyo-network/diviner-schema-list-model'\nimport {\n isSchemaListQueryPayload,\n SchemaListDivinerConfigSchema,\n SchemaListDivinerSchema,\n} from '@xyo-network/diviner-schema-list-model'\nimport { MongoDBModuleMixin } from '@xyo-network/module-abstract-mongodb'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n isSchema, type Payload, type Schema,\n} from '@xyo-network/payload-model'\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(SchemaListDiviner)\n\nexport class MongoDBSchemaListDiviner extends MongoDBDivinerBase {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, SchemaListDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = SchemaListDivinerConfigSchema\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload<SchemaListPayload>[]> {\n const query = payloads?.find<SchemaListQueryPayload>(isSchemaListQueryPayload)\n const addresses\n = query?.address\n ? Array.isArray(query?.address)\n ? query.address\n : [query.address]\n : undefined\n const counts = addresses ? await Promise.all(addresses.map(address => this.divineAddress(address))) : [await this.divineAllAddresses()]\n return await Promise.all(\n counts.map(schemas => new PayloadBuilder<SchemaListPayload>({ schema: SchemaListDivinerSchema }).fields({ schemas }).build()),\n )\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n return true\n }\n\n private divineAddress = async (archive: Address): Promise<Schema[]> => {\n const result = await this.boundWitnesses.useCollection((collection) => {\n return collection.distinct('payload_schemas', { addresses: { $in: [archive] } })\n })\n return result.filter(isSchema)\n }\n\n private divineAllAddresses = async (): Promise<string[]> => {\n const result = await this.boundWitnesses.useCollection((collection) => {\n return collection.distinct('payload_schemas')\n })\n return result.filter(isSchema)\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { MongoClientWrapper } from '@xylabs/mongo'\nimport { fulfilled, rejected } from '@xylabs/promise'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport { SchemaStatsDiviner } from '@xyo-network/diviner-schema-stats-abstract'\nimport type {\n SchemaStatsPayload,\n SchemaStatsQueryPayload,\n} from '@xyo-network/diviner-schema-stats-model'\nimport {\n isSchemaStatsQueryPayload,\n SchemaStatsDivinerConfigSchema,\n SchemaStatsDivinerSchema,\n} from '@xyo-network/diviner-schema-stats-model'\nimport {\n COLLECTIONS, DATABASES, fromDbProperty, MongoDBModuleMixin, toDbProperty,\n} from '@xyo-network/module-abstract-mongodb'\nimport type { AddressPayload } from '@xyo-network/module-model'\nimport { AddressSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema, WithSources,\n} from '@xyo-network/payload-model'\nimport type { BoundWitnessWithMongoMeta } from '@xyo-network/payload-mongodb'\nimport type { Job, JobProvider } from '@xyo-network/shared'\nimport type {\n ChangeStream, ChangeStreamInsertDocument, ChangeStreamOptions, ResumeToken, UpdateOptions,\n} from 'mongodb'\n\nimport { defineJobs, scheduleJobs } from './JobQueue/index.js'\nimport { SetIterator } from './SetIterator/index.js'\n\nconst updateOptions: UpdateOptions = { upsert: true }\n\ninterface PayloadSchemaCountsAggregateResult {\n _id: string\n count: number\n}\n\ninterface Stats {\n address: string\n schema?: {\n count?: Record<string, number>\n }\n}\n\nconst MongoDBDivinerBase = MongoDBModuleMixin(SchemaStatsDiviner)\n\nconst moduleName = 'MongoDBSchemaStatsDiviner'\n\nexport class MongoDBSchemaStatsDiviner extends MongoDBDivinerBase implements JobProvider {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, SchemaStatsDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = SchemaStatsDivinerConfigSchema\n\n /**\n * Iterates over know addresses obtained from AddressDiviner\n */\n protected readonly addressIterator: SetIterator<string> = new SetIterator([])\n\n /**\n * The max number of records to search during the aggregate query\n */\n protected readonly aggregateLimit = 1000\n\n /**\n * The max number of iterations of aggregate queries to allow when\n * divining the schema stats for a single address\n */\n protected readonly aggregateMaxIterations = 1_000_000\n\n /**\n * The amount of time to allow the aggregate query to execute\n */\n protected readonly aggregateTimeoutMs = 10_000\n\n /**\n * The interval at which the background divine task will run. Prevents\n * continuously iterating over DB and exhausting DB resources\n */\n protected readonly backgroundDivineIntervalMs = 250\n\n /**\n * A reference to the background task to ensure that the\n * continuous background divine stays running\n */\n protected backgroundDivineTask: Promise<void> | undefined\n\n /**\n * The stream with which the diviner is notified of insertions\n * to the payloads collection\n */\n protected changeStream: ChangeStream | undefined = undefined\n /**\n * The counts per schema to update on the next update interval\n */\n protected pendingCounts: Record<string, Record<string, number>> = {}\n /**\n * The resume token for listening to insertions into the payload collection\n */\n protected resumeAfter: ResumeToken | undefined = undefined\n\n get jobs(): Job[] {\n return [\n {\n name: `${moduleName}.UpdateChanges`,\n onSuccess: () => {\n this.pendingCounts = {}\n },\n schedule: '1 minute',\n task: async () => await this.updateChanges(),\n },\n {\n name: `${moduleName}.DivineAddressesBatch`,\n schedule: '5 minute',\n task: async () => await this.divineAddressesBatch(),\n },\n ]\n }\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload<SchemaStatsPayload>[]> {\n const query = payloads?.find<SchemaStatsQueryPayload>(isSchemaStatsQueryPayload)\n const addresses\n = query?.address\n ? Array.isArray(query?.address)\n ? query.address\n : [query.address]\n : undefined\n const counts = addresses ? await Promise.all(addresses.map(address => this.divineAddress(address))) : [this.divineAllAddresses()]\n return await Promise.all(\n counts.map(count => new PayloadBuilder<SchemaStatsPayload>({ schema: SchemaStatsDivinerSchema }).fields({ count }).build()),\n )\n }\n\n protected override async startHandler() {\n await super.startHandler()\n await this.ensureIndexes()\n await this.registerWithChangeStream()\n defineJobs(this.jobQueue, this.jobs)\n\n this.jobQueue.once('ready', async () => await scheduleJobs(this.jobQueue, this.jobs))\n return true\n }\n\n protected override async stopHandler() {\n await this.changeStream?.close()\n return await super.stopHandler()\n }\n\n private backgroundDivine = async (): Promise<void> => {\n for (const address of this.addressIterator) {\n try {\n await this.divineAddressFull(address)\n } catch (error) {\n this.logger?.error(`${moduleName}.BackgroundDivine: ${error}`)\n }\n await delay(this.backgroundDivineIntervalMs)\n }\n this.backgroundDivineTask = undefined\n }\n\n private divineAddress = async (address: string): Promise<Record<string, number>> => {\n const stats = await this.boundWitnesses.useMongo(async (mongo) => {\n return await mongo.db(DATABASES.Archivist).collection<Stats>(COLLECTIONS.ArchivistStats).findOne({ address: address })\n })\n const remote = Object.fromEntries(\n Object.entries(stats?.schema?.count || {}).map(([schema, count]) => {\n return [fromDbProperty(schema), count]\n }),\n )\n const local = this.pendingCounts[address] || {}\n const keys = [...Object.keys(local), ...Object.keys(remote).map(fromDbProperty)]\n const ret = Object.fromEntries(\n keys.map((key) => {\n const localSchemaCount = local[key] || 0\n const remoteSchemaCount = remote[key] || 0\n const value = localSchemaCount + remoteSchemaCount\n return [key, value]\n }),\n )\n return ret\n }\n\n private divineAddressFull = async (address: string): Promise<Record<string, number>> => {\n const sortStartTime = Date.now()\n const totals: Record<string, number> = {}\n for (let iteration = 0; iteration < this.aggregateMaxIterations; iteration++) {\n const result: PayloadSchemaCountsAggregateResult[] = await this.boundWitnesses.useCollection((collection) => {\n return collection\n .aggregate()\n .sort({ _timestamp: 1 })\n .match({ _timestamp: { $lt: sortStartTime }, addresses: { $in: [address] } })\n .skip(iteration * this.aggregateLimit)\n .limit(this.aggregateLimit)\n .unwind({ path: '$payload_schemas' })\n .group<PayloadSchemaCountsAggregateResult>({ _id: '$payload_schemas', count: { $sum: 1 } })\n .maxTimeMS(this.aggregateTimeoutMs)\n .toArray()\n })\n if (result.length === 0) break\n // Add current counts to total\n for (const schema of result) {\n totals[schema._id] = totals[schema._id] || 0 + schema.count\n }\n }\n await this.storeDivinedResult(address, totals)\n return totals\n }\n\n private divineAddressesBatch = async () => {\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Updating Addresses`)\n const addressSpaceDiviners = await this.upResolver.resolve('AddressSpaceDiviner')\n const addressSpaceDiviner = asDivinerInstance(addressSpaceDiviners, `${moduleName}.DivineAddressesBatch: Missing AddressSpaceDiviner`)\n const result = (await addressSpaceDiviner.divine()) ?? []\n const addresses = result.filter((x): x is WithSources<AddressPayload> => x.schema === AddressSchema).map(x => x.address)\n const additions = this.addressIterator.addValues(addresses)\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Incoming Addresses Total: ${addresses.length} New: ${additions}`)\n if (addresses.length > 0 && !this.backgroundDivineTask) this.backgroundDivineTask = this.backgroundDivine()\n this.logger?.log(`${moduleName}.DivineAddressesBatch: Updated Addresses`)\n }\n\n private divineAllAddresses = () => {\n throw new Error('Not Implemented')\n }\n\n private processChange = (change: ChangeStreamInsertDocument<BoundWitnessWithMongoMeta>) => {\n this.resumeAfter = change._id\n const addresses = change.fullDocument.addresses\n const schemas = change.fullDocument.payload_schemas\n if (addresses?.length) {\n for (const address of addresses) {\n for (const schema of schemas) {\n if (!this.pendingCounts[address]) this.pendingCounts[address] = {}\n this.pendingCounts[address][schema] = (this.pendingCounts[address][schema] || 0) + 1\n }\n }\n }\n }\n\n private registerWithChangeStream = async () => {\n this.logger?.log(`${moduleName}.RegisterWithChangeStream: Registering`)\n const wrapper = MongoClientWrapper.get(this.boundWitnesses.uri, this.boundWitnesses.config.maxPoolSize)\n const connection = await wrapper.connect()\n assertEx(connection, () => `${moduleName}.RegisterWithChangeStream: Connection failed`)\n const collection = connection.db(DATABASES.Archivist).collection(COLLECTIONS.BoundWitnesses)\n const opts: ChangeStreamOptions = this.resumeAfter ? { resumeAfter: this.resumeAfter } : {}\n this.changeStream = collection.watch([], opts)\n this.changeStream.on('change', this.processChange)\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.changeStream.on('error', this.registerWithChangeStream)\n this.logger?.log(`${moduleName}.RegisterWithChangeStream: Registered`)\n }\n\n private storeDivinedResult = async (address: string, counts: Record<string, number>) => {\n const sanitizedCounts: Record<string, number> = Object.fromEntries(\n Object.entries(counts).map(([schema, count]) => {\n return [toDbProperty(schema), count]\n }),\n )\n await this.boundWitnesses.useMongo(async (mongo) => {\n await mongo\n .db(DATABASES.Archivist)\n .collection(COLLECTIONS.ArchivistStats)\n .updateOne({ address }, { $set: { ['schema.count']: sanitizedCounts } }, updateOptions)\n })\n this.pendingCounts[address] = {}\n }\n\n private updateChanges = async () => {\n this.logger?.log(`${moduleName}.UpdateChanges: Updating`)\n const updates = Object.keys(this.pendingCounts).map((address) => {\n const $inc = Object.keys(this.pendingCounts[address])\n .map((schema) => {\n return { [`schema.count.${toDbProperty(schema)}`]: this.pendingCounts[address][schema] }\n })\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((prev, curr) => Object.assign(prev, curr), {})\n this.pendingCounts[address] = {}\n return this.boundWitnesses.useMongo(async (mongo) => {\n await mongo.db(DATABASES.Archivist).collection(COLLECTIONS.ArchivistStats).updateOne({ address }, { $inc }, updateOptions)\n })\n })\n const results = await Promise.allSettled(updates)\n const succeeded = results.filter(fulfilled).length\n const failed = results.filter(rejected).length\n this.logger?.log(`${moduleName}.UpdateChanges: Updated - Succeeded: ${succeeded} Failed: ${failed}`)\n }\n}\n","import 'reflect-metadata'\n\nimport { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type { ArchivistPayloadDivinerConfig } from '@xyo-network/diviner-archivist'\nimport { ArchivistPayloadDivinerConfigSchema } from '@xyo-network/diviner-archivist'\nimport type { BoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-abstract'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { CoinUserLocationsDiviner } from '@xyo-network/diviner-coin-user-locations-abstract'\nimport type { DivinerParams } from '@xyo-network/diviner-model'\nimport type { LocationPayload } from '@xyo-network/location-payload-plugin'\nimport { LocationSchema } from '@xyo-network/location-payload-plugin'\nimport type { AnyConfigSchema } from '@xyo-network/module-model'\nimport type {\n Payload, Schema, WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport type CoinCurrentUserWitnessSchema = 'co.coinapp.current.user.witness'\nexport const CoinCurrentUserWitnessSchema: CoinCurrentUserWitnessSchema = 'co.coinapp.current.user.witness'\n\nexport type CoinCurrentUserWitnessPayload = Payload<{\n balance?: number\n daysOld?: number\n deviceId?: string\n geomines?: number\n planType?: string\n schema: CoinCurrentUserWitnessSchema\n uid: string\n}>\n\nexport type CoinCurrentLocationWitnessSchema = 'co.coinapp.current.location.witness'\nexport const CoinCurrentLocationWitnessSchema: CoinCurrentLocationWitnessSchema = 'co.coinapp.current.location.witness'\n\nexport type CoinCurrentLocationWitnessPayload = Payload<{\n altitudeMeters: number\n directionDegrees: number\n latitude: number\n quadkey: string\n schema: CoinCurrentLocationWitnessSchema\n speedKph: number\n}>\n\nexport const isLocationPayload = (x?: Payload | null): x is LocationPayload => x?.schema === LocationSchema\n\nexport type CoinUserLocationsDivinerParams<T extends Payload = Payload> = DivinerParams<\n AnyConfigSchema<ArchivistPayloadDivinerConfig<T>>,\n {\n archivist: ArchivistInstance\n bws: BoundWitnessDiviner\n }\n>\n\nexport class MemoryCoinUserLocationsDiviner<\n TParams extends CoinUserLocationsDivinerParams = CoinUserLocationsDivinerParams,\n> extends CoinUserLocationsDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, ArchivistPayloadDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = ArchivistPayloadDivinerConfigSchema\n\n protected override async divineHandler(payloads?: Payload[]): Promise<LocationPayload[]> {\n const user = payloads?.find<CoinCurrentUserWitnessPayload>(\n (payload): payload is CoinCurrentUserWitnessPayload => payload?.schema === CoinCurrentUserWitnessSchema,\n )\n // If this is a query we support\n if (user) {\n const wrapper = PayloadWrapper.wrap(user)\n // TODO: Extract relevant query values here\n this.logger?.log('CoinUserLocationsDiviner.Divine: Processing query')\n // Simulating work\n const diviner = this.params.bws\n const filter = { payload_hashes: [await wrapper.dataHash()], schema: BoundWitnessDivinerQuerySchema }\n const bwList = ((await diviner.divine([filter])) as BoundWitness[]) || []\n const locationHashes = bwList.flatMap((bw) => {\n const locations: Hash[] = []\n for (let i = 0; i < bwList.length; i++) {\n if (bw?.payload_schemas[i] === CoinCurrentLocationWitnessSchema) {\n locations.push(assertEx(bw?.payload_hashes[i], () => 'Missing hash'))\n }\n }\n return locations\n })\n const locations = compact(await this.params.archivist.get(locationHashes)) as WithStorageMeta<LocationPayload>[]\n this.logger?.log('CoinUserLocationsDiviner.Divine: Processed query')\n return locations\n }\n // else return empty response\n return []\n }\n}\n"],"mappings":"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","names":["assertEx","exists","DefaultMaxTimeMS","MongoDBModuleMixin","MongoDBDivinerBase","exists","AddressSpaceDiviner","DefaultMaxTimeMS","MongoDBModuleMixin","AddressSchema","MongoDBDivinerBase","exists","hexFromHexString","DefaultLimit","DefaultMaxTimeMS","MongoDBModuleMixin","fromDbRepresentation","MongoDBDivinerBase","assertEx","COLLECTIONS","DATABASES","MongoDBModuleMixin","AddressSchema","PayloadBuilder","difference","union","difference","intersection","union","MongoDBDivinerBase","MongoDBModuleMixin","moduleName","PayloadBuilder","DATABASES","COLLECTIONS","assertEx","AddressSchema","DefaultLimit","DefaultMaxTimeMS","DefaultOrder","MongoDBModuleMixin","SequenceConstants","fromDbRepresentation","MongoDBDivinerBase","assertEx","delay","MongoClientWrapper","fulfilled","rejected","asDivinerInstance","COLLECTIONS","DATABASES","MongoDBModuleMixin","AddressSchema","PayloadBuilder","updateOptions","MongoDBDivinerBase","MongoDBModuleMixin","moduleName","PayloadBuilder","delay","DATABASES","COLLECTIONS","asDivinerInstance","AddressSchema","MongoClientWrapper","assertEx","fulfilled","rejected","MongoDBModuleMixin","PayloadBuilder","MongoDBDivinerBase","assertEx","delay","MongoClientWrapper","fulfilled","rejected","asDivinerInstance","COLLECTIONS","DATABASES","MongoDBModuleMixin","AddressSchema","PayloadBuilder","updateOptions","MongoDBDivinerBase","MongoDBModuleMixin","moduleName","PayloadBuilder","delay","DATABASES","COLLECTIONS","asDivinerInstance","AddressSchema","MongoClientWrapper","assertEx","fulfilled","rejected","assertEx","locations"]}
@@ -1,3 +0,0 @@
1
- import type { Job, JobQueue } from '@xyo-network/shared';
2
- export declare const defineJobs: (jobQueue: JobQueue, jobs: Job[]) => void;
3
- //# sourceMappingURL=defineJobs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defineJobs.d.ts","sourceRoot":"","sources":["../../../src/JobQueue/defineJobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAMxD,eAAO,MAAM,UAAU,GAAI,UAAU,QAAQ,EAAE,MAAM,GAAG,EAAE,SASzD,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const getName: () => string;
2
- //# sourceMappingURL=getName.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getName.d.ts","sourceRoot":"","sources":["../../../src/JobQueue/getName.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,QAAO,MAE1B,CAAA"}
@@ -1,3 +0,0 @@
1
- export * from './defineJobs.js';
2
- export * from './scheduleJobs.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/JobQueue/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { Job, JobQueue } from '@xyo-network/shared';
2
- export declare const scheduleJobs: (jobQueue: JobQueue, jobs: Job[]) => Promise<void>;
3
- //# sourceMappingURL=scheduleJobs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduleJobs.d.ts","sourceRoot":"","sources":["../../../src/JobQueue/scheduleJobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAExD,eAAO,MAAM,YAAY,GAAU,UAAU,QAAQ,EAAE,MAAM,GAAG,EAAE,kBAGjE,CAAA"}
@@ -1,61 +0,0 @@
1
- import type { Address } from '@xylabs/hex';
2
- import type { BoundWitness } from '@xyo-network/boundwitness-model';
3
- import { AddressHistoryDiviner } from '@xyo-network/diviner-address-history';
4
- import type { Payload, Schema } from '@xyo-network/payload-model';
5
- import type { BoundWitnessWithMongoMeta } from '@xyo-network/payload-mongodb';
6
- declare const MongoDBDivinerBase: (abstract new (...args: any[]) => {
7
- _boundWitnessSdk: import("@xylabs/mongo").BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined;
8
- _payloadSdk: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta> | undefined;
9
- readonly boundWitnessSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
10
- readonly boundWitnesses: import("@xylabs/mongo").BaseMongoSdk<BoundWitnessWithMongoMeta>;
11
- readonly jobQueue: import("@xyo-network/shared").JobQueue;
12
- readonly payloadSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
13
- readonly payloads: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta>;
14
- ensureIndexes(): Promise<void>;
15
- address: import("@xylabs/hex").Address;
16
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
17
- id: string;
18
- modName?: import("@xyo-network/module-model").ModuleName;
19
- params: import("@xylabs/base").BaseParamsFields & {
20
- account?: import("@xyo-network/account-model").AccountInstance | "random";
21
- addToResolvers?: boolean;
22
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
23
- allowNameResolution?: boolean;
24
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
25
- ephemeralQueryAccountEnabled?: boolean;
26
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
27
- privateChildren?: import("@xyo-network/module-model").ModuleInstance[];
28
- publicChildren?: import("@xyo-network/module-model").ModuleInstance[];
29
- } & {
30
- boundWitnessSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
31
- jobQueue?: import("@xyo-network/shared").JobQueue;
32
- payloadSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
33
- };
34
- previousHash: () => import("@xylabs/promise").Promisable<string | undefined>;
35
- queries: string[];
36
- query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import("@xylabs/promise").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
37
- queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import("@xylabs/promise").Promisable<boolean>;
38
- start?: () => import("@xylabs/promise").Promisable<boolean>;
39
- stop?: () => import("@xylabs/promise").Promisable<boolean>;
40
- eventData: import("@xyo-network/module-model").ModuleEventData<object>;
41
- clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
42
- emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
43
- emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
44
- listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
45
- off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
46
- offAny(listener: import("@xyo-network/module-events").EventAnyListener | Promise<void>): void;
47
- on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
48
- onAny(listener: import("@xyo-network/module-events").EventAnyListener): import("@xyo-network/module-events").EventUnsubscribeFunction;
49
- once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
50
- }) & {
51
- readonly labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
52
- } & typeof AddressHistoryDiviner;
53
- export declare class MongoDBAddressHistoryDiviner extends MongoDBDivinerBase {
54
- static readonly configSchemas: Schema[];
55
- static readonly defaultConfigSchema: Schema;
56
- protected divineHandler(payloads?: Payload[]): Promise<BoundWitness[]>;
57
- protected startHandler(): Promise<boolean>;
58
- private getBlocks;
59
- }
60
- export {};
61
- //# sourceMappingURL=MongoDBAddressHistoryDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoDBAddressHistoryDiviner.d.ts","sourceRoot":"","sources":["../../src/MongoDBAddressHistoryDiviner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EACL,qBAAqB,EAGtB,MAAM,sCAAsC,CAAA;AAI7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAI7E,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sRAgBuC,CAAC,6DAC5B,CAAC;4RAY/B,CAAC,6DACU,CAAC;;;;;;;;;;;;;;;gCA9BkD,CAAA;AAEpE,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA8D;IAC9G,gBAAyB,mBAAmB,EAAE,MAAM,CAAoC;cAE/D,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;cAe5D,YAAY;IAMrC,OAAO,CAAC,SAAS,CA4BhB;CACF"}
@@ -1,67 +0,0 @@
1
- import type { AccountInstance } from '@xyo-network/account-model';
2
- import type { BoundWitnessPointerPayload } from '@xyo-network/boundwitness-model';
3
- import { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract';
4
- import type { Payload, Schema } from '@xyo-network/payload-model';
5
- declare const MongoDBDivinerBase: (abstract new (...args: any[]) => {
6
- _boundWitnessSdk: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").BoundWitnessWithMongoMeta> | undefined;
7
- _payloadSdk: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta> | undefined;
8
- readonly boundWitnessSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
9
- readonly boundWitnesses: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").BoundWitnessWithMongoMeta>;
10
- readonly jobQueue: import("@xyo-network/shared").JobQueue;
11
- readonly payloadSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
12
- readonly payloads: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta>;
13
- ensureIndexes(): Promise<void>;
14
- address: import("@xylabs/hex").Address;
15
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
16
- id: string;
17
- modName?: import("@xyo-network/module-model").ModuleName;
18
- params: import("@xylabs/base").BaseParamsFields & {
19
- account?: AccountInstance | "random";
20
- addToResolvers?: boolean;
21
- additionalSigners?: AccountInstance[];
22
- allowNameResolution?: boolean;
23
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
24
- ephemeralQueryAccountEnabled?: boolean;
25
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
26
- privateChildren?: import("@xyo-network/module-model").ModuleInstance[];
27
- publicChildren?: import("@xyo-network/module-model").ModuleInstance[];
28
- } & {
29
- boundWitnessSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
30
- jobQueue?: import("@xyo-network/shared").JobQueue;
31
- payloadSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
32
- };
33
- previousHash: () => import("@xylabs/promise").Promisable<string | undefined>;
34
- queries: string[];
35
- query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import("@xylabs/promise").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
36
- queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import("@xylabs/promise").Promisable<boolean>;
37
- start?: () => import("@xylabs/promise").Promisable<boolean>;
38
- stop?: () => import("@xylabs/promise").Promisable<boolean>;
39
- eventData: import("@xyo-network/module-model").ModuleEventData<object>;
40
- clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
41
- emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
42
- emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
43
- listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
44
- off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
45
- offAny(listener: import("@xyo-network/module-events").EventAnyListener | Promise<void>): void;
46
- on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
47
- onAny(listener: import("@xyo-network/module-events").EventAnyListener): import("@xyo-network/module-events").EventUnsubscribeFunction;
48
- once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
49
- }) & {
50
- readonly labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
51
- } & typeof AddressSpaceDiviner;
52
- export declare class MongoDBAddressSpaceBatchDiviner extends MongoDBDivinerBase {
53
- static readonly configSchemas: Schema[];
54
- static readonly defaultConfigSchema: Schema;
55
- protected readonly batchSize = 50;
56
- protected currentlyRunning: boolean;
57
- protected response: BoundWitnessPointerPayload | undefined;
58
- protected witnessedAddresses: Set<string>;
59
- private _paginationAccount?;
60
- protected backgroundDivine(): Promise<void>;
61
- protected divineHandler(_payloads?: Payload[]): Promise<Payload[]>;
62
- protected getPaginationAccount(): Promise<AccountInstance>;
63
- protected initializeArchivist(): Promise<boolean>;
64
- protected startHandler(): Promise<boolean>;
65
- }
66
- export {};
67
- //# sourceMappingURL=MongoDBAddressSpaceBatchDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoDBAddressSpaceBatchDiviner.d.ts","sourceRoot":"","sources":["../../src/MongoDBAddressSpaceBatchDiviner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAEjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AAOjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKjE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sRAiBN,CAAC,6DAEX,CAAR;4RAU8B,CAAA,6DAA6D,CAAC;;;;;;;;;;;;;;;8BA7B1B,CAAA;AAElE,qBAAa,+BAAgC,SAAQ,kBAAkB;IACrE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiE;IACjH,gBAAyB,mBAAmB,EAAE,MAAM,CAAuC;IAG3F,SAAS,CAAC,QAAQ,CAAC,SAAS,MAAK;IACjC,SAAS,CAAC,gBAAgB,UAAQ;IAClC,SAAS,CAAC,QAAQ,EAAE,0BAA0B,GAAG,SAAS,CAAA;IAC1D,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAoB;IAE7D,OAAO,CAAC,kBAAkB,CAAC,CAAiB;cAE5B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;cAsC9B,aAAa,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAO3D,oBAAoB;cAKpB,mBAAmB;cAwBV,YAAY;CAMtC"}
@@ -1,57 +0,0 @@
1
- import { AddressSpaceDiviner } from '@xyo-network/diviner-address-space-abstract';
2
- import type { Payload, Schema } from '@xyo-network/payload-model';
3
- declare const MongoDBDivinerBase: (abstract new (...args: any[]) => {
4
- _boundWitnessSdk: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").BoundWitnessWithMongoMeta> | undefined;
5
- _payloadSdk: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta> | undefined;
6
- readonly boundWitnessSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
7
- readonly boundWitnesses: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").BoundWitnessWithMongoMeta>;
8
- readonly jobQueue: import("@xyo-network/shared").JobQueue;
9
- readonly payloadSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
10
- readonly payloads: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta>;
11
- ensureIndexes(): Promise<void>;
12
- address: import("@xylabs/hex").Address;
13
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
14
- id: string;
15
- modName?: import("@xyo-network/module-model").ModuleName;
16
- params: import("@xylabs/base").BaseParamsFields & {
17
- account?: import("@xyo-network/account-model").AccountInstance | "random";
18
- addToResolvers?: boolean;
19
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
20
- allowNameResolution?: boolean;
21
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
22
- ephemeralQueryAccountEnabled?: boolean;
23
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
24
- privateChildren?: import("@xyo-network/module-model").ModuleInstance[];
25
- publicChildren?: import("@xyo-network/module-model").ModuleInstance[];
26
- } & {
27
- boundWitnessSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
28
- jobQueue?: import("@xyo-network/shared").JobQueue;
29
- payloadSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
30
- };
31
- previousHash: () => import("@xylabs/promise").Promisable<string | undefined>;
32
- queries: string[];
33
- query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import("@xylabs/promise").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
34
- queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import("@xylabs/promise").Promisable<boolean>;
35
- start?: () => import("@xylabs/promise").Promisable<boolean>;
36
- stop?: () => import("@xylabs/promise").Promisable<boolean>;
37
- eventData: import("@xyo-network/module-model").ModuleEventData<object>;
38
- clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
39
- emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
40
- emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
41
- listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
42
- off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
43
- offAny(listener: import("@xyo-network/module-events").EventAnyListener | Promise<void>): void;
44
- on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
45
- onAny(listener: import("@xyo-network/module-events").EventAnyListener): import("@xyo-network/module-events").EventUnsubscribeFunction;
46
- once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
47
- }) & {
48
- readonly labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
49
- } & typeof AddressSpaceDiviner;
50
- export declare class MongoDBAddressSpaceDiviner extends MongoDBDivinerBase {
51
- static readonly configSchemas: Schema[];
52
- static readonly defaultConfigSchema: Schema;
53
- protected divineHandler(_payloads?: Payload[]): Promise<Payload[]>;
54
- protected startHandler(): Promise<boolean>;
55
- }
56
- export {};
57
- //# sourceMappingURL=MongoDBAddressSpaceDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoDBAddressSpaceDiviner.d.ts","sourceRoot":"","sources":["../../src/MongoDBAddressSpaceDiviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AAIjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEjE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sRAwB8R,CAAC,6DAA6D,CAAC;4RAAqY,CAAC,6DAA6D,CAAC;;;;;;;;;;;;;;;8BAxBvvB,CAAA;AAElE,qBAAa,0BAA2B,SAAQ,kBAAkB;IAChE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA4D;IAC5G,gBAAyB,mBAAmB,EAAE,MAAM,CAAkC;cAE7D,aAAa,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAYxD,YAAY;CAKtC"}
@@ -1,59 +0,0 @@
1
- import type { BoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-abstract';
3
- import { type Payload, type Schema } from '@xyo-network/payload-model';
4
- import type { BoundWitnessWithMongoMeta } from '@xyo-network/payload-mongodb';
5
- declare const MongoDBDivinerBase: (abstract new (...args: any[]) => {
6
- _boundWitnessSdk: import("@xylabs/mongo").BaseMongoSdk<BoundWitnessWithMongoMeta> | undefined;
7
- _payloadSdk: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta> | undefined;
8
- readonly boundWitnessSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
9
- readonly boundWitnesses: import("@xylabs/mongo").BaseMongoSdk<BoundWitnessWithMongoMeta>;
10
- readonly jobQueue: import("@xyo-network/shared").JobQueue;
11
- readonly payloadSdkConfig: import("@xylabs/mongo").BaseMongoSdkConfig;
12
- readonly payloads: import("@xylabs/mongo").BaseMongoSdk<import("@xyo-network/payload-mongodb").PayloadWithMongoMeta>;
13
- ensureIndexes(): Promise<void>;
14
- address: import("@xylabs/hex").Address;
15
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
16
- id: string;
17
- modName?: import("@xyo-network/module-model").ModuleName;
18
- params: import("@xylabs/base").BaseParamsFields & {
19
- account?: import("@xyo-network/account-model").AccountInstance | "random";
20
- addToResolvers?: boolean;
21
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
22
- allowNameResolution?: boolean;
23
- config: import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model-mongodb").MongoDBModuleConfig>;
24
- ephemeralQueryAccountEnabled?: boolean;
25
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
26
- privateChildren?: import("@xyo-network/module-model").ModuleInstance[];
27
- publicChildren?: import("@xyo-network/module-model").ModuleInstance[];
28
- } & {
29
- boundWitnessSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
30
- jobQueue?: import("@xyo-network/shared").JobQueue;
31
- payloadSdkConfig?: (import("@xylabs/mongo").BaseMongoSdkPrivateConfig & Partial<import("@xylabs/mongo").BaseMongoSdkPublicConfig>);
32
- };
33
- previousHash: () => import("@xylabs/promise").Promisable<string | undefined>;
34
- queries: string[];
35
- query: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf) => import("@xylabs/promise").Promisable<import("@xyo-network/module-model").ModuleQueryResult>;
36
- queryable: <T extends import("@xyo-network/boundwitness-model").QueryBoundWitness = import("@xyo-network/boundwitness-model").QueryBoundWitness, TConf_1 extends import("@xyo-network/module-model").ModuleConfig = import("@xyo-network/module-model").ModuleConfig>(query: T, payloads?: import("@xyo-network/payload-model").Payload[], queryConfig?: TConf_1) => import("@xylabs/promise").Promisable<boolean>;
37
- start?: () => import("@xylabs/promise").Promisable<boolean>;
38
- stop?: () => import("@xylabs/promise").Promisable<boolean>;
39
- eventData: import("@xyo-network/module-model").ModuleEventData<object>;
40
- clearListeners(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): void;
41
- emit<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
42
- emitSerial<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, eventArgs: import("@xyo-network/module-model").ModuleEventData<object>[TEventName]): Promise<void>;
43
- listenerCount(eventNames: keyof import("@xyo-network/module-model").ModuleEventData<object> | (keyof import("@xyo-network/module-model").ModuleEventData<object>)[]): number;
44
- off<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): void;
45
- offAny(listener: import("@xyo-network/module-events").EventAnyListener | Promise<void>): void;
46
- on<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventNames: TEventName | TEventName[], listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
47
- onAny(listener: import("@xyo-network/module-events").EventAnyListener): import("@xyo-network/module-events").EventUnsubscribeFunction;
48
- once<TEventName extends keyof import("@xyo-network/module-model").ModuleEventData<object>>(eventName: TEventName, listener: import("@xyo-network/module-events").EventListener<import("@xyo-network/module-model").ModuleEventData<object>[TEventName]>): import("@xyo-network/module-events").EventUnsubscribeFunction;
49
- }) & {
50
- readonly labels: import("@xyo-network/module-model-mongodb").MongoDBStorageClassLabels;
51
- } & typeof BoundWitnessDiviner;
52
- export declare class MongoDBBoundWitnessDiviner extends MongoDBDivinerBase {
53
- static readonly configSchemas: Schema[];
54
- static readonly defaultConfigSchema: Schema;
55
- protected divineHandler(payloads?: Payload[]): Promise<BoundWitness[]>;
56
- protected startHandler(): Promise<boolean>;
57
- }
58
- export {};
59
- //# sourceMappingURL=MongoDBBoundWitnessDiviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoDBBoundWitnessDiviner.d.ts","sourceRoot":"","sources":["../../src/MongoDBBoundWitnessDiviner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAShF,OAAO,EACL,KAAK,OAAO,EAAE,KAAK,MAAM,EAC1B,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAI7E,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sRAkBQ,CAAC,6DAA6D,CAAC;4RAW9C,CAAC,6DAC9C,CAAA;;;;;;;;;;;;;;;8BA9B8D,CAAA;AAElE,qBAAa,0BAA2B,SAAQ,kBAAkB;IAChE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA4D;IAC5G,gBAAyB,mBAAmB,EAAE,MAAM,CAAkC;cAG7D,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;cA2C5D,YAAY;CAKtC"}