@xyo-network/bridge-pub-sub 2.91.2 → 2.91.3

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 (223) hide show
  1. package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.cts +1 -1
  2. package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.cts.map +1 -1
  3. package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.mts +1 -1
  4. package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.mts.map +1 -1
  5. package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.ts +1 -1
  6. package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.ts.map +1 -1
  7. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.cts +1 -2
  8. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.cts.map +1 -1
  9. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.mts +1 -2
  10. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.mts.map +1 -1
  11. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.ts +1 -2
  12. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.ts.map +1 -1
  13. package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.cts +1 -1
  14. package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.cts.map +1 -1
  15. package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.mts +1 -1
  16. package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.mts.map +1 -1
  17. package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.ts +1 -1
  18. package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.ts.map +1 -1
  19. package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.cts +1 -1
  20. package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.cts.map +1 -1
  21. package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.mts +1 -1
  22. package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.mts.map +1 -1
  23. package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.ts +1 -1
  24. package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.ts.map +1 -1
  25. package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts +1 -1
  26. package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts.map +1 -1
  27. package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts +1 -1
  28. package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts.map +1 -1
  29. package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts +1 -1
  30. package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts.map +1 -1
  31. package/dist/browser/AsyncQueryBus/index.d.cts +1 -2
  32. package/dist/browser/AsyncQueryBus/index.d.cts.map +1 -1
  33. package/dist/browser/AsyncQueryBus/index.d.mts +1 -2
  34. package/dist/browser/AsyncQueryBus/index.d.mts.map +1 -1
  35. package/dist/browser/AsyncQueryBus/index.d.ts +1 -2
  36. package/dist/browser/AsyncQueryBus/index.d.ts.map +1 -1
  37. package/dist/browser/AsyncQueryBus/model/BaseConfig.d.cts +14 -0
  38. package/dist/browser/AsyncQueryBus/model/BaseConfig.d.cts.map +1 -0
  39. package/dist/browser/AsyncQueryBus/model/BaseConfig.d.mts +14 -0
  40. package/dist/browser/AsyncQueryBus/model/BaseConfig.d.mts.map +1 -0
  41. package/dist/browser/AsyncQueryBus/model/BaseConfig.d.ts +14 -0
  42. package/dist/browser/AsyncQueryBus/model/BaseConfig.d.ts.map +1 -0
  43. package/dist/browser/AsyncQueryBus/model/ClientConfig.d.cts +9 -0
  44. package/dist/browser/AsyncQueryBus/model/ClientConfig.d.cts.map +1 -0
  45. package/dist/browser/AsyncQueryBus/model/ClientConfig.d.mts +9 -0
  46. package/dist/browser/AsyncQueryBus/model/ClientConfig.d.mts.map +1 -0
  47. package/dist/browser/AsyncQueryBus/model/ClientConfig.d.ts +9 -0
  48. package/dist/browser/AsyncQueryBus/model/ClientConfig.d.ts.map +1 -0
  49. package/dist/browser/AsyncQueryBus/model/HostConfig.d.cts +13 -0
  50. package/dist/browser/AsyncQueryBus/model/HostConfig.d.cts.map +1 -0
  51. package/dist/browser/AsyncQueryBus/model/HostConfig.d.mts +13 -0
  52. package/dist/browser/AsyncQueryBus/model/HostConfig.d.mts.map +1 -0
  53. package/dist/browser/AsyncQueryBus/model/HostConfig.d.ts +13 -0
  54. package/dist/browser/AsyncQueryBus/model/HostConfig.d.ts.map +1 -0
  55. package/dist/browser/AsyncQueryBus/model/IntersectConfig.d.cts +12 -0
  56. package/dist/browser/AsyncQueryBus/model/IntersectConfig.d.cts.map +1 -0
  57. package/dist/browser/AsyncQueryBus/model/IntersectConfig.d.mts +12 -0
  58. package/dist/browser/AsyncQueryBus/model/IntersectConfig.d.mts.map +1 -0
  59. package/dist/browser/AsyncQueryBus/model/IntersectConfig.d.ts +12 -0
  60. package/dist/browser/AsyncQueryBus/model/IntersectConfig.d.ts.map +1 -0
  61. package/dist/browser/AsyncQueryBus/{Params.d.cts → model/Params.d.cts} +3 -1
  62. package/dist/browser/AsyncQueryBus/model/Params.d.cts.map +1 -0
  63. package/dist/{node/AsyncQueryBus → browser/AsyncQueryBus/model}/Params.d.mts +3 -1
  64. package/dist/browser/AsyncQueryBus/model/Params.d.mts.map +1 -0
  65. package/dist/{node/AsyncQueryBus → browser/AsyncQueryBus/model}/Params.d.ts +3 -1
  66. package/dist/browser/AsyncQueryBus/model/Params.d.ts.map +1 -0
  67. package/dist/browser/AsyncQueryBus/model/QueryStatus.d.cts +3 -0
  68. package/dist/browser/AsyncQueryBus/model/QueryStatus.d.cts.map +1 -0
  69. package/dist/browser/AsyncQueryBus/model/QueryStatus.d.mts +3 -0
  70. package/dist/browser/AsyncQueryBus/model/QueryStatus.d.mts.map +1 -0
  71. package/dist/browser/AsyncQueryBus/model/QueryStatus.d.ts +3 -0
  72. package/dist/browser/AsyncQueryBus/model/QueryStatus.d.ts.map +1 -0
  73. package/dist/browser/AsyncQueryBus/model/SearchableStorage.d.cts +15 -0
  74. package/dist/browser/AsyncQueryBus/model/SearchableStorage.d.cts.map +1 -0
  75. package/dist/browser/AsyncQueryBus/model/SearchableStorage.d.mts +15 -0
  76. package/dist/browser/AsyncQueryBus/model/SearchableStorage.d.mts.map +1 -0
  77. package/dist/browser/AsyncQueryBus/model/SearchableStorage.d.ts +15 -0
  78. package/dist/browser/AsyncQueryBus/model/SearchableStorage.d.ts.map +1 -0
  79. package/dist/browser/AsyncQueryBus/model/index.d.cts +8 -0
  80. package/dist/browser/AsyncQueryBus/model/index.d.cts.map +1 -0
  81. package/dist/browser/AsyncQueryBus/model/index.d.mts +8 -0
  82. package/dist/browser/AsyncQueryBus/model/index.d.mts.map +1 -0
  83. package/dist/browser/AsyncQueryBus/model/index.d.ts +8 -0
  84. package/dist/browser/AsyncQueryBus/model/index.d.ts.map +1 -0
  85. package/dist/browser/PubSubBridge.d.cts +10 -15
  86. package/dist/browser/PubSubBridge.d.cts.map +1 -1
  87. package/dist/browser/PubSubBridge.d.mts +10 -15
  88. package/dist/browser/PubSubBridge.d.mts.map +1 -1
  89. package/dist/browser/PubSubBridge.d.ts +10 -15
  90. package/dist/browser/PubSubBridge.d.ts.map +1 -1
  91. package/dist/browser/index.cjs +47 -65
  92. package/dist/browser/index.cjs.map +1 -1
  93. package/dist/browser/index.js +48 -66
  94. package/dist/browser/index.js.map +1 -1
  95. package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.cts +1 -1
  96. package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.cts.map +1 -1
  97. package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.mts +1 -1
  98. package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.mts.map +1 -1
  99. package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.ts +1 -1
  100. package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.ts.map +1 -1
  101. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.cts +1 -2
  102. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.cts.map +1 -1
  103. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.mts +1 -2
  104. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.mts.map +1 -1
  105. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.ts +1 -2
  106. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.ts.map +1 -1
  107. package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.cts +1 -1
  108. package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.cts.map +1 -1
  109. package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.mts +1 -1
  110. package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.mts.map +1 -1
  111. package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.ts +1 -1
  112. package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.ts.map +1 -1
  113. package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.cts +1 -1
  114. package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.cts.map +1 -1
  115. package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.mts +1 -1
  116. package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.mts.map +1 -1
  117. package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.ts +1 -1
  118. package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.ts.map +1 -1
  119. package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts +1 -1
  120. package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts.map +1 -1
  121. package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts +1 -1
  122. package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts.map +1 -1
  123. package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts +1 -1
  124. package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts.map +1 -1
  125. package/dist/node/AsyncQueryBus/index.d.cts +1 -2
  126. package/dist/node/AsyncQueryBus/index.d.cts.map +1 -1
  127. package/dist/node/AsyncQueryBus/index.d.mts +1 -2
  128. package/dist/node/AsyncQueryBus/index.d.mts.map +1 -1
  129. package/dist/node/AsyncQueryBus/index.d.ts +1 -2
  130. package/dist/node/AsyncQueryBus/index.d.ts.map +1 -1
  131. package/dist/node/AsyncQueryBus/model/BaseConfig.d.cts +14 -0
  132. package/dist/node/AsyncQueryBus/model/BaseConfig.d.cts.map +1 -0
  133. package/dist/node/AsyncQueryBus/model/BaseConfig.d.mts +14 -0
  134. package/dist/node/AsyncQueryBus/model/BaseConfig.d.mts.map +1 -0
  135. package/dist/node/AsyncQueryBus/model/BaseConfig.d.ts +14 -0
  136. package/dist/node/AsyncQueryBus/model/BaseConfig.d.ts.map +1 -0
  137. package/dist/node/AsyncQueryBus/model/ClientConfig.d.cts +9 -0
  138. package/dist/node/AsyncQueryBus/model/ClientConfig.d.cts.map +1 -0
  139. package/dist/node/AsyncQueryBus/model/ClientConfig.d.mts +9 -0
  140. package/dist/node/AsyncQueryBus/model/ClientConfig.d.mts.map +1 -0
  141. package/dist/node/AsyncQueryBus/model/ClientConfig.d.ts +9 -0
  142. package/dist/node/AsyncQueryBus/model/ClientConfig.d.ts.map +1 -0
  143. package/dist/node/AsyncQueryBus/model/HostConfig.d.cts +13 -0
  144. package/dist/node/AsyncQueryBus/model/HostConfig.d.cts.map +1 -0
  145. package/dist/node/AsyncQueryBus/model/HostConfig.d.mts +13 -0
  146. package/dist/node/AsyncQueryBus/model/HostConfig.d.mts.map +1 -0
  147. package/dist/node/AsyncQueryBus/model/HostConfig.d.ts +13 -0
  148. package/dist/node/AsyncQueryBus/model/HostConfig.d.ts.map +1 -0
  149. package/dist/node/AsyncQueryBus/model/IntersectConfig.d.cts +12 -0
  150. package/dist/node/AsyncQueryBus/model/IntersectConfig.d.cts.map +1 -0
  151. package/dist/node/AsyncQueryBus/model/IntersectConfig.d.mts +12 -0
  152. package/dist/node/AsyncQueryBus/model/IntersectConfig.d.mts.map +1 -0
  153. package/dist/node/AsyncQueryBus/model/IntersectConfig.d.ts +12 -0
  154. package/dist/node/AsyncQueryBus/model/IntersectConfig.d.ts.map +1 -0
  155. package/dist/node/AsyncQueryBus/{Params.d.cts → model/Params.d.cts} +3 -1
  156. package/dist/node/AsyncQueryBus/model/Params.d.cts.map +1 -0
  157. package/dist/{browser/AsyncQueryBus → node/AsyncQueryBus/model}/Params.d.mts +3 -1
  158. package/dist/node/AsyncQueryBus/model/Params.d.mts.map +1 -0
  159. package/dist/{browser/AsyncQueryBus → node/AsyncQueryBus/model}/Params.d.ts +3 -1
  160. package/dist/node/AsyncQueryBus/model/Params.d.ts.map +1 -0
  161. package/dist/node/AsyncQueryBus/model/QueryStatus.d.cts +3 -0
  162. package/dist/node/AsyncQueryBus/model/QueryStatus.d.cts.map +1 -0
  163. package/dist/node/AsyncQueryBus/model/QueryStatus.d.mts +3 -0
  164. package/dist/node/AsyncQueryBus/model/QueryStatus.d.mts.map +1 -0
  165. package/dist/node/AsyncQueryBus/model/QueryStatus.d.ts +3 -0
  166. package/dist/node/AsyncQueryBus/model/QueryStatus.d.ts.map +1 -0
  167. package/dist/node/AsyncQueryBus/model/SearchableStorage.d.cts +15 -0
  168. package/dist/node/AsyncQueryBus/model/SearchableStorage.d.cts.map +1 -0
  169. package/dist/node/AsyncQueryBus/model/SearchableStorage.d.mts +15 -0
  170. package/dist/node/AsyncQueryBus/model/SearchableStorage.d.mts.map +1 -0
  171. package/dist/node/AsyncQueryBus/model/SearchableStorage.d.ts +15 -0
  172. package/dist/node/AsyncQueryBus/model/SearchableStorage.d.ts.map +1 -0
  173. package/dist/node/AsyncQueryBus/model/index.d.cts +8 -0
  174. package/dist/node/AsyncQueryBus/model/index.d.cts.map +1 -0
  175. package/dist/node/AsyncQueryBus/model/index.d.mts +8 -0
  176. package/dist/node/AsyncQueryBus/model/index.d.mts.map +1 -0
  177. package/dist/node/AsyncQueryBus/model/index.d.ts +8 -0
  178. package/dist/node/AsyncQueryBus/model/index.d.ts.map +1 -0
  179. package/dist/node/PubSubBridge.d.cts +10 -15
  180. package/dist/node/PubSubBridge.d.cts.map +1 -1
  181. package/dist/node/PubSubBridge.d.mts +10 -15
  182. package/dist/node/PubSubBridge.d.mts.map +1 -1
  183. package/dist/node/PubSubBridge.d.ts +10 -15
  184. package/dist/node/PubSubBridge.d.ts.map +1 -1
  185. package/dist/node/index.cjs +53 -70
  186. package/dist/node/index.cjs.map +1 -1
  187. package/dist/node/index.js +54 -71
  188. package/dist/node/index.js.map +1 -1
  189. package/package.json +30 -30
  190. package/src/AsyncQueryBus/AsyncQueryBusBase.ts +9 -9
  191. package/src/AsyncQueryBus/AsyncQueryBusClient.ts +1 -2
  192. package/src/AsyncQueryBus/AsyncQueryBusHost.ts +1 -1
  193. package/src/AsyncQueryBus/ModuleHost/ModuleHost.ts +1 -1
  194. package/src/AsyncQueryBus/ModuleProxy/ModuleProxy.ts +2 -2
  195. package/src/AsyncQueryBus/index.ts +1 -2
  196. package/src/AsyncQueryBus/model/BaseConfig.ts +16 -0
  197. package/src/AsyncQueryBus/model/ClientConfig.ts +10 -0
  198. package/src/AsyncQueryBus/model/HostConfig.ts +15 -0
  199. package/src/AsyncQueryBus/model/IntersectConfig.ts +13 -0
  200. package/src/AsyncQueryBus/{Params.ts → model/Params.ts} +3 -1
  201. package/src/AsyncQueryBus/model/QueryStatus.ts +2 -0
  202. package/src/AsyncQueryBus/model/SearchableStorage.ts +15 -0
  203. package/src/AsyncQueryBus/model/index.ts +7 -0
  204. package/src/PubSubBridge.ts +57 -117
  205. package/dist/browser/AsyncQueryBus/Config.d.cts +0 -53
  206. package/dist/browser/AsyncQueryBus/Config.d.cts.map +0 -1
  207. package/dist/browser/AsyncQueryBus/Config.d.mts +0 -53
  208. package/dist/browser/AsyncQueryBus/Config.d.mts.map +0 -1
  209. package/dist/browser/AsyncQueryBus/Config.d.ts +0 -53
  210. package/dist/browser/AsyncQueryBus/Config.d.ts.map +0 -1
  211. package/dist/browser/AsyncQueryBus/Params.d.cts.map +0 -1
  212. package/dist/browser/AsyncQueryBus/Params.d.mts.map +0 -1
  213. package/dist/browser/AsyncQueryBus/Params.d.ts.map +0 -1
  214. package/dist/node/AsyncQueryBus/Config.d.cts +0 -53
  215. package/dist/node/AsyncQueryBus/Config.d.cts.map +0 -1
  216. package/dist/node/AsyncQueryBus/Config.d.mts +0 -53
  217. package/dist/node/AsyncQueryBus/Config.d.mts.map +0 -1
  218. package/dist/node/AsyncQueryBus/Config.d.ts +0 -53
  219. package/dist/node/AsyncQueryBus/Config.d.ts.map +0 -1
  220. package/dist/node/AsyncQueryBus/Params.d.cts.map +0 -1
  221. package/dist/node/AsyncQueryBus/Params.d.mts.map +0 -1
  222. package/dist/node/AsyncQueryBus/Params.d.ts.map +0 -1
  223. package/src/AsyncQueryBus/Config.ts +0 -62
@@ -209,30 +209,30 @@ var _AsyncQueryBusBase = class _AsyncQueryBusBase extends Base2 {
209
209
  }
210
210
  async queriesArchivist() {
211
211
  var _a, _b, _c;
212
- return assertEx2(asArchivistInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.clearingHouse) == null ? void 0 : _b.queries) == null ? void 0 : _c.archivist)), () => {
212
+ return assertEx2(asArchivistInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.queries) == null ? void 0 : _c.archivist)), () => {
213
213
  var _a2, _b2, _c2;
214
- return `Unable to resolve queriesArchivist [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.clearingHouse) == null ? void 0 : _b2.queries) == null ? void 0 : _c2.archivist}]`;
214
+ return `Unable to resolve queriesArchivist [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.intersect) == null ? void 0 : _b2.queries) == null ? void 0 : _c2.archivist}]`;
215
215
  });
216
216
  }
217
217
  async queriesDiviner() {
218
218
  var _a, _b, _c;
219
- return assertEx2(asDivinerInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.clearingHouse) == null ? void 0 : _b.queries) == null ? void 0 : _c.boundWitnessDiviner)), () => {
219
+ return assertEx2(asDivinerInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.queries) == null ? void 0 : _c.boundWitnessDiviner)), () => {
220
220
  var _a2, _b2, _c2;
221
- return `Unable to resolve queriesDiviner [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.clearingHouse) == null ? void 0 : _b2.queries) == null ? void 0 : _c2.boundWitnessDiviner}]`;
221
+ return `Unable to resolve queriesDiviner [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.intersect) == null ? void 0 : _b2.queries) == null ? void 0 : _c2.boundWitnessDiviner}]`;
222
222
  });
223
223
  }
224
224
  async responsesArchivist() {
225
225
  var _a, _b, _c;
226
- return assertEx2(asArchivistInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.clearingHouse) == null ? void 0 : _b.responses) == null ? void 0 : _c.archivist)), () => {
226
+ return assertEx2(asArchivistInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.responses) == null ? void 0 : _c.archivist)), () => {
227
227
  var _a2, _b2, _c2;
228
- return `Unable to resolve responsesArchivist [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.clearingHouse) == null ? void 0 : _b2.responses) == null ? void 0 : _c2.archivist}]`;
228
+ return `Unable to resolve responsesArchivist [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.intersect) == null ? void 0 : _b2.responses) == null ? void 0 : _c2.archivist}]`;
229
229
  });
230
230
  }
231
231
  async responsesDiviner() {
232
232
  var _a, _b, _c;
233
- return assertEx2(asDivinerInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.clearingHouse) == null ? void 0 : _b.responses) == null ? void 0 : _c.boundWitnessDiviner)), () => {
233
+ return assertEx2(asDivinerInstance(await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.responses) == null ? void 0 : _c.boundWitnessDiviner)), () => {
234
234
  var _a2, _b2, _c2;
235
- return `Unable to resolve responsesDiviner [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.clearingHouse) == null ? void 0 : _b2.responses) == null ? void 0 : _c2.boundWitnessDiviner}]`;
235
+ return `Unable to resolve responsesDiviner [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.intersect) == null ? void 0 : _b2.responses) == null ? void 0 : _c2.boundWitnessDiviner}]`;
236
236
  });
237
237
  }
238
238
  /**
@@ -269,7 +269,7 @@ var _AsyncQueryBusBase = class _AsyncQueryBusBase extends Base2 {
269
269
  __name(_AsyncQueryBusBase, "AsyncQueryBusBase");
270
270
  var AsyncQueryBusBase = _AsyncQueryBusBase;
271
271
 
272
- // src/AsyncQueryBus/Config.ts
272
+ // src/AsyncQueryBus/model/QueryStatus.ts
273
273
  var Pending = "pending";
274
274
 
275
275
  // src/AsyncQueryBus/AsyncQueryBusClient.ts
@@ -653,7 +653,7 @@ var AsyncQueryBusModuleHost = _AsyncQueryBusModuleHost;
653
653
  // src/AsyncQueryBus/ModuleProxy/ModuleProxy.ts
654
654
  var _AsyncQueryBusModuleProxy = class _AsyncQueryBusModuleProxy extends AbstractModuleProxy {
655
655
  async query(query, payloads) {
656
- return await this.proxyParams.bridgeClient.send(this.address, query, payloads);
656
+ return await this.proxyParams.busClient.send(this.address, query, payloads);
657
657
  }
658
658
  };
659
659
  __name(_AsyncQueryBusModuleProxy, "AsyncQueryBusModuleProxy");
@@ -667,11 +667,11 @@ var PubSubBridgeConfigSchema = `${PubSubBridgeSchema}.config`;
667
667
 
668
668
  // src/PubSubBridge.ts
669
669
  import { assertEx as assertEx4 } from "@xylabs/assert";
670
+ import { isAddress } from "@xylabs/hex";
670
671
  import { AbstractBridge } from "@xyo-network/abstract-bridge";
672
+ import { Account } from "@xyo-network/account";
671
673
  import { ModuleManifestPayloadSchema } from "@xyo-network/manifest-model";
672
- import { creatableModule, ModuleManifestQuerySchema as ModuleManifestQuerySchema2 } from "@xyo-network/module-model";
673
- import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
674
- import { LRUCache as LRUCache3 } from "lru-cache";
674
+ import { creatableModule, ModuleConfigSchema as ModuleConfigSchema2 } from "@xyo-network/module-model";
675
675
  function _ts_decorate(decorators, target, key, desc) {
676
676
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
677
677
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -688,43 +688,18 @@ var _PubSubBridge = class _PubSubBridge extends AbstractBridge {
688
688
  _configRootAddress = "";
689
689
  _configStateStoreArchivist = "";
690
690
  _configStateStoreBoundWitnessDiviner = "";
691
- _discoverCache;
692
691
  _lastState;
693
- _targetConfigs = {};
694
- _targetQueries = {};
695
692
  _busClient;
696
693
  _busHost;
697
- get discoverCache() {
698
- const config = this.discoverCacheConfig;
699
- this._discoverCache = this._discoverCache ?? new LRUCache3({
700
- ttlAutopurge: true,
701
- ...config
702
- });
703
- return this._discoverCache;
704
- }
705
- get discoverCacheConfig() {
706
- const discoverCacheConfig = this.config.discoverCache === true ? {} : this.config.discoverCache;
707
- return {
708
- max: 100,
709
- ttl: 1e3 * 60 * 5,
710
- ...discoverCacheConfig
711
- };
712
- }
713
694
  get moduleName() {
714
695
  return `${this.config.name ?? moduleName}`;
715
696
  }
716
697
  get rootAddress() {
717
698
  return this._configRootAddress;
718
699
  }
719
- // protected get stateStoreArchivistConfig() {
720
- // return this._configStateStoreArchivist
721
- // }
722
- // protected get stateStoreBoundWitnessDivinerConfig() {
723
- // return this._configStateStoreBoundWitnessDiviner
724
- // }
725
700
  connect() {
726
701
  this.connected = true;
727
- return true;
702
+ return this.connected;
728
703
  }
729
704
  async disconnect() {
730
705
  await Promise.resolve();
@@ -734,49 +709,55 @@ var _PubSubBridge = class _PubSubBridge extends AbstractBridge {
734
709
  getRootAddress() {
735
710
  return this.rootAddress;
736
711
  }
737
- targetConfig(address) {
738
- return assertEx4(this._targetConfigs[address], () => `targetConfig not set [${address}]`);
739
- }
740
- async targetDiscover(address, _maxDepth) {
741
- var _a, _b;
742
- if (!this.connected)
743
- throw new Error("Not connected");
744
- const cachedResult = (_a = this.discoverCache) == null ? void 0 : _a.get(address ?? "root ");
745
- if (cachedResult) {
746
- return cachedResult;
712
+ async resolve(idOrFilter, _options) {
713
+ if (idOrFilter === void 0) {
714
+ return [];
715
+ }
716
+ if (typeof idOrFilter === "string") {
717
+ const upResolve = await this.upResolver.resolve(idOrFilter);
718
+ if (upResolve)
719
+ return upResolve;
720
+ assertEx4(!isAddress(idOrFilter), "Name resolutions not supported");
721
+ const params = {
722
+ account: Account.randomSync(),
723
+ busClient: assertEx4(this.busClient(), "Bus client not initialized"),
724
+ moduleAddress: idOrFilter,
725
+ queries: []
726
+ };
727
+ return await Promise.resolve(new AsyncQueryBusModuleProxy(params));
728
+ } else {
729
+ throw new TypeError("Filter not Supported");
747
730
  }
748
- await this.started("throw");
749
- const addressToDiscover = address ?? await this.getRootAddress();
750
- (_b = this.logger) == null ? void 0 : _b.debug(`${this.moduleName}: Begin issuing targetDiscover to: ${addressToDiscover}`);
751
- return [];
752
731
  }
753
- async targetManifest(address, maxDepth) {
754
- const addressToCall = address ?? this.getRootAddress();
755
- const queryPayload = {
756
- maxDepth,
757
- schema: ModuleManifestQuerySchema2
732
+ targetConfig(_address) {
733
+ return {
734
+ schema: ModuleConfigSchema2
758
735
  };
759
- const boundQuery = await this.bindQuery(queryPayload);
760
- const manifest = assertEx4(await this.targetQuery(addressToCall, boundQuery[0], boundQuery[1]), () => `Unable to resolve [${address}]`)[1];
761
- return assertEx4(manifest.find(isPayloadOfSchemaType(ModuleManifestPayloadSchema)), "Did not receive manifest");
762
736
  }
763
- targetQueries(address) {
764
- if (!this.connected)
765
- throw new Error("Not connected");
766
- return assertEx4(this._targetQueries[address], () => `targetQueries not set [${address}]`);
737
+ targetManifest(_address, _maxDepth) {
738
+ return {
739
+ config: {
740
+ name: "",
741
+ schema: ModuleConfigSchema2
742
+ },
743
+ schema: ModuleManifestPayloadSchema
744
+ };
745
+ }
746
+ targetQueries(_address) {
747
+ return [];
767
748
  }
768
749
  async targetQuery(address, query, payloads) {
769
750
  if (!this.connected)
770
751
  throw new Error("Not connected");
771
752
  await this.started("throw");
772
- const bus = this.busClient();
773
- return bus.send(address, query, payloads);
753
+ const bus = assertEx4(this.busClient(), "Client not configured");
754
+ return bus == null ? void 0 : bus.send(address, query, payloads);
774
755
  }
775
756
  targetQueryable(_address, _query, _payloads, _queryConfig) {
776
757
  return true;
777
758
  }
778
759
  busClient() {
779
- if (!this._busClient) {
760
+ if (!this._busClient && this.config.client) {
780
761
  this._busClient = new AsyncQueryBusClient({
781
762
  config: this.config.client,
782
763
  logger: this.logger,
@@ -786,7 +767,7 @@ var _PubSubBridge = class _PubSubBridge extends AbstractBridge {
786
767
  return this._busClient;
787
768
  }
788
769
  busHost() {
789
- if (!this._busHost) {
770
+ if (!this._busHost && this.config.host) {
790
771
  this._busHost = new AsyncQueryBusHost({
791
772
  config: this.config.host,
792
773
  logger: this.logger,
@@ -796,12 +777,14 @@ var _PubSubBridge = class _PubSubBridge extends AbstractBridge {
796
777
  return this._busHost;
797
778
  }
798
779
  async startHandler() {
780
+ var _a;
799
781
  await Promise.resolve(this.connect());
800
- this.busHost().start();
782
+ (_a = this.busHost()) == null ? void 0 : _a.start();
801
783
  return true;
802
784
  }
803
785
  stopHandler(_timeout) {
804
- this.busHost().stop();
786
+ var _a;
787
+ (_a = this.busHost()) == null ? void 0 : _a.stop();
805
788
  return true;
806
789
  }
807
790
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractModuleProxy/AbstractModuleProxy.ts","../../src/AsyncQueryBus/AsyncQueryBusClient.ts","../../src/AsyncQueryBus/AsyncQueryBusBase.ts","../../src/AsyncQueryBus/Config.ts","../../src/AsyncQueryBus/AsyncQueryBusHost.ts","../../src/AbstractModuleHost/AbstractModuleHost.ts","../../src/AsyncQueryBus/ModuleHost/ModuleHost.ts","../../src/AsyncQueryBus/ModuleProxy/ModuleProxy.ts","../../src/Schema.ts","../../src/Config.ts","../../src/PubSubBridge.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Base, BaseParams } from '@xylabs/object'\nimport { Promisable, PromiseEx } from '@xylabs/promise'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { QueryBoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { EventAnyListener, EventListener, EventUnsubscribeFunction } from '@xyo-network/module-events'\nimport {\n AddressPreviousHashPayload,\n AddressPreviousHashSchema,\n Module,\n ModuleAddressQuery,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleDescribeQuery,\n ModuleDescribeQuerySchema,\n ModuleDescription,\n ModuleDiscoverQuery,\n ModuleDiscoverQuerySchema,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleManifestQuerySchema,\n ModuleQueryResult,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\nimport { ModuleError, ModuleErrorSchema, Payload, Query, WithMeta } from '@xyo-network/payload-model'\n\nexport type ModuleProxyParams = BaseParams<{\n account: AccountInstance\n moduleAddress: Address\n queries: string[]\n}>\n\nexport abstract class AbstractModuleProxy<TParams extends ModuleProxyParams = ModuleProxyParams, TWrappedModule extends Module = Module>\n extends Base<TWrappedModule['params']>\n implements ModuleInstance<TWrappedModule['params'], TWrappedModule['eventData']>\n{\n static requiredQueries: string[] = [ModuleDiscoverQuerySchema]\n\n eventData = {} as TWrappedModule['eventData']\n\n protected readonly proxyParams: TParams\n\n constructor(params: TParams) {\n super({ config: { schema: ModuleConfigSchema } })\n this.proxyParams = params\n }\n\n get account() {\n return this.proxyParams.account\n }\n\n get address() {\n return this.proxyParams.moduleAddress\n }\n\n get config() {\n return this.params.config\n }\n\n get downResolver(): ModuleResolverInstance {\n throw new Error('Unsupported')\n }\n\n get id() {\n return this.proxyParams.moduleAddress\n }\n\n get queries(): string[] {\n return this.proxyParams.queries\n }\n\n get upResolver(): ModuleResolverInstance {\n throw new Error('Unsupported')\n }\n\n static hasRequiredQueries(module: Module) {\n return this.missingRequiredQueries(module).length === 0\n }\n\n static missingRequiredQueries(module: Module): string[] {\n const moduleQueries = module.queries\n return compact(\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n }),\n )\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return assertEx(\n (await this.sendQuery(queryPayload)).find((payload) => payload.schema === AddressPreviousHashSchema) as WithMeta<AddressPreviousHashPayload>,\n 'Result did not include correct payload',\n )\n }\n\n clearListeners(_eventNames: Parameters<TWrappedModule['clearListeners']>[0]) {\n throw new Error('Unsupported')\n }\n\n //TODO: Make ModuleDescription into real payload\n async describe(): Promise<ModuleDescription> {\n const queryPayload: ModuleDescribeQuery = { schema: ModuleDescribeQuerySchema }\n return (await this.sendQuery(queryPayload))[0] as unknown as ModuleDescription\n }\n\n async discover(): Promise<Payload[]> {\n const queryPayload: ModuleDiscoverQuery = { schema: ModuleDiscoverQuerySchema }\n return await this.sendQuery(queryPayload)\n }\n\n emit(_eventName: Parameters<TWrappedModule['emit']>[0], _eventArgs: Parameters<TWrappedModule['emit']>[1]): Promise<void> {\n throw new Error('Unsupported')\n }\n\n emitSerial(_eventName: Parameters<TWrappedModule['emitSerial']>[0], _eventArgs: Parameters<TWrappedModule['emitSerial']>[1]): Promise<void> {\n throw new Error('Unsupported')\n }\n\n listenerCount(_eventNames: Parameters<TWrappedModule['listenerCount']>[0]): number {\n throw new Error('Unsupported')\n }\n\n async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as WithMeta<ModuleManifestPayload>\n }\n\n async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload)) as WithMeta<AddressPreviousHashPayload>[]\n }\n\n off<TEventName extends keyof TWrappedModule['eventData']>(\n _eventNames: TEventName,\n _listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ) {\n throw new Error('Unsupported')\n }\n\n offAny(_listener: EventAnyListener) {\n throw new Error('Unsupported')\n }\n\n on<TEventName extends keyof TWrappedModule['eventData']>(\n _eventNames: TEventName,\n _listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): EventUnsubscribeFunction {\n throw new Error('Unsupported')\n }\n\n onAny(_listener: EventAnyListener): EventUnsubscribeFunction {\n throw new Error('Unsupported')\n }\n\n once<TEventName extends keyof TWrappedModule['eventData']>(\n _eventName: TEventName,\n _listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): EventUnsubscribeFunction {\n throw new Error('Unsupported')\n }\n\n async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as WithMeta<AddressPreviousHashPayload>).previousHash\n }\n\n queryable<T extends QueryBoundWitness = QueryBoundWitness>(_query: T, _payloads?: Payload[]) {\n return true\n }\n\n resolve(filter?: ModuleFilter | undefined, options?: ModuleFilterOptions<ModuleInstance> | undefined): Promisable<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions<ModuleInstance> | undefined): Promisable<ModuleInstance | undefined>\n resolve(nameOrAddressOrFilter?: string | ModuleFilter, _options?: unknown): Promisable<ModuleInstance | ModuleInstance[] | undefined> | undefined {\n return typeof nameOrAddressOrFilter === 'string' ? undefined : []\n }\n\n state() {\n return []\n }\n\n protected bindQuery<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance | undefined = this.account,\n ): PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const promise = new PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance>(async (resolve) => {\n const result = await this.bindQueryInternal(query, payloads, account)\n resolve?.(result)\n return result\n }, account)\n return promise\n }\n\n protected async bindQueryInternal<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance | undefined = this.account,\n ): Promise<[QueryBoundWitness, Payload[], ModuleError[]]> {\n const builder = await new QueryBoundWitnessBuilder().payloads(payloads).query(query)\n const result = await (account ? builder.witness(account) : builder).build()\n return result\n }\n\n protected async filterErrors(result: ModuleQueryResult): Promise<ModuleError[]> {\n const wrapper = await BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<WithMeta<ModuleError>>(ModuleErrorSchema)\n }\n\n protected async sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n ): Promise<WithMeta<R>[]> {\n // Bind them\n const query = await this.bindQuery(queryPayload, payloads)\n\n // Send them off\n const [, resultPayloads, errors] = await this.query(query[0], query[1])\n\n /* TODO: Figure out what to do with the returning BW. Should we store them in a queue in case the caller wants to see them? */\n\n if (errors && errors.length > 0) {\n /* TODO: Figure out how to rollup multiple Errors */\n throw errors[0]\n }\n\n return resultPayloads as WithMeta<R>[]\n }\n\n abstract query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n","import { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { clearTimeoutEx, setTimeoutEx } from '@xylabs/timer'\nimport { isBoundWitnessWithMeta, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { CacheConfig } from '@xyo-network/bridge-model'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { ModuleQueryResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { ModuleError, Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { Pending } from './Config'\nimport { AsyncQueryBusClientParams } from './Params'\n\nexport class AsyncQueryBusClient<TParams extends AsyncQueryBusClientParams = AsyncQueryBusClientParams> extends AsyncQueryBusBase<TParams> {\n protected _queryCache?: LRUCache<Address, Pending | ModuleQueryResult>\n private _pollCount = 0\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get queryCacheConfig(): LRUCache.Options<Address, Pending | ModuleQueryResult, unknown> {\n const queryCacheConfig: CacheConfig | undefined = this.config?.queryCache === true ? {} : this.config?.queryCache\n return { max: 100, ttl: 1000 * 60, ...queryCacheConfig }\n }\n\n get started() {\n return !!this._pollId\n }\n\n /**\n * A cache of queries that have been issued\n */\n protected get queryCache(): LRUCache<Address, Pending | ModuleQueryResult> {\n const config = this.queryCacheConfig\n const requiredConfig = { noUpdateTTL: false, ttlAutopurge: true }\n this._queryCache = this._queryCache ?? new LRUCache<Address, Pending | ModuleQueryResult>({ ...config, ...requiredConfig })\n return this._queryCache\n }\n\n listeningAddresses() {\n return this._queryCache?.keys()\n }\n\n async send(address: Address, query: QueryBoundWitness, payloads?: Payload[] | undefined): Promise<ModuleQueryResult> {\n this.logger?.debug(`Begin issuing query to: ${address}`)\n const $meta = { ...query?.$meta, destination: [address] }\n const routedQuery = await PayloadBuilder.build({ ...query, $meta })\n const queryArchivist = await this.queriesArchivist()\n\n // TODO: Should we always re-hash to true up timestamps? We can't\n // re-sign correctly so we would lose that information if we did and\n // would also be replying to consumers with a different query hash than\n // they sent us (which might be OK since it reflect the chain of custody)\n // Revisit this once we have proxy module support as they are another\n // intermediary to consider.\n const routedQueryHash =\n // Trust the signed hash if it's there\n (routedQuery as WithMeta<QueryBoundWitness>)?.$hash ??\n // TODO: What is the right way to find the dataHash\n Object.keys(await PayloadBuilder.toDataHashMap([routedQuery]))[0]\n this.logger?.debug(`Issuing query: ${routedQueryHash} to: ${address}`)\n // If there was data associated with the query, add it to the insert\n const data = payloads ? [routedQuery, ...payloads] : [routedQuery]\n const insertResult = await queryArchivist.insert?.(data)\n this.logger?.debug(`Issued query: ${routedQueryHash} to: ${address}`)\n this.queryCache.set(routedQueryHash, Pending)\n if (!insertResult) throw new Error('Unable to issue query to queryArchivist')\n const context = new Promise<ModuleQueryResult>((resolve) => {\n this.logger?.debug(`Polling for response to query: ${routedQueryHash}`)\n const pollForResponse = async () => {\n try {\n this.start()\n let response = this.queryCache.get(routedQueryHash)\n // Poll for response until cache key expires (response timed out)\n while (response !== undefined) {\n // Wait a bit\n await delay(100)\n // Check the status of the response\n response = this.queryCache.get(routedQueryHash)\n // If status is no longer pending that means we received a response\n if (response && response !== Pending) {\n this.logger?.debug(`Returning response to query: ${routedQueryHash}`)\n resolve(response)\n return\n }\n }\n // If we got here waiting for a response timed out\n this.logger?.error('Timeout waiting for query response')\n // Resolve with error to match what a local module would do if it were to error\n // TODO: BW Builder/Sign result as this module?\n const error: ModuleError = {\n message: 'Timeout waiting for query response',\n query: 'network.xyo.boundwitness',\n schema: 'network.xyo.error.module',\n sources: [routedQueryHash],\n }\n resolve([routedQuery, [], [await PayloadBuilder.build(error)]])\n return\n } finally {\n this.stop()\n }\n }\n forget(pollForResponse())\n })\n return context\n }\n\n /**\n * Runs the background divine process on a loop with a delay\n * specified by the `config.pollFrequency`\n */\n private poll() {\n this._pollId = setTimeoutEx(async () => {\n try {\n await this.processIncomingResponses()\n } catch (e) {\n this.logger?.error?.(`Error in main loop: ${e}`)\n } finally {\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n this.poll()\n }\n }, this.pollFrequencyConfig)\n }\n\n /**\n * Background process for processing incoming responses to previously issued queries\n */\n private processIncomingResponses = async () => {\n const responseArchivist = await this.responsesArchivist()\n const responseBoundWitnessDiviner = await this.responsesDiviner()\n const pendingCommands = [...this.queryCache.entries()].filter(([_, status]) => status === Pending)\n // TODO: Do in throttled batches\n await Promise.allSettled(\n pendingCommands.map(async ([sourceQuery, status]) => {\n if (status === Pending) {\n const divinerQuery: BoundWitnessDivinerQueryPayload = { schema: BoundWitnessDivinerQuerySchema, sourceQuery }\n const result = await responseBoundWitnessDiviner.divine([divinerQuery])\n if (result && result.length > 0) {\n const response = result.find(isBoundWitnessWithMeta)\n if (response && (response?.$meta as unknown as { sourceQuery: string })?.sourceQuery === sourceQuery) {\n this.logger?.debug(`Found response to query: ${sourceQuery}`)\n // Get any payloads associated with the response\n const payloads: PayloadWithMeta[] = response.payload_hashes?.length > 0 ? await responseArchivist.get(response.payload_hashes) : []\n this.queryCache.set(sourceQuery, [response, payloads, []])\n }\n }\n }\n }),\n )\n }\n\n private start() {\n if (this._pollCount === 0) {\n this.poll()\n }\n this._pollCount++\n }\n\n private stop() {\n this._pollCount--\n if (this._pollCount <= 0) {\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n this._pollCount = 0\n }\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Base } from '@xylabs/object'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerParams, BoundWitnessDivinerQueryPayload } from '@xyo-network/diviner-boundwitness-model'\nimport { asDivinerInstance, DivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleConfig } from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { AsyncQueryBusParams } from './Params'\n\nexport class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends Base<TParams> {\n protected _lastState?: LRUCache<Address, number>\n protected _targetConfigs: Record<Address, ModuleConfig> = {}\n protected _targetQueries: Record<Address, string[]> = {}\n\n constructor(params: TParams) {\n super(params)\n }\n\n get config(): TParams['config'] {\n return this.params.config\n }\n\n get pollFrequencyConfig(): number {\n return this.config?.pollFrequency ?? 1000\n }\n\n get resolver() {\n return this.params.resolver\n }\n\n /**\n * A cache of the last offset of the Diviner process per address\n */\n protected get lastState(): LRUCache<Address, number> {\n const requiredConfig = { max: 1000, ttl: 0 }\n this._lastState = this._lastState ?? new LRUCache<Address, number>(requiredConfig)\n return this._lastState\n }\n\n async queriesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config?.clearingHouse?.queries?.archivist)),\n () => `Unable to resolve queriesArchivist [${this.config?.clearingHouse?.queries?.archivist}]`,\n )\n }\n\n async queriesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config?.clearingHouse?.queries?.boundWitnessDiviner)),\n () => `Unable to resolve queriesDiviner [${this.config?.clearingHouse?.queries?.boundWitnessDiviner}]`,\n ) as DivinerInstance<BoundWitnessDivinerParams, BoundWitnessDivinerQueryPayload, QueryBoundWitness>\n }\n\n async responsesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config?.clearingHouse?.responses?.archivist)),\n () => `Unable to resolve responsesArchivist [${this.config?.clearingHouse?.responses?.archivist}]`,\n )\n }\n\n async responsesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config?.clearingHouse?.responses?.boundWitnessDiviner)),\n () => `Unable to resolve responsesDiviner [${this.config?.clearingHouse?.responses?.boundWitnessDiviner}]`,\n ) as DivinerInstance<BoundWitnessDivinerParams, BoundWitnessDivinerQueryPayload, BoundWitness>\n }\n\n /**\n * Commit the internal state of the process. This is similar\n * to a transaction completion in a database and should only be called\n * when results have been successfully persisted to the appropriate\n * external stores.\n * @param address The module address to commit the state for\n * @param nextState The state to commit\n */\n protected async commitState(address: Address, nextState: number) {\n await Promise.resolve()\n // TODO: Offload to Archivist/Diviner instead of in-memory\n const lastState = this.lastState.get(address)\n if (lastState && lastState >= nextState) return\n this.lastState.set(address, nextState)\n }\n\n /**\n * Retrieves the last state of the process. Used to recover state after\n * preemptions, reboots, etc.\n */\n protected async retrieveState(address: Address): Promise<number> {\n await Promise.resolve()\n const state = this.lastState.get(address)\n if (state === undefined) {\n // If this is a boot we can go back a bit in time\n // and begin processing recent commands\n const newState = Date.now() - 1000\n this.lastState.set(address, newState)\n return newState\n } else {\n return state\n }\n }\n}\n","import { CacheConfig } from '@xyo-network/bridge-model'\nimport { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport const Pending = 'pending' as const\nexport type Pending = typeof Pending\n\n/**\n * Configuration for searchable storage of local state\n */\nexport interface SearchableStorage {\n /**\n * Name/Address of the archivist where intermediate communications are stored\n */\n archivist: ModuleIdentifier\n /**\n * Name/Address of the diviner where intermediate communications are filtered\n */\n boundWitnessDiviner: ModuleIdentifier\n}\n\nexport interface AsyncQueryBusClearingHouseConfig {\n /**\n * Configuration for intermediary query storage\n */\n queries?: SearchableStorage\n\n /**\n * Configuration for intermediary response storage\n */\n responses?: SearchableStorage\n}\n\nexport interface AsyncQueryBusBaseConfig {\n clearingHouse?: AsyncQueryBusClearingHouseConfig\n\n /**\n * How often to poll for new queries/responses\n */\n pollFrequency?: number\n\n /**\n * Where the archivist should persist its internal state\n */\n stateStore?: SearchableStorage\n}\n\nexport interface AsyncQueryBusClientConfig extends AsyncQueryBusBaseConfig {\n /**\n * Configuration for intermediary response storage\n */\n queryCache?: CacheConfig | true\n}\n\nexport interface AsyncQueryBusHostConfig extends AsyncQueryBusBaseConfig {\n listeningModules?: string[]\n\n /**\n * How many queries to process at once when retrieving queries\n * for an address\n */\n perAddressBatchQueryLimit?: number\n}\n","import { containsAll } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { clearTimeoutEx, setTimeoutEx } from '@xylabs/timer'\nimport { isQueryBoundWitnessWithMeta, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { asModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { WithMeta } from '@xyo-network/payload-model'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { AsyncQueryBusHostParams } from './Params'\n\nexport class AsyncQueryBusHost<TParams extends AsyncQueryBusHostParams = AsyncQueryBusHostParams> extends AsyncQueryBusBase<TParams> {\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get perAddressBatchQueryLimit(): number {\n return this.config?.perAddressBatchQueryLimit ?? 10\n }\n\n get started() {\n return !!this._pollId\n }\n\n async listeningModules(): Promise<ModuleInstance[]> {\n const mods =\n this.config?.listeningModules ?\n await Promise.all(\n this.config.listeningModules.map(async (listeningModule) =>\n assertEx(asModuleInstance(await this.resolver.resolve(listeningModule)), () => `Unable to resolve listeningModule [${listeningModule}]`),\n ),\n )\n : await this.resolver.resolve(undefined, { direction: 'down' })\n return mods\n }\n\n start() {\n if (this.started) {\n console.warn('AsyncQueryBus starting when already started')\n }\n this.poll()\n }\n\n stop() {\n if (!this.started) {\n console.warn('AsyncQueryBus stopping when already stopped')\n }\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n }\n\n protected callLocalModule = async (localModule: ModuleInstance, query: WithMeta<QueryBoundWitness>) => {\n //console.log(`callLocalModule: ${query.$hash}`)\n const localModuleName = localModule.config.name ?? localModule.address\n const queryArchivist = await this.queriesArchivist()\n const responseArchivist = await this.responsesArchivist()\n const commandDestination = (query.$meta as { destination?: string[] })?.destination\n if (commandDestination && commandDestination?.includes(localModule.address)) {\n // Find the query\n const queryIndex = query.payload_hashes.indexOf(query.query)\n if (queryIndex !== -1) {\n const querySchema = query.payload_schemas[queryIndex]\n // If the destination can process this type of query\n if (localModule.queries.includes(querySchema)) {\n // Get the associated payloads\n const commandPayloads = await queryArchivist.get(query.payload_hashes)\n const commandPayloadsDict = await PayloadBuilder.toAllHashMap(commandPayloads)\n const commandHash = (await PayloadBuilder.build(query)).$hash\n // Check that we have all the arguments for the command\n if (!containsAll(Object.keys(commandPayloadsDict), query.payload_hashes)) {\n this.logger?.error(`Error processing command ${commandHash} for module ${localModuleName}, missing payloads`)\n return\n }\n try {\n // Issue the query against module\n const commandSchema = commandPayloadsDict[query.query].schema\n this.logger?.debug(`Issuing command ${commandSchema} (${commandHash}) addressed to module: ${localModuleName}`)\n const response = await localModule.query(query, commandPayloads)\n const [bw, payloads, errors] = response\n this.logger?.debug(`Replying to command ${commandHash} addressed to module: ${localModuleName}`)\n const insertResult = await responseArchivist.insert([bw, ...payloads, ...errors])\n // NOTE: If all archivists support the contract that numPayloads inserted === numPayloads returned we can\n // do some deeper assertions here like lenIn === lenOut, but for now this should be good enough since BWs\n // should always be unique causing at least one insertion\n if (insertResult.length === 0) {\n this.logger?.error(`Error replying to command ${commandHash} addressed to module: ${localModuleName}`)\n }\n if (query?.timestamp) {\n // TODO: This needs to be thought through as we can't use a distributed timestamp\n // because of collisions. We need to ensure we are using the timestamp of the store\n // so there's no chance of multiple commands at the same time\n await this.commitState(localModule.address, query.timestamp)\n }\n } catch (error) {\n this.logger?.error(`Error processing command ${commandHash} for module ${localModuleName}: ${error}`)\n }\n }\n }\n }\n }\n\n /**\n * Finds unprocessed commands addressed to the supplied address\n * @param address The address to find commands for\n */\n protected findQueriesToAddress = async (address: Address) => {\n const queryBoundWitnessDiviner = await this.queriesDiviner()\n // Retrieve last offset from state store\n const timestamp = await this.retrieveState(address)\n const destination = [address]\n const limit = this.perAddressBatchQueryLimit\n // Filter for commands to us by destination address\n const divinerQuery = { destination, limit, schema: BoundWitnessDivinerQuerySchema, sort: 'asc', timestamp }\n const result = await queryBoundWitnessDiviner.divine([divinerQuery])\n const queries = result.filter(isQueryBoundWitnessWithMeta)\n const nextState = queries.length > 0 ? Math.max(...queries.map((c) => c.timestamp ?? 0)) + 1 : timestamp\n // TODO: This needs to be thought through as we can't use a distributed timestamp\n // because of collisions. We need to use the timestamp of the store so there's no\n // chance of multiple commands at the same time\n await this.commitState(address, nextState)\n return queries\n }\n\n /**\n * Runs the background divine process on a loop with a delay\n * specified by the `config.pollFrequency`\n */\n private poll() {\n this._pollId = setTimeoutEx(async () => {\n try {\n await this.processIncomingQueries()\n } catch (e) {\n this.logger?.error?.(`Error in main loop: ${e}`)\n } finally {\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n this.poll()\n }\n }, this.pollFrequencyConfig)\n }\n\n /**\n * Background process for checking for inbound commands\n */\n private processIncomingQueries = async () => {\n this.logger?.debug('Checking for inbound commands')\n // Check for any queries that have been issued and have not been responded to\n const localModules = await this.listeningModules()\n\n // TODO: Do in throttled batches\n await Promise.allSettled(\n localModules.map(async (localModule) => {\n try {\n const localModuleName = localModule.config.name ?? localModule.address\n this.logger?.debug(`Checking for inbound commands to ${localModuleName}`)\n const queries = await this.findQueriesToAddress(localModule.address)\n if (queries.length === 0) return\n this.logger?.debug(`Found commands addressed to local module: ${localModuleName}`)\n for (const query of queries) {\n await this.callLocalModule(localModule, query)\n }\n } catch (error) {\n this.logger?.error(`Error processing commands for address ${localModule.address}: ${error}`)\n }\n }),\n )\n }\n}\n","import { Base, BaseParams } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport type ModuleHostParams<THostedInstance extends ModuleInstance = ModuleInstance> = BaseParams<{\n module: THostedInstance\n}>\n\nexport abstract class AbstractModuleHost<TParams extends ModuleHostParams = ModuleHostParams> extends Base<TParams> {\n abstract start(): Promisable<void>\n abstract stop(): Promisable<void>\n}\n","import { AbstractModuleHost, ModuleHostParams } from '../../AbstractModuleHost'\nimport { AsyncQueryBusHost } from '../AsyncQueryBusHost'\nimport { AsyncQueryBusHostConfig } from '../Config'\n\nexport type AsyncQueryBusModuleHostParams = ModuleHostParams & {\n config: AsyncQueryBusHostConfig\n}\n\nexport class AsyncQueryBusModuleHost extends AbstractModuleHost<AsyncQueryBusModuleHostParams> {\n private _busHost?: AsyncQueryBusHost\n\n constructor(params: AsyncQueryBusModuleHostParams) {\n super(params)\n }\n\n override async start(): Promise<void> {\n const listeningModules =\n this.params.config.listeningModules ?? (await this.params.module.resolve(undefined, { direction: 'down' })).map((m) => m.address)\n this._busHost = new AsyncQueryBusHost({\n config: { ...this.params.config, listeningModules },\n logger: this.params.logger,\n resolver: this.params.module,\n })\n this._busHost?.start()\n }\n override stop() {\n this._busHost?.stop()\n }\n}\n","import { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { Module, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { AbstractModuleProxy, ModuleProxyParams } from '../../AbstractModuleProxy'\nimport { AsyncQueryBusClient } from '../AsyncQueryBusClient'\n\nexport type AsyncQueryBusModuleProxyParams = ModuleProxyParams & {\n bridgeClient: AsyncQueryBusClient\n}\n\nexport class AsyncQueryBusModuleProxy<TWrappedModule extends Module = Module>\n extends AbstractModuleProxy<AsyncQueryBusModuleProxyParams, TWrappedModule>\n implements ModuleInstance<TWrappedModule['params'], TWrappedModule['eventData']>\n{\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.proxyParams.bridgeClient.send(this.address, query, payloads)\n }\n}\n","export const PubSubBridgeSchema = 'network.xyo.bridge.pubsub'\nexport type PubSubBridgeSchema = typeof PubSubBridgeSchema\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nimport { AsyncQueryBusClientConfig, AsyncQueryBusHostConfig } from './AsyncQueryBus'\nimport { PubSubBridgeSchema } from './Schema'\n\nexport const PubSubBridgeConfigSchema = `${PubSubBridgeSchema}.config`\nexport type PubSubBridgeConfigSchema = typeof PubSubBridgeConfigSchema\n\n/**\n * Configuration for the PubSubBridge\n */\nexport type PubSubBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: AsyncQueryBusClientConfig\n host?: AsyncQueryBusHostConfig\n } & TConfig,\n TSchema extends string ? TSchema : PubSubBridgeConfigSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule, CacheConfig } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport {\n creatableModule,\n ModuleConfig,\n ModuleEventData,\n ModuleManifestQuery,\n ModuleManifestQuerySchema,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType, Payload, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { AsyncQueryBusClient, AsyncQueryBusHost } from './AsyncQueryBus'\nimport { PubSubBridgeConfigSchema } from './Config'\nimport { PubSubBridgeParams } from './Params'\n\nconst moduleName = 'PubSubBridge'\n\n@creatableModule()\nexport class PubSubBridge<TParams extends PubSubBridgeParams = PubSubBridgeParams, TEventData extends ModuleEventData = ModuleEventData>\n extends AbstractBridge<TParams, TEventData>\n implements BridgeModule<TParams, TEventData>\n{\n static override configSchemas = [PubSubBridgeConfigSchema]\n\n protected _configRootAddress: Address = ''\n protected _configStateStoreArchivist: string = ''\n protected _configStateStoreBoundWitnessDiviner: string = ''\n protected _discoverCache?: LRUCache<string, Payload[]>\n protected _lastState?: LRUCache<string, number>\n protected _targetConfigs: Record<string, ModuleConfig> = {}\n protected _targetQueries: Record<string, string[]> = {}\n\n private _busClient?: AsyncQueryBusClient\n private _busHost?: AsyncQueryBusHost\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = this.config.discoverCache === true ? {} : this.config.discoverCache\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n protected get moduleName() {\n return `${this.config.name ?? moduleName}`\n }\n\n protected get rootAddress() {\n return this._configRootAddress\n }\n\n // protected get stateStoreArchivistConfig() {\n // return this._configStateStoreArchivist\n // }\n\n // protected get stateStoreBoundWitnessDivinerConfig() {\n // return this._configStateStoreBoundWitnessDiviner\n // }\n\n connect() {\n //await super.startHandler()\n this.connected = true\n return true\n // const rootTargetDownResolver = this.targetDownResolver()\n // if (rootTargetDownResolver) {\n // this.downResolver.addResolver(rootTargetDownResolver)\n // await this.targetDiscover(this.rootAddress)\n\n // const childAddresses = await rootTargetDownResolver.getRemoteAddresses()\n\n // const children = compact(\n // await Promise.all(\n // childAddresses.map(async (address) => {\n // const resolved = await rootTargetDownResolver.resolve({ address: [address] })\n // return resolved[0]\n // }),\n // ),\n // )\n\n // // Discover all to load cache\n // await Promise.all(children.map((child) => assertEx(child.discover())))\n\n // const parentNodes = await this.upResolver.resolve({ query: [[NodeAttachQuerySchema]] })\n // //notify parents of child modules\n // //TODO: this needs to be thought through. If this the correct direction for data flow and how do we 'un-attach'?\n // for (const node of parentNodes) for (const child of children) forget(node.emit('moduleAttached', { module: child }))\n // // console.log(`Started HTTP Bridge in ${Date.now() - start}ms`)\n // this.connected = true\n\n // return true\n // } else {\n // this.connected = false\n // return false\n // }\n }\n\n async disconnect(): Promise<boolean> {\n await Promise.resolve()\n this.connected = false\n return true\n }\n\n override getRootAddress(): Address {\n return this.rootAddress\n }\n\n override targetConfig(address: Address): ModuleConfig {\n return assertEx(this._targetConfigs[address], () => `targetConfig not set [${address}]`)\n }\n\n override async targetDiscover(address?: Address | undefined, _maxDepth?: number | undefined): Promise<Payload[]> {\n if (!this.connected) throw new Error('Not connected')\n //if caching, return cached result if exists\n const cachedResult = this.discoverCache?.get(address ?? 'root ')\n if (cachedResult) {\n return cachedResult\n }\n await this.started('throw')\n const addressToDiscover = address ?? (await this.getRootAddress())\n this.logger?.debug(`${this.moduleName}: Begin issuing targetDiscover to: ${addressToDiscover}`)\n // const queryPayload: ModuleDiscoverQuery = { maxDepth, schema: ModuleDiscoverQuerySchema }\n // const boundQuery = await this.bindQuery(queryPayload)\n // const discover = assertEx(await this.targetQuery(addressToDiscover, boundQuery[0], boundQuery[1]), () => `Unable to resolve [${address}]`)[1]\n // this._targetQueries[addressToDiscover] = compact(\n // discover?.map((payload) => {\n // if (payload.schema === QuerySchema) {\n // const schemaPayload = payload as QueryPayload\n // return schemaPayload.query\n // } else {\n // return null\n // }\n // }) ?? [],\n // )\n // const targetConfigSchema = assertEx(\n // discover.find(isPayloadOfSchemaType<WithMeta<ConfigPayload>>(ConfigSchema)),\n // () => `Discover did not return a [${ConfigSchema}] payload`,\n // ).config\n\n // this._targetConfigs[addressToDiscover] = assertEx(\n // discover.find(isPayloadOfSchemaType(targetConfigSchema)) as ModuleConfig,\n // () => `Discover did not return a [${targetConfigSchema}] payload`,\n // )\n // if caching, set entry\n // this.discoverCache?.set(address ?? 'root', discover)\n // return discover\n return []\n }\n\n override async targetManifest(address: Address, maxDepth?: number | undefined): Promise<ModuleManifestPayload> {\n const addressToCall = address ?? this.getRootAddress()\n const queryPayload: ModuleManifestQuery = { maxDepth, schema: ModuleManifestQuerySchema }\n const boundQuery = await this.bindQuery(queryPayload)\n const manifest = assertEx(await this.targetQuery(addressToCall, boundQuery[0], boundQuery[1]), () => `Unable to resolve [${address}]`)[1]\n return assertEx(\n manifest.find(isPayloadOfSchemaType<WithMeta<ModuleManifestPayload>>(ModuleManifestPayloadSchema)),\n 'Did not receive manifest',\n ) as ModuleManifestPayload\n }\n\n override targetQueries(address: Address): string[] {\n if (!this.connected) throw new Error('Not connected')\n return assertEx(this._targetQueries[address], () => `targetQueries not set [${address}]`)\n }\n\n override async targetQuery(address: Address, query: QueryBoundWitness, payloads?: Payload[] | undefined): Promise<ModuleQueryResult> {\n if (!this.connected) throw new Error('Not connected')\n await this.started('throw')\n const bus = this.busClient()\n return bus.send(address, query, payloads)\n }\n\n override targetQueryable(_address: Address, _query: QueryBoundWitness, _payloads?: Payload[], _queryConfig?: ModuleConfig): boolean {\n return true\n }\n\n protected busClient() {\n if (!this._busClient) {\n this._busClient = new AsyncQueryBusClient({\n config: this.config.client,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busClient\n }\n\n protected busHost() {\n if (!this._busHost) {\n this._busHost = new AsyncQueryBusHost({\n config: this.config.host,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busHost\n }\n\n protected override async startHandler(): Promise<boolean> {\n await Promise.resolve(this.connect())\n this.busHost().start()\n return true\n }\n\n protected override stopHandler(_timeout?: number | undefined) {\n this.busHost().stop()\n return true\n }\n}\n"],"mappings":";;;;;;;;;AAAA,SAASA,gBAAgB;AAEzB,SAASC,eAAe;AACxB,SAASC,YAAwB;AACjC,SAAqBC,iBAAiB;AAEtC,SAASC,gCAAgC;AAEzC,SAASC,2BAA2B;AAGpC,SAEEC,2BAGAC,0BACAC,oBAEAC,2BAGAC,2BAKAC,iCAGK;AACP,SAAsBC,yBAAmD;AAQlE,IAAeC,uBAAf,MAAeA,6BACZC,KAAAA;EAKRC,YAAY,CAAC;EAEMC;EAEnBC,YAAYC,QAAiB;AAC3B,UAAM;MAAEC,QAAQ;QAAEC,QAAQC;MAAmB;IAAE,CAAA;AAC/C,SAAKL,cAAcE;EACrB;EAEA,IAAII,UAAU;AACZ,WAAO,KAAKN,YAAYM;EAC1B;EAEA,IAAIC,UAAU;AACZ,WAAO,KAAKP,YAAYQ;EAC1B;EAEA,IAAIL,SAAS;AACX,WAAO,KAAKD,OAAOC;EACrB;EAEA,IAAIM,eAAuC;AACzC,UAAM,IAAIC,MAAM,aAAA;EAClB;EAEA,IAAIC,KAAK;AACP,WAAO,KAAKX,YAAYQ;EAC1B;EAEA,IAAII,UAAoB;AACtB,WAAO,KAAKZ,YAAYY;EAC1B;EAEA,IAAIC,aAAqC;AACvC,UAAM,IAAIH,MAAM,aAAA;EAClB;EAEA,OAAOI,mBAAmBC,QAAgB;AACxC,WAAO,KAAKC,uBAAuBD,MAAAA,EAAQE,WAAW;EACxD;EAEA,OAAOD,uBAAuBD,QAA0B;AACtD,UAAMG,gBAAgBH,OAAOH;AAC7B,WAAOO,QACL,KAAKC,gBAAgBC,IAAI,CAACC,UAAAA;AACxB,aAAOJ,cAAcK,SAASD,KAAAA,IAAS,OAAOA;IAChD,CAAA,CAAA;EAEJ;EAEA,MAAME,sBAA2D;AAC/D,UAAMC,eAAmC;MAAErB,QAAQsB;IAAyB;AAC5E,WAAOC,UACJ,MAAM,KAAKC,UAAUH,YAAAA,GAAeI,KAAK,CAACC,YAAYA,QAAQ1B,WAAW2B,yBAAAA,GAC1E,wCAAA;EAEJ;EAEAC,eAAeC,aAA8D;AAC3E,UAAM,IAAIvB,MAAM,aAAA;EAClB;;EAGA,MAAMwB,WAAuC;AAC3C,UAAMT,eAAoC;MAAErB,QAAQ+B;IAA0B;AAC9E,YAAQ,MAAM,KAAKP,UAAUH,YAAAA,GAAe,CAAA;EAC9C;EAEA,MAAMW,WAA+B;AACnC,UAAMX,eAAoC;MAAErB,QAAQiC;IAA0B;AAC9E,WAAO,MAAM,KAAKT,UAAUH,YAAAA;EAC9B;EAEAa,KAAKC,YAAmDC,YAAkE;AACxH,UAAM,IAAI9B,MAAM,aAAA;EAClB;EAEA+B,WAAWF,YAAyDC,YAAwE;AAC1I,UAAM,IAAI9B,MAAM,aAAA;EAClB;EAEAgC,cAAcT,aAAqE;AACjF,UAAM,IAAIvB,MAAM,aAAA;EAClB;EAEA,MAAMiC,SAASC,UAAmD;AAChE,UAAMnB,eAAoC;MAAErB,QAAQyC;MAA2B,GAAID,aAAaE,SAAY,CAAC,IAAI;QAAEF;MAAS;IAAG;AAC/H,YAAQ,MAAM,KAAKhB,UAAUH,YAAAA,GAAe,CAAA;EAC9C;EAEA,MAAMjB,gBAAuD;AAC3D,UAAMiB,eAAmC;MAAErB,QAAQsB;IAAyB;AAC5E,WAAQ,MAAM,KAAKE,UAAUH,YAAAA;EAC/B;EAEAsB,IACEd,aACAe,WACA;AACA,UAAM,IAAItC,MAAM,aAAA;EAClB;EAEAuC,OAAOD,WAA6B;AAClC,UAAM,IAAItC,MAAM,aAAA;EAClB;EAEAwC,GACEjB,aACAe,WAC0B;AAC1B,UAAM,IAAItC,MAAM,aAAA;EAClB;EAEAyC,MAAMH,WAAuD;AAC3D,UAAM,IAAItC,MAAM,aAAA;EAClB;EAEA0C,KACEb,YACAS,WAC0B;AAC1B,UAAM,IAAItC,MAAM,aAAA;EAClB;EAEA,MAAM2C,eAA4C;AAChD,UAAM5B,eAAmC;MAAErB,QAAQsB;IAAyB;AAC5E,YAAS,MAAM,KAAKE,UAAUH,YAAAA,GAAe6B,IAAG,EAA4CD;EAC9F;EAEAE,UAA2DC,QAAWC,WAAuB;AAC3F,WAAO;EACT;EAIAC,QAAQC,uBAA+CC,UAA2F;AAChJ,WAAO,OAAOD,0BAA0B,WAAWb,SAAY,CAAA;EACjE;EAEAe,QAAQ;AACN,WAAO,CAAA;EACT;EAEUC,UACRxC,OACAyC,UACAzD,UAAuC,KAAKA,SAC+B;AAE3E,UAAM0D,UAAU,IAAIC,UAA0E,OAAOP,YAAAA;AACnG,YAAMQ,SAAS,MAAM,KAAKC,kBAAkB7C,OAAOyC,UAAUzD,OAAAA;AAC7DoD,yCAAUQ;AACV,aAAOA;IACT,GAAG5D,OAAAA;AACH,WAAO0D;EACT;EAEA,MAAgBG,kBACd7C,OACAyC,UACAzD,UAAuC,KAAKA,SACY;AACxD,UAAM8D,UAAU,MAAM,IAAIC,yBAAAA,EAA2BN,SAASA,QAAAA,EAAUzC,MAAMA,KAAAA;AAC9E,UAAM4C,SAAS,OAAO5D,UAAU8D,QAAQE,QAAQhE,OAAAA,IAAW8D,SAASG,MAAK;AACzE,WAAOL;EACT;EAEA,MAAgBM,aAAaN,QAAmD;AAC9E,UAAMO,UAAU,MAAMC,oBAAoBC,KAAKT,OAAO,CAAA,GAAIA,OAAO,CAAA,CAAE;AACnE,WAAOO,QAAQG,iBAAwCC,iBAAAA;EACzD;EAEA,MAAgBjD,UACdH,cACAsC,UACwB;AAExB,UAAMzC,QAAQ,MAAM,KAAKwC,UAAUrC,cAAcsC,QAAAA;AAGjD,UAAM,CAAA,EAAGe,gBAAgBC,MAAAA,IAAU,MAAM,KAAKzD,MAAMA,MAAM,CAAA,GAAIA,MAAM,CAAA,CAAE;AAItE,QAAIyD,UAAUA,OAAO9D,SAAS,GAAG;AAE/B,YAAM8D,OAAO,CAAA;IACf;AAEA,WAAOD;EACT;AAGF;AAtMUhF;AAGR,cAJoBD,sBAIbuB,mBAA4B;EAACiB;;AAJ/B,IAAexC,sBAAf;;;ACvCP,SAASmF,aAAa;AACtB,SAASC,cAAc;AAEvB,SAASC,gBAAgBC,oBAAoB;AAC7C,SAASC,8BAAiD;AAE1D,SAA0CC,sCAAsC;AAEhF,SAASC,sBAAsB;AAE/B,SAASC,YAAAA,iBAAgB;;;ACVzB,SAASC,YAAAA,iBAAgB;AAEzB,SAASC,QAAAA,aAAY;AACrB,SAASC,2BAA2B;AAGpC,SAASC,yBAA0C;AAEnD,SAASC,gBAAgB;AAIlB,IAAMC,qBAAN,MAAMA,2BAAqFC,MAAAA;EACtFC;EACAC,iBAAgD,CAAC;EACjDC,iBAA4C,CAAC;EAEvDC,YAAYC,QAAiB;AAC3B,UAAMA,MAAAA;EACR;EAEA,IAAIC,SAA4B;AAC9B,WAAO,KAAKD,OAAOC;EACrB;EAEA,IAAIC,sBAA8B;AAzBpC;AA0BI,aAAO,UAAKD,WAAL,mBAAaE,kBAAiB;EACvC;EAEA,IAAIC,WAAW;AACb,WAAO,KAAKJ,OAAOI;EACrB;;;;EAKA,IAAcC,YAAuC;AACnD,UAAMC,iBAAiB;MAAEC,KAAK;MAAMC,KAAK;IAAE;AAC3C,SAAKZ,aAAa,KAAKA,cAAc,IAAIa,SAA0BH,cAAAA;AACnE,WAAO,KAAKV;EACd;EAEA,MAAMc,mBAAmB;AA1C3B;AA2CI,WAAOC,UACLC,oBAAoB,MAAM,KAAKR,SAASS,SAAQ,sBAAKZ,WAAL,mBAAaa,kBAAb,mBAA4BC,YAA5B,mBAAqCC,SAAAA,CAAAA,GACrF,MAAA;AA7CN,UAAAC,KAAAC,KAAAC;AA6CY,qDAAuCA,OAAAD,OAAAD,MAAA,KAAKhB,WAAL,gBAAAgB,IAAaH,kBAAb,gBAAAI,IAA4BH,YAA5B,gBAAAI,IAAqCH,SAAAA;KAAY;EAElG;EAEA,MAAMI,iBAAiB;AAjDzB;AAkDI,WAAOT,UACLU,kBAAkB,MAAM,KAAKjB,SAASS,SAAQ,sBAAKZ,WAAL,mBAAaa,kBAAb,mBAA4BC,YAA5B,mBAAqCO,mBAAAA,CAAAA,GACnF,MAAA;AApDN,UAAAL,KAAAC,KAAAC;AAoDY,mDAAqCA,OAAAD,OAAAD,MAAA,KAAKhB,WAAL,gBAAAgB,IAAaH,kBAAb,gBAAAI,IAA4BH,YAA5B,gBAAAI,IAAqCG,mBAAAA;KAAsB;EAE1G;EAEA,MAAMC,qBAAqB;AAxD7B;AAyDI,WAAOZ,UACLC,oBAAoB,MAAM,KAAKR,SAASS,SAAQ,sBAAKZ,WAAL,mBAAaa,kBAAb,mBAA4BU,cAA5B,mBAAuCR,SAAAA,CAAAA,GACvF,MAAA;AA3DN,UAAAC,KAAAC,KAAAC;AA2DY,uDAAyCA,OAAAD,OAAAD,MAAA,KAAKhB,WAAL,gBAAAgB,IAAaH,kBAAb,gBAAAI,IAA4BM,cAA5B,gBAAAL,IAAuCH,SAAAA;KAAY;EAEtG;EAEA,MAAMS,mBAAmB;AA/D3B;AAgEI,WAAOd,UACLU,kBAAkB,MAAM,KAAKjB,SAASS,SAAQ,sBAAKZ,WAAL,mBAAaa,kBAAb,mBAA4BU,cAA5B,mBAAuCF,mBAAAA,CAAAA,GACrF,MAAA;AAlEN,UAAAL,KAAAC,KAAAC;AAkEY,qDAAuCA,OAAAD,OAAAD,MAAA,KAAKhB,WAAL,gBAAAgB,IAAaH,kBAAb,gBAAAI,IAA4BM,cAA5B,gBAAAL,IAAuCG,mBAAAA;KAAsB;EAE9G;;;;;;;;;EAUA,MAAgBI,YAAYC,SAAkBC,WAAmB;AAC/D,UAAMC,QAAQhB,QAAO;AAErB,UAAMR,YAAY,KAAKA,UAAUyB,IAAIH,OAAAA;AACrC,QAAItB,aAAaA,aAAauB;AAAW;AACzC,SAAKvB,UAAU0B,IAAIJ,SAASC,SAAAA;EAC9B;;;;;EAMA,MAAgBI,cAAcL,SAAmC;AAC/D,UAAME,QAAQhB,QAAO;AACrB,UAAMoB,QAAQ,KAAK5B,UAAUyB,IAAIH,OAAAA;AACjC,QAAIM,UAAUC,QAAW;AAGvB,YAAMC,WAAWC,KAAKC,IAAG,IAAK;AAC9B,WAAKhC,UAAU0B,IAAIJ,SAASQ,QAAAA;AAC5B,aAAOA;IACT,OAAO;AACL,aAAOF;IACT;EACF;AACF;AA3FkGtC;AAA3F,IAAMD,oBAAN;;;ACTA,IAAM4C,UAAU;;;AFahB,IAAMC,uBAAN,MAAMA,6BAAmGC,kBAAAA;EACpGC;EACFC,aAAa;EACbC;EAERC,YAAYC,QAAiB;AAC3B,UAAMA,MAAAA;EACR;EAEA,IAAIC,mBAAoF;AAzB1F;AA0BI,UAAMA,qBAA4C,UAAKC,WAAL,mBAAaC,gBAAe,OAAO,CAAC,KAAI,UAAKD,WAAL,mBAAaC;AACvG,WAAO;MAAEC,KAAK;MAAKC,KAAK,MAAO;MAAI,GAAGJ;IAAiB;EACzD;EAEA,IAAIK,UAAU;AACZ,WAAO,CAAC,CAAC,KAAKR;EAChB;;;;EAKA,IAAcK,aAA6D;AACzE,UAAMD,SAAS,KAAKD;AACpB,UAAMM,iBAAiB;MAAEC,aAAa;MAAOC,cAAc;IAAK;AAChE,SAAKb,cAAc,KAAKA,eAAe,IAAIc,UAA+C;MAAE,GAAGR;MAAQ,GAAGK;IAAe,CAAA;AACzH,WAAO,KAAKX;EACd;EAEAe,qBAAqB;AA5CvB;AA6CI,YAAO,UAAKf,gBAAL,mBAAkBgB;EAC3B;EAEA,MAAMC,KAAKC,SAAkBC,OAA0BC,UAA8D;AAhDvH;AAiDI,eAAKC,WAAL,mBAAaC,MAAM,2BAA2BJ,OAAAA;AAC9C,UAAMK,QAAQ;MAAE,GAAGJ,+BAAOI;MAAOC,aAAa;QAACN;;IAAS;AACxD,UAAMO,cAAc,MAAMC,eAAeC,MAAM;MAAE,GAAGR;MAAOI;IAAM,CAAA;AACjE,UAAMK,iBAAiB,MAAM,KAAKC,iBAAgB;AAQlD,UAAMC;;OAEHL,2CAA6CM;MAE9CC,OAAOhB,KAAK,MAAMU,eAAeO,cAAc;QAACR;OAAY,CAAA,EAAG,CAAA;;AACjE,eAAKJ,WAAL,mBAAaC,MAAM,kBAAkBQ,eAAAA,QAAuBZ,OAAAA;AAE5D,UAAMgB,OAAOd,WAAW;MAACK;SAAgBL;QAAY;MAACK;;AACtD,UAAMU,eAAe,QAAMP,oBAAeQ,WAAfR,wCAAwBM;AACnD,eAAKb,WAAL,mBAAaC,MAAM,iBAAiBQ,eAAAA,QAAuBZ,OAAAA;AAC3D,SAAKX,WAAW8B,IAAIP,iBAAiBQ,OAAAA;AACrC,QAAI,CAACH;AAAc,YAAM,IAAII,MAAM,yCAAA;AACnC,UAAMC,UAAU,IAAIC,QAA2B,CAACC,YAAAA;AAxEpD,UAAAC;AAyEM,OAAAA,MAAA,KAAKtB,WAAL,gBAAAsB,IAAarB,MAAM,kCAAkCQ,eAAAA;AACrD,YAAMc,kBAAkB,mCAAA;AA1E9B,YAAAD,KAAAE;AA2EQ,YAAI;AACF,eAAKC,MAAK;AACV,cAAIC,WAAW,KAAKxC,WAAWyC,IAAIlB,eAAAA;AAEnC,iBAAOiB,aAAaE,QAAW;AAE7B,kBAAMC,MAAM,GAAA;AAEZH,uBAAW,KAAKxC,WAAWyC,IAAIlB,eAAAA;AAE/B,gBAAIiB,YAAYA,aAAaT,SAAS;AACpC,eAAAK,MAAA,KAAKtB,WAAL,gBAAAsB,IAAarB,MAAM,gCAAgCQ,eAAAA;AACnDY,sBAAQK,QAAAA;AACR;YACF;UACF;AAEA,WAAAF,MAAA,KAAKxB,WAAL,gBAAAwB,IAAaM,MAAM;AAGnB,gBAAMA,QAAqB;YACzBC,SAAS;YACTjC,OAAO;YACPkC,QAAQ;YACRC,SAAS;cAACxB;;UACZ;AACAY,kBAAQ;YAACjB;YAAa,CAAA;YAAI;cAAC,MAAMC,eAAeC,MAAMwB,KAAAA;;WAAQ;AAC9D;QACF,UAAA;AACE,eAAKI,KAAI;QACX;MACF,GAhCwB;AAiCxBC,aAAOZ,gBAAAA,CAAAA;IACT,CAAA;AACA,WAAOJ;EACT;;;;;EAMQiB,OAAO;AACb,SAAKvD,UAAUwD,aAAa,YAAA;AArHhC;AAsHM,UAAI;AACF,cAAM,KAAKC,yBAAwB;MACrC,SAASC,GAAG;AACV,yBAAKvC,WAAL,mBAAa8B,UAAb,4BAAqB,uBAAuBS,CAAAA;MAC9C,UAAA;AACE,YAAI,KAAK1D;AAAS2D,yBAAe,KAAK3D,OAAO;AAC7C,aAAKA,UAAU+C;AACf,aAAKQ,KAAI;MACX;IACF,GAAG,KAAKK,mBAAmB;EAC7B;;;;EAKQH,2BAA2B,YAAA;AACjC,UAAMI,oBAAoB,MAAM,KAAKC,mBAAkB;AACvD,UAAMC,8BAA8B,MAAM,KAAKC,iBAAgB;AAC/D,UAAMC,kBAAkB;SAAI,KAAK5D,WAAW6D,QAAO;MAAIC,OAAO,CAAC,CAACC,GAAGC,MAAAA,MAAYA,WAAWjC,OAAAA;AAE1F,UAAMG,QAAQ+B,WACZL,gBAAgBM,IAAI,OAAO,CAACC,aAAaH,MAAAA,MAAO;AA3ItD;AA4IQ,UAAIA,WAAWjC,SAAS;AACtB,cAAMqC,eAAgD;UAAEtB,QAAQuB;UAAgCF;QAAY;AAC5G,cAAMG,SAAS,MAAMZ,4BAA4Ba,OAAO;UAACH;SAAa;AACtE,YAAIE,UAAUA,OAAOE,SAAS,GAAG;AAC/B,gBAAMhC,WAAW8B,OAAOG,KAAKC,sBAAAA;AAC7B,cAAIlC,cAAaA,0CAAUxB,UAAVwB,mBAAwD2B,iBAAgBA,aAAa;AACpG,uBAAKrD,WAAL,mBAAaC,MAAM,4BAA4BoD,WAAAA;AAE/C,kBAAMtD,aAA8B2B,cAASmC,mBAATnC,mBAAyBgC,UAAS,IAAI,MAAMhB,kBAAkBf,IAAID,SAASmC,cAAc,IAAI,CAAA;AACjI,iBAAK3E,WAAW8B,IAAIqC,aAAa;cAAC3B;cAAU3B;cAAU,CAAA;aAAG;UAC3D;QACF;MACF;IACF,CAAA,CAAA;EAEJ;EAEQ0B,QAAQ;AACd,QAAI,KAAK7C,eAAe,GAAG;AACzB,WAAKwD,KAAI;IACX;AACA,SAAKxD;EACP;EAEQsD,OAAO;AACb,SAAKtD;AACL,QAAI,KAAKA,cAAc,GAAG;AACxB,UAAI,KAAKC;AAAS2D,uBAAe,KAAK3D,OAAO;AAC7C,WAAKA,UAAU+C;AACf,WAAKhD,aAAa;IACpB;EACF;AACF;AA5JgHF;AAAzG,IAAMD,sBAAN;;;AGhBP,SAASqF,mBAAmB;AAC5B,SAASC,YAAAA,iBAAgB;AAEzB,SAASC,kBAAAA,iBAAgBC,gBAAAA,qBAAoB;AAC7C,SAASC,mCAAsD;AAC/D,SAASC,kCAAAA,uCAAsC;AAC/C,SAASC,wBAAwC;AACjD,SAASC,kBAAAA,uBAAsB;AAMxB,IAAMC,qBAAN,MAAMA,2BAA6FC,kBAAAA;EAChGC;EAERC,YAAYC,QAAiB;AAC3B,UAAMA,MAAAA;EACR;EAEA,IAAIC,4BAAoC;AApB1C;AAqBI,aAAO,UAAKC,WAAL,mBAAaD,8BAA6B;EACnD;EAEA,IAAIE,UAAU;AACZ,WAAO,CAAC,CAAC,KAAKL;EAChB;EAEA,MAAMM,mBAA8C;AA5BtD;AA6BI,UAAMC,SACJ,UAAKH,WAAL,mBAAaE,oBACX,MAAME,QAAQC,IACZ,KAAKL,OAAOE,iBAAiBI,IAAI,OAAOC,oBACtCC,UAASC,iBAAiB,MAAM,KAAKC,SAASC,QAAQJ,eAAAA,CAAAA,GAAmB,MAAM,sCAAsCA,eAAAA,GAAkB,CAAA,CAAA,IAG3I,MAAM,KAAKG,SAASC,QAAQC,QAAW;MAAEC,WAAW;IAAO,CAAA;AAC/D,WAAOV;EACT;EAEAW,QAAQ;AACN,QAAI,KAAKb,SAAS;AAChBc,cAAQC,KAAK,6CAAA;IACf;AACA,SAAKC,KAAI;EACX;EAEAC,OAAO;AACL,QAAI,CAAC,KAAKjB,SAAS;AACjBc,cAAQC,KAAK,6CAAA;IACf;AACA,QAAI,KAAKpB;AAASuB,MAAAA,gBAAe,KAAKvB,OAAO;AAC7C,SAAKA,UAAUgB;EACjB;EAEUQ,kBAAkB,OAAOC,aAA6BC,UAAAA;AAvDlE;AAyDI,UAAMC,kBAAkBF,YAAYrB,OAAOwB,QAAQH,YAAYI;AAC/D,UAAMC,iBAAiB,MAAM,KAAKC,iBAAgB;AAClD,UAAMC,oBAAoB,MAAM,KAAKC,mBAAkB;AACvD,UAAMC,sBAAsBR,WAAMS,UAANT,mBAA4CU;AACxE,QAAIF,uBAAsBA,yDAAoBG,SAASZ,YAAYI,WAAU;AAE3E,YAAMS,aAAaZ,MAAMa,eAAeC,QAAQd,MAAMA,KAAK;AAC3D,UAAIY,eAAe,IAAI;AACrB,cAAMG,cAAcf,MAAMgB,gBAAgBJ,UAAAA;AAE1C,YAAIb,YAAYkB,QAAQN,SAASI,WAAAA,GAAc;AAE7C,gBAAMG,kBAAkB,MAAMd,eAAee,IAAInB,MAAMa,cAAc;AACrE,gBAAMO,sBAAsB,MAAMC,gBAAeC,aAAaJ,eAAAA;AAC9D,gBAAMK,eAAe,MAAMF,gBAAeG,MAAMxB,KAAAA,GAAQyB;AAExD,cAAI,CAACC,YAAYC,OAAOC,KAAKR,mBAAAA,GAAsBpB,MAAMa,cAAc,GAAG;AACxE,uBAAKgB,WAAL,mBAAaC,MAAM,4BAA4BP,WAAAA,eAA0BtB,eAAAA;AACzE;UACF;AACA,cAAI;AAEF,kBAAM8B,gBAAgBX,oBAAoBpB,MAAMA,KAAK,EAAEgC;AACvD,uBAAKH,WAAL,mBAAaI,MAAM,mBAAmBF,aAAAA,KAAkBR,WAAAA,0BAAqCtB,eAAAA;AAC7F,kBAAMiC,WAAW,MAAMnC,YAAYC,MAAMA,OAAOkB,eAAAA;AAChD,kBAAM,CAACiB,IAAIC,UAAUC,MAAAA,IAAUH;AAC/B,uBAAKL,WAAL,mBAAaI,MAAM,uBAAuBV,WAAAA,yBAAoCtB,eAAAA;AAC9E,kBAAMqC,eAAe,MAAMhC,kBAAkBiC,OAAO;cAACJ;iBAAOC;iBAAaC;aAAO;AAIhF,gBAAIC,aAAaE,WAAW,GAAG;AAC7B,yBAAKX,WAAL,mBAAaC,MAAM,6BAA6BP,WAAAA,yBAAoCtB,eAAAA;YACtF;AACA,gBAAID,+BAAOyC,WAAW;AAIpB,oBAAM,KAAKC,YAAY3C,YAAYI,SAASH,MAAMyC,SAAS;YAC7D;UACF,SAASX,OAAO;AACd,uBAAKD,WAAL,mBAAaC,MAAM,4BAA4BP,WAAAA,eAA0BtB,eAAAA,KAAoB6B,KAAAA;UAC/F;QACF;MACF;IACF;EACF;;;;;EAMUa,uBAAuB,OAAOxC,YAAAA;AACtC,UAAMyC,2BAA2B,MAAM,KAAKC,eAAc;AAE1D,UAAMJ,YAAY,MAAM,KAAKK,cAAc3C,OAAAA;AAC3C,UAAMO,cAAc;MAACP;;AACrB,UAAM4C,QAAQ,KAAKtE;AAEnB,UAAMuE,eAAe;MAAEtC;MAAaqC;MAAOf,QAAQiB;MAAgCC,MAAM;MAAOT;IAAU;AAC1G,UAAMU,SAAS,MAAMP,yBAAyBQ,OAAO;MAACJ;KAAa;AACnE,UAAM/B,UAAUkC,OAAOE,OAAOC,2BAAAA;AAC9B,UAAMC,YAAYtC,QAAQuB,SAAS,IAAIgB,KAAKC,IAAG,GAAIxC,QAAQjC,IAAI,CAAC0E,MAAMA,EAAEjB,aAAa,CAAA,CAAA,IAAM,IAAIA;AAI/F,UAAM,KAAKC,YAAYvC,SAASoD,SAAAA;AAChC,WAAOtC;EACT;;;;;EAMQtB,OAAO;AACb,SAAKrB,UAAUqF,cAAa,YAAA;AApIhC;AAqIM,UAAI;AACF,cAAM,KAAKC,uBAAsB;MACnC,SAASC,GAAG;AACV,yBAAKhC,WAAL,mBAAaC,UAAb,4BAAqB,uBAAuB+B,CAAAA;MAC9C,UAAA;AACE,YAAI,KAAKvF;AAASuB,UAAAA,gBAAe,KAAKvB,OAAO;AAC7C,aAAKA,UAAUgB;AACf,aAAKK,KAAI;MACX;IACF,GAAG,KAAKmE,mBAAmB;EAC7B;;;;EAKQF,yBAAyB,YAAA;AApJnC;AAqJI,eAAK/B,WAAL,mBAAaI,MAAM;AAEnB,UAAM8B,eAAe,MAAM,KAAKnF,iBAAgB;AAGhD,UAAME,QAAQkF,WACZD,aAAa/E,IAAI,OAAOe,gBAAAA;AA3J9B,UAAAkE,KAAA;AA4JQ,UAAI;AACF,cAAMhE,kBAAkBF,YAAYrB,OAAOwB,QAAQH,YAAYI;AAC/D,SAAA8D,MAAA,KAAKpC,WAAL,gBAAAoC,IAAahC,MAAM,oCAAoChC,eAAAA;AACvD,cAAMgB,UAAU,MAAM,KAAK0B,qBAAqB5C,YAAYI,OAAO;AACnE,YAAIc,QAAQuB,WAAW;AAAG;AAC1B,mBAAKX,WAAL,mBAAaI,MAAM,6CAA6ChC,eAAAA;AAChE,mBAAWD,SAASiB,SAAS;AAC3B,gBAAM,KAAKnB,gBAAgBC,aAAaC,KAAAA;QAC1C;MACF,SAAS8B,OAAO;AACd,mBAAKD,WAAL,mBAAaC,MAAM,yCAAyC/B,YAAYI,OAAO,KAAK2B,KAAAA;MACtF;IACF,CAAA,CAAA;EAEJ;AACF;AA9J0GzD;AAAnG,IAAMD,oBAAN;;;ACbP,SAAS8F,QAAAA,aAAwB;AAQ1B,IAAeC,sBAAf,MAAeA,4BAAgFC,MAAAA;AAGtG;AAHsGA;AAA/F,IAAeD,qBAAf;;;ACAA,IAAME,2BAAN,MAAMA,iCAAgCC,mBAAAA;EACnCC;EAERC,YAAYC,QAAuC;AACjD,UAAMA,MAAAA;EACR;EAEA,MAAeC,QAAuB;AAfxC;AAgBI,UAAMC,mBACJ,KAAKF,OAAOG,OAAOD,qBAAqB,MAAM,KAAKF,OAAOI,OAAOC,QAAQC,QAAW;MAAEC,WAAW;IAAO,CAAA,GAAIC,IAAI,CAACC,MAAMA,EAAEC,OAAO;AAClI,SAAKZ,WAAW,IAAIa,kBAAkB;MACpCR,QAAQ;QAAE,GAAG,KAAKH,OAAOG;QAAQD;MAAiB;MAClDU,QAAQ,KAAKZ,OAAOY;MACpBC,UAAU,KAAKb,OAAOI;IACxB,CAAA;AACA,eAAKN,aAAL,mBAAeG;EACjB;EACSa,OAAO;AAzBlB;AA0BI,eAAKhB,aAAL,mBAAegB;EACjB;AACF;AApB6CjB;AAAtC,IAAMD,0BAAN;;;ACGA,IAAMmB,4BAAN,MAAMA,kCACHC,oBAAAA;EAGR,MAAMC,MAAuDA,OAAUC,UAAkD;AACvH,WAAO,MAAM,KAAKC,YAAYC,aAAaC,KAAK,KAAKC,SAASL,OAAOC,QAAAA;EACvE;AACF;AANUF;AADH,IAAMD,2BAAN;;;ACXA,IAAMQ,qBAAqB;;;ACM3B,IAAMC,2BAA2B,GAAGC,kBAAAA;;;ACN3C,SAASC,YAAAA,iBAAgB;AAEzB,SAASC,sBAAsB;AAG/B,SAAgCC,mCAAmC;AACnE,SACEC,iBAIAC,6BAAAA,kCAEK;AACP,SAASC,6BAAgD;AACzD,SAASC,YAAAA,iBAAgB;;;;;;;;;;;;AAMzB,IAAMC,aAAa;AAGZ,IAAMC,gBAAN,MAAMA,sBACHC,eAAAA;EAKEC,qBAA8B;EAC9BC,6BAAqC;EACrCC,uCAA+C;EAC/CC;EACAC;EACAC,iBAA+C,CAAC;EAChDC,iBAA2C,CAAC;EAE9CC;EACAC;EAER,IAAIC,gBAAgB;AAClB,UAAMC,SAAS,KAAKC;AACpB,SAAKR,iBAAiB,KAAKA,kBAAkB,IAAIS,UAA4B;MAAEC,cAAc;MAAM,GAAGH;IAAO,CAAA;AAC7G,WAAO,KAAKP;EACd;EAEA,IAAIQ,sBAAoE;AACtE,UAAMA,sBAA+C,KAAKD,OAAOD,kBAAkB,OAAO,CAAC,IAAI,KAAKC,OAAOD;AAC3G,WAAO;MAAEK,KAAK;MAAKC,KAAK,MAAO,KAAK;MAAG,GAAGJ;IAAoB;EAChE;EAEA,IAAcd,aAAa;AACzB,WAAO,GAAG,KAAKa,OAAOM,QAAQnB,UAAAA;EAChC;EAEA,IAAcoB,cAAc;AAC1B,WAAO,KAAKjB;EACd;;;;;;;EAUAkB,UAAU;AAER,SAAKC,YAAY;AACjB,WAAO;EAgCT;EAEA,MAAMC,aAA+B;AACnC,UAAMC,QAAQC,QAAO;AACrB,SAAKH,YAAY;AACjB,WAAO;EACT;EAESI,iBAA0B;AACjC,WAAO,KAAKN;EACd;EAESO,aAAaC,SAAgC;AACpD,WAAOC,UAAS,KAAKrB,eAAeoB,OAAAA,GAAU,MAAM,yBAAyBA,OAAAA,GAAU;EACzF;EAEA,MAAeE,eAAeF,SAA+BG,WAAoD;;AAC/G,QAAI,CAAC,KAAKT;AAAW,YAAM,IAAIU,MAAM,eAAA;AAErC,UAAMC,gBAAe,UAAKrB,kBAAL,mBAAoBsB,IAAIN,WAAW;AACxD,QAAIK,cAAc;AAChB,aAAOA;IACT;AACA,UAAM,KAAKE,QAAQ,OAAA;AACnB,UAAMC,oBAAoBR,WAAY,MAAM,KAAKF,eAAc;AAC/D,eAAKW,WAAL,mBAAaC,MAAM,GAAG,KAAKtC,UAAU,sCAAsCoC,iBAAAA;AA0B3E,WAAO,CAAA;EACT;EAEA,MAAeG,eAAeX,SAAkBY,UAA+D;AAC7G,UAAMC,gBAAgBb,WAAW,KAAKF,eAAc;AACpD,UAAMgB,eAAoC;MAAEF;MAAUG,QAAQC;IAA0B;AACxF,UAAMC,aAAa,MAAM,KAAKC,UAAUJ,YAAAA;AACxC,UAAMK,WAAWlB,UAAS,MAAM,KAAKmB,YAAYP,eAAeI,WAAW,CAAA,GAAIA,WAAW,CAAA,CAAE,GAAG,MAAM,sBAAsBjB,OAAAA,GAAU,EAAE,CAAA;AACvI,WAAOC,UACLkB,SAASE,KAAKC,sBAAuDC,2BAAAA,CAAAA,GACrE,0BAAA;EAEJ;EAESC,cAAcxB,SAA4B;AACjD,QAAI,CAAC,KAAKN;AAAW,YAAM,IAAIU,MAAM,eAAA;AACrC,WAAOH,UAAS,KAAKpB,eAAemB,OAAAA,GAAU,MAAM,0BAA0BA,OAAAA,GAAU;EAC1F;EAEA,MAAeoB,YAAYpB,SAAkByB,OAA0BC,UAA8D;AACnI,QAAI,CAAC,KAAKhC;AAAW,YAAM,IAAIU,MAAM,eAAA;AACrC,UAAM,KAAKG,QAAQ,OAAA;AACnB,UAAMoB,MAAM,KAAKC,UAAS;AAC1B,WAAOD,IAAIE,KAAK7B,SAASyB,OAAOC,QAAAA;EAClC;EAESI,gBAAgBC,UAAmBC,QAA2BC,WAAuBC,cAAsC;AAClI,WAAO;EACT;EAEUN,YAAY;AACpB,QAAI,CAAC,KAAK9C,YAAY;AACpB,WAAKA,aAAa,IAAIqD,oBAAoB;QACxClD,QAAQ,KAAKA,OAAOmD;QACpB3B,QAAQ,KAAKA;QACb4B,UAAU;MACZ,CAAA;IACF;AACA,WAAO,KAAKvD;EACd;EAEUwD,UAAU;AAClB,QAAI,CAAC,KAAKvD,UAAU;AAClB,WAAKA,WAAW,IAAIwD,kBAAkB;QACpCtD,QAAQ,KAAKA,OAAOuD;QACpB/B,QAAQ,KAAKA;QACb4B,UAAU;MACZ,CAAA;IACF;AACA,WAAO,KAAKtD;EACd;EAEA,MAAyB0D,eAAiC;AACxD,UAAM7C,QAAQC,QAAQ,KAAKJ,QAAO,CAAA;AAClC,SAAK6C,QAAO,EAAGI,MAAK;AACpB,WAAO;EACT;EAEmBC,YAAYC,UAA+B;AAC5D,SAAKN,QAAO,EAAGO,KAAI;AACnB,WAAO;EACT;AACF;AA/LUvE;AAGR,cAJWD,eAIKyE,iBAAgB;EAACC;;AAJ5B,IAAM1E,eAAN;AAAMA,eAAAA,aAAAA;EADZ2E,gBAAAA;GACY3E,YAAAA;","names":["assertEx","compact","Base","PromiseEx","QueryBoundWitnessBuilder","BoundWitnessWrapper","AddressPreviousHashSchema","ModuleAddressQuerySchema","ModuleConfigSchema","ModuleDescribeQuerySchema","ModuleDiscoverQuerySchema","ModuleManifestQuerySchema","ModuleErrorSchema","AbstractModuleProxy","Base","eventData","proxyParams","constructor","params","config","schema","ModuleConfigSchema","account","address","moduleAddress","downResolver","Error","id","queries","upResolver","hasRequiredQueries","module","missingRequiredQueries","length","moduleQueries","compact","requiredQueries","map","query","includes","addressPreviousHash","queryPayload","ModuleAddressQuerySchema","assertEx","sendQuery","find","payload","AddressPreviousHashSchema","clearListeners","_eventNames","describe","ModuleDescribeQuerySchema","discover","ModuleDiscoverQuerySchema","emit","_eventName","_eventArgs","emitSerial","listenerCount","manifest","maxDepth","ModuleManifestQuerySchema","undefined","off","_listener","offAny","on","onAny","once","previousHash","pop","queryable","_query","_payloads","resolve","nameOrAddressOrFilter","_options","state","bindQuery","payloads","promise","PromiseEx","result","bindQueryInternal","builder","QueryBoundWitnessBuilder","witness","build","filterErrors","wrapper","BoundWitnessWrapper","wrap","payloadsBySchema","ModuleErrorSchema","resultPayloads","errors","delay","forget","clearTimeoutEx","setTimeoutEx","isBoundWitnessWithMeta","BoundWitnessDivinerQuerySchema","PayloadBuilder","LRUCache","assertEx","Base","asArchivistInstance","asDivinerInstance","LRUCache","AsyncQueryBusBase","Base","_lastState","_targetConfigs","_targetQueries","constructor","params","config","pollFrequencyConfig","pollFrequency","resolver","lastState","requiredConfig","max","ttl","LRUCache","queriesArchivist","assertEx","asArchivistInstance","resolve","clearingHouse","queries","archivist","_a","_b","_c","queriesDiviner","asDivinerInstance","boundWitnessDiviner","responsesArchivist","responses","responsesDiviner","commitState","address","nextState","Promise","get","set","retrieveState","state","undefined","newState","Date","now","Pending","AsyncQueryBusClient","AsyncQueryBusBase","_queryCache","_pollCount","_pollId","constructor","params","queryCacheConfig","config","queryCache","max","ttl","started","requiredConfig","noUpdateTTL","ttlAutopurge","LRUCache","listeningAddresses","keys","send","address","query","payloads","logger","debug","$meta","destination","routedQuery","PayloadBuilder","build","queryArchivist","queriesArchivist","routedQueryHash","$hash","Object","toDataHashMap","data","insertResult","insert","set","Pending","Error","context","Promise","resolve","_a","pollForResponse","_b","start","response","get","undefined","delay","error","message","schema","sources","stop","forget","poll","setTimeoutEx","processIncomingResponses","e","clearTimeoutEx","pollFrequencyConfig","responseArchivist","responsesArchivist","responseBoundWitnessDiviner","responsesDiviner","pendingCommands","entries","filter","_","status","allSettled","map","sourceQuery","divinerQuery","BoundWitnessDivinerQuerySchema","result","divine","length","find","isBoundWitnessWithMeta","payload_hashes","containsAll","assertEx","clearTimeoutEx","setTimeoutEx","isQueryBoundWitnessWithMeta","BoundWitnessDivinerQuerySchema","asModuleInstance","PayloadBuilder","AsyncQueryBusHost","AsyncQueryBusBase","_pollId","constructor","params","perAddressBatchQueryLimit","config","started","listeningModules","mods","Promise","all","map","listeningModule","assertEx","asModuleInstance","resolver","resolve","undefined","direction","start","console","warn","poll","stop","clearTimeoutEx","callLocalModule","localModule","query","localModuleName","name","address","queryArchivist","queriesArchivist","responseArchivist","responsesArchivist","commandDestination","$meta","destination","includes","queryIndex","payload_hashes","indexOf","querySchema","payload_schemas","queries","commandPayloads","get","commandPayloadsDict","PayloadBuilder","toAllHashMap","commandHash","build","$hash","containsAll","Object","keys","logger","error","commandSchema","schema","debug","response","bw","payloads","errors","insertResult","insert","length","timestamp","commitState","findQueriesToAddress","queryBoundWitnessDiviner","queriesDiviner","retrieveState","limit","divinerQuery","BoundWitnessDivinerQuerySchema","sort","result","divine","filter","isQueryBoundWitnessWithMeta","nextState","Math","max","c","setTimeoutEx","processIncomingQueries","e","pollFrequencyConfig","localModules","allSettled","_a","Base","AbstractModuleHost","Base","AsyncQueryBusModuleHost","AbstractModuleHost","_busHost","constructor","params","start","listeningModules","config","module","resolve","undefined","direction","map","m","address","AsyncQueryBusHost","logger","resolver","stop","AsyncQueryBusModuleProxy","AbstractModuleProxy","query","payloads","proxyParams","bridgeClient","send","address","PubSubBridgeSchema","PubSubBridgeConfigSchema","PubSubBridgeSchema","assertEx","AbstractBridge","ModuleManifestPayloadSchema","creatableModule","ModuleManifestQuerySchema","isPayloadOfSchemaType","LRUCache","moduleName","PubSubBridge","AbstractBridge","_configRootAddress","_configStateStoreArchivist","_configStateStoreBoundWitnessDiviner","_discoverCache","_lastState","_targetConfigs","_targetQueries","_busClient","_busHost","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","name","rootAddress","connect","connected","disconnect","Promise","resolve","getRootAddress","targetConfig","address","assertEx","targetDiscover","_maxDepth","Error","cachedResult","get","started","addressToDiscover","logger","debug","targetManifest","maxDepth","addressToCall","queryPayload","schema","ModuleManifestQuerySchema","boundQuery","bindQuery","manifest","targetQuery","find","isPayloadOfSchemaType","ModuleManifestPayloadSchema","targetQueries","query","payloads","bus","busClient","send","targetQueryable","_address","_query","_payloads","_queryConfig","AsyncQueryBusClient","client","resolver","busHost","AsyncQueryBusHost","host","startHandler","start","stopHandler","_timeout","stop","configSchemas","PubSubBridgeConfigSchema","creatableModule"]}
1
+ {"version":3,"sources":["../../src/AbstractModuleProxy/AbstractModuleProxy.ts","../../src/AsyncQueryBus/AsyncQueryBusClient.ts","../../src/AsyncQueryBus/AsyncQueryBusBase.ts","../../src/AsyncQueryBus/model/QueryStatus.ts","../../src/AsyncQueryBus/AsyncQueryBusHost.ts","../../src/AbstractModuleHost/AbstractModuleHost.ts","../../src/AsyncQueryBus/ModuleHost/ModuleHost.ts","../../src/AsyncQueryBus/ModuleProxy/ModuleProxy.ts","../../src/Schema.ts","../../src/Config.ts","../../src/PubSubBridge.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Base, BaseParams } from '@xylabs/object'\nimport { Promisable, PromiseEx } from '@xylabs/promise'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { QueryBoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { EventAnyListener, EventListener, EventUnsubscribeFunction } from '@xyo-network/module-events'\nimport {\n AddressPreviousHashPayload,\n AddressPreviousHashSchema,\n Module,\n ModuleAddressQuery,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleDescribeQuery,\n ModuleDescribeQuerySchema,\n ModuleDescription,\n ModuleDiscoverQuery,\n ModuleDiscoverQuerySchema,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleManifestQuerySchema,\n ModuleQueryResult,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\nimport { ModuleError, ModuleErrorSchema, Payload, Query, WithMeta } from '@xyo-network/payload-model'\n\nexport type ModuleProxyParams = BaseParams<{\n account: AccountInstance\n moduleAddress: Address\n queries: string[]\n}>\n\nexport abstract class AbstractModuleProxy<TParams extends ModuleProxyParams = ModuleProxyParams, TWrappedModule extends Module = Module>\n extends Base<TWrappedModule['params']>\n implements ModuleInstance<TWrappedModule['params'], TWrappedModule['eventData']>\n{\n static requiredQueries: string[] = [ModuleDiscoverQuerySchema]\n\n eventData = {} as TWrappedModule['eventData']\n\n protected readonly proxyParams: TParams\n\n constructor(params: TParams) {\n super({ config: { schema: ModuleConfigSchema } })\n this.proxyParams = params\n }\n\n get account() {\n return this.proxyParams.account\n }\n\n get address() {\n return this.proxyParams.moduleAddress\n }\n\n get config() {\n return this.params.config\n }\n\n get downResolver(): ModuleResolverInstance {\n throw new Error('Unsupported')\n }\n\n get id() {\n return this.proxyParams.moduleAddress\n }\n\n get queries(): string[] {\n return this.proxyParams.queries\n }\n\n get upResolver(): ModuleResolverInstance {\n throw new Error('Unsupported')\n }\n\n static hasRequiredQueries(module: Module) {\n return this.missingRequiredQueries(module).length === 0\n }\n\n static missingRequiredQueries(module: Module): string[] {\n const moduleQueries = module.queries\n return compact(\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n }),\n )\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return assertEx(\n (await this.sendQuery(queryPayload)).find((payload) => payload.schema === AddressPreviousHashSchema) as WithMeta<AddressPreviousHashPayload>,\n 'Result did not include correct payload',\n )\n }\n\n clearListeners(_eventNames: Parameters<TWrappedModule['clearListeners']>[0]) {\n throw new Error('Unsupported')\n }\n\n //TODO: Make ModuleDescription into real payload\n async describe(): Promise<ModuleDescription> {\n const queryPayload: ModuleDescribeQuery = { schema: ModuleDescribeQuerySchema }\n return (await this.sendQuery(queryPayload))[0] as unknown as ModuleDescription\n }\n\n async discover(): Promise<Payload[]> {\n const queryPayload: ModuleDiscoverQuery = { schema: ModuleDiscoverQuerySchema }\n return await this.sendQuery(queryPayload)\n }\n\n emit(_eventName: Parameters<TWrappedModule['emit']>[0], _eventArgs: Parameters<TWrappedModule['emit']>[1]): Promise<void> {\n throw new Error('Unsupported')\n }\n\n emitSerial(_eventName: Parameters<TWrappedModule['emitSerial']>[0], _eventArgs: Parameters<TWrappedModule['emitSerial']>[1]): Promise<void> {\n throw new Error('Unsupported')\n }\n\n listenerCount(_eventNames: Parameters<TWrappedModule['listenerCount']>[0]): number {\n throw new Error('Unsupported')\n }\n\n async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as WithMeta<ModuleManifestPayload>\n }\n\n async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload)) as WithMeta<AddressPreviousHashPayload>[]\n }\n\n off<TEventName extends keyof TWrappedModule['eventData']>(\n _eventNames: TEventName,\n _listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ) {\n throw new Error('Unsupported')\n }\n\n offAny(_listener: EventAnyListener) {\n throw new Error('Unsupported')\n }\n\n on<TEventName extends keyof TWrappedModule['eventData']>(\n _eventNames: TEventName,\n _listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): EventUnsubscribeFunction {\n throw new Error('Unsupported')\n }\n\n onAny(_listener: EventAnyListener): EventUnsubscribeFunction {\n throw new Error('Unsupported')\n }\n\n once<TEventName extends keyof TWrappedModule['eventData']>(\n _eventName: TEventName,\n _listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): EventUnsubscribeFunction {\n throw new Error('Unsupported')\n }\n\n async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as WithMeta<AddressPreviousHashPayload>).previousHash\n }\n\n queryable<T extends QueryBoundWitness = QueryBoundWitness>(_query: T, _payloads?: Payload[]) {\n return true\n }\n\n resolve(filter?: ModuleFilter | undefined, options?: ModuleFilterOptions<ModuleInstance> | undefined): Promisable<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions<ModuleInstance> | undefined): Promisable<ModuleInstance | undefined>\n resolve(nameOrAddressOrFilter?: string | ModuleFilter, _options?: unknown): Promisable<ModuleInstance | ModuleInstance[] | undefined> | undefined {\n return typeof nameOrAddressOrFilter === 'string' ? undefined : []\n }\n\n state() {\n return []\n }\n\n protected bindQuery<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance | undefined = this.account,\n ): PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const promise = new PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance>(async (resolve) => {\n const result = await this.bindQueryInternal(query, payloads, account)\n resolve?.(result)\n return result\n }, account)\n return promise\n }\n\n protected async bindQueryInternal<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance | undefined = this.account,\n ): Promise<[QueryBoundWitness, Payload[], ModuleError[]]> {\n const builder = await new QueryBoundWitnessBuilder().payloads(payloads).query(query)\n const result = await (account ? builder.witness(account) : builder).build()\n return result\n }\n\n protected async filterErrors(result: ModuleQueryResult): Promise<ModuleError[]> {\n const wrapper = await BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<WithMeta<ModuleError>>(ModuleErrorSchema)\n }\n\n protected async sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n ): Promise<WithMeta<R>[]> {\n // Bind them\n const query = await this.bindQuery(queryPayload, payloads)\n\n // Send them off\n const [, resultPayloads, errors] = await this.query(query[0], query[1])\n\n /* TODO: Figure out what to do with the returning BW. Should we store them in a queue in case the caller wants to see them? */\n\n if (errors && errors.length > 0) {\n /* TODO: Figure out how to rollup multiple Errors */\n throw errors[0]\n }\n\n return resultPayloads as WithMeta<R>[]\n }\n\n abstract query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n","import { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { clearTimeoutEx, setTimeoutEx } from '@xylabs/timer'\nimport { isBoundWitnessWithMeta, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { CacheConfig } from '@xyo-network/bridge-model'\nimport { BoundWitnessDivinerQueryPayload, BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { ModuleQueryResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { ModuleError, Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { AsyncQueryBusClientParams, Pending } from './model'\n\nexport class AsyncQueryBusClient<TParams extends AsyncQueryBusClientParams = AsyncQueryBusClientParams> extends AsyncQueryBusBase<TParams> {\n protected _queryCache?: LRUCache<Address, Pending | ModuleQueryResult>\n private _pollCount = 0\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get queryCacheConfig(): LRUCache.Options<Address, Pending | ModuleQueryResult, unknown> {\n const queryCacheConfig: CacheConfig | undefined = this.config?.queryCache === true ? {} : this.config?.queryCache\n return { max: 100, ttl: 1000 * 60, ...queryCacheConfig }\n }\n\n get started() {\n return !!this._pollId\n }\n\n /**\n * A cache of queries that have been issued\n */\n protected get queryCache(): LRUCache<Address, Pending | ModuleQueryResult> {\n const config = this.queryCacheConfig\n const requiredConfig = { noUpdateTTL: false, ttlAutopurge: true }\n this._queryCache = this._queryCache ?? new LRUCache<Address, Pending | ModuleQueryResult>({ ...config, ...requiredConfig })\n return this._queryCache\n }\n\n listeningAddresses() {\n return this._queryCache?.keys()\n }\n\n async send(address: Address, query: QueryBoundWitness, payloads?: Payload[] | undefined): Promise<ModuleQueryResult> {\n this.logger?.debug(`Begin issuing query to: ${address}`)\n const $meta = { ...query?.$meta, destination: [address] }\n const routedQuery = await PayloadBuilder.build({ ...query, $meta })\n const queryArchivist = await this.queriesArchivist()\n\n // TODO: Should we always re-hash to true up timestamps? We can't\n // re-sign correctly so we would lose that information if we did and\n // would also be replying to consumers with a different query hash than\n // they sent us (which might be OK since it reflect the chain of custody)\n // Revisit this once we have proxy module support as they are another\n // intermediary to consider.\n const routedQueryHash =\n // Trust the signed hash if it's there\n (routedQuery as WithMeta<QueryBoundWitness>)?.$hash ??\n // TODO: What is the right way to find the dataHash\n Object.keys(await PayloadBuilder.toDataHashMap([routedQuery]))[0]\n this.logger?.debug(`Issuing query: ${routedQueryHash} to: ${address}`)\n // If there was data associated with the query, add it to the insert\n const data = payloads ? [routedQuery, ...payloads] : [routedQuery]\n const insertResult = await queryArchivist.insert?.(data)\n this.logger?.debug(`Issued query: ${routedQueryHash} to: ${address}`)\n this.queryCache.set(routedQueryHash, Pending)\n if (!insertResult) throw new Error('Unable to issue query to queryArchivist')\n const context = new Promise<ModuleQueryResult>((resolve) => {\n this.logger?.debug(`Polling for response to query: ${routedQueryHash}`)\n const pollForResponse = async () => {\n try {\n this.start()\n let response = this.queryCache.get(routedQueryHash)\n // Poll for response until cache key expires (response timed out)\n while (response !== undefined) {\n // Wait a bit\n await delay(100)\n // Check the status of the response\n response = this.queryCache.get(routedQueryHash)\n // If status is no longer pending that means we received a response\n if (response && response !== Pending) {\n this.logger?.debug(`Returning response to query: ${routedQueryHash}`)\n resolve(response)\n return\n }\n }\n // If we got here waiting for a response timed out\n this.logger?.error('Timeout waiting for query response')\n // Resolve with error to match what a local module would do if it were to error\n // TODO: BW Builder/Sign result as this module?\n const error: ModuleError = {\n message: 'Timeout waiting for query response',\n query: 'network.xyo.boundwitness',\n schema: 'network.xyo.error.module',\n sources: [routedQueryHash],\n }\n resolve([routedQuery, [], [await PayloadBuilder.build(error)]])\n return\n } finally {\n this.stop()\n }\n }\n forget(pollForResponse())\n })\n return context\n }\n\n /**\n * Runs the background divine process on a loop with a delay\n * specified by the `config.pollFrequency`\n */\n private poll() {\n this._pollId = setTimeoutEx(async () => {\n try {\n await this.processIncomingResponses()\n } catch (e) {\n this.logger?.error?.(`Error in main loop: ${e}`)\n } finally {\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n this.poll()\n }\n }, this.pollFrequencyConfig)\n }\n\n /**\n * Background process for processing incoming responses to previously issued queries\n */\n private processIncomingResponses = async () => {\n const responseArchivist = await this.responsesArchivist()\n const responseBoundWitnessDiviner = await this.responsesDiviner()\n const pendingCommands = [...this.queryCache.entries()].filter(([_, status]) => status === Pending)\n // TODO: Do in throttled batches\n await Promise.allSettled(\n pendingCommands.map(async ([sourceQuery, status]) => {\n if (status === Pending) {\n const divinerQuery: BoundWitnessDivinerQueryPayload = { schema: BoundWitnessDivinerQuerySchema, sourceQuery }\n const result = await responseBoundWitnessDiviner.divine([divinerQuery])\n if (result && result.length > 0) {\n const response = result.find(isBoundWitnessWithMeta)\n if (response && (response?.$meta as unknown as { sourceQuery: string })?.sourceQuery === sourceQuery) {\n this.logger?.debug(`Found response to query: ${sourceQuery}`)\n // Get any payloads associated with the response\n const payloads: PayloadWithMeta[] = response.payload_hashes?.length > 0 ? await responseArchivist.get(response.payload_hashes) : []\n this.queryCache.set(sourceQuery, [response, payloads, []])\n }\n }\n }\n }),\n )\n }\n\n private start() {\n if (this._pollCount === 0) {\n this.poll()\n }\n this._pollCount++\n }\n\n private stop() {\n this._pollCount--\n if (this._pollCount <= 0) {\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n this._pollCount = 0\n }\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Base } from '@xylabs/object'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerParams, BoundWitnessDivinerQueryPayload } from '@xyo-network/diviner-boundwitness-model'\nimport { asDivinerInstance, DivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleConfig } from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { AsyncQueryBusParams } from './model'\n\nexport class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends Base<TParams> {\n protected _lastState?: LRUCache<Address, number>\n protected _targetConfigs: Record<Address, ModuleConfig> = {}\n protected _targetQueries: Record<Address, string[]> = {}\n\n constructor(params: TParams) {\n super(params)\n }\n\n get config(): TParams['config'] {\n return this.params.config\n }\n\n get pollFrequencyConfig(): number {\n return this.config?.pollFrequency ?? 1000\n }\n\n get resolver() {\n return this.params.resolver\n }\n\n /**\n * A cache of the last offset of the Diviner process per address\n */\n protected get lastState(): LRUCache<Address, number> {\n const requiredConfig = { max: 1000, ttl: 0 }\n this._lastState = this._lastState ?? new LRUCache<Address, number>(requiredConfig)\n return this._lastState\n }\n\n async queriesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config?.intersect?.queries?.archivist)),\n () => `Unable to resolve queriesArchivist [${this.config?.intersect?.queries?.archivist}]`,\n )\n }\n\n async queriesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config?.intersect?.queries?.boundWitnessDiviner)),\n () => `Unable to resolve queriesDiviner [${this.config?.intersect?.queries?.boundWitnessDiviner}]`,\n ) as DivinerInstance<BoundWitnessDivinerParams, BoundWitnessDivinerQueryPayload, QueryBoundWitness>\n }\n\n async responsesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config?.intersect?.responses?.archivist)),\n () => `Unable to resolve responsesArchivist [${this.config?.intersect?.responses?.archivist}]`,\n )\n }\n\n async responsesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config?.intersect?.responses?.boundWitnessDiviner)),\n () => `Unable to resolve responsesDiviner [${this.config?.intersect?.responses?.boundWitnessDiviner}]`,\n ) as DivinerInstance<BoundWitnessDivinerParams, BoundWitnessDivinerQueryPayload, BoundWitness>\n }\n\n /**\n * Commit the internal state of the process. This is similar\n * to a transaction completion in a database and should only be called\n * when results have been successfully persisted to the appropriate\n * external stores.\n * @param address The module address to commit the state for\n * @param nextState The state to commit\n */\n protected async commitState(address: Address, nextState: number) {\n await Promise.resolve()\n // TODO: Offload to Archivist/Diviner instead of in-memory\n const lastState = this.lastState.get(address)\n if (lastState && lastState >= nextState) return\n this.lastState.set(address, nextState)\n }\n\n /**\n * Retrieves the last state of the process. Used to recover state after\n * preemptions, reboots, etc.\n */\n protected async retrieveState(address: Address): Promise<number> {\n await Promise.resolve()\n const state = this.lastState.get(address)\n if (state === undefined) {\n // If this is a boot we can go back a bit in time\n // and begin processing recent commands\n const newState = Date.now() - 1000\n this.lastState.set(address, newState)\n return newState\n } else {\n return state\n }\n }\n}\n","export const Pending = 'pending' as const\nexport type Pending = typeof Pending\n","import { containsAll } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { clearTimeoutEx, setTimeoutEx } from '@xylabs/timer'\nimport { isQueryBoundWitnessWithMeta, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { asModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { WithMeta } from '@xyo-network/payload-model'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { AsyncQueryBusHostParams } from './model'\n\nexport class AsyncQueryBusHost<TParams extends AsyncQueryBusHostParams = AsyncQueryBusHostParams> extends AsyncQueryBusBase<TParams> {\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get perAddressBatchQueryLimit(): number {\n return this.config?.perAddressBatchQueryLimit ?? 10\n }\n\n get started() {\n return !!this._pollId\n }\n\n async listeningModules(): Promise<ModuleInstance[]> {\n const mods =\n this.config?.listeningModules ?\n await Promise.all(\n this.config.listeningModules.map(async (listeningModule) =>\n assertEx(asModuleInstance(await this.resolver.resolve(listeningModule)), () => `Unable to resolve listeningModule [${listeningModule}]`),\n ),\n )\n : await this.resolver.resolve(undefined, { direction: 'down' })\n return mods\n }\n\n start() {\n if (this.started) {\n console.warn('AsyncQueryBus starting when already started')\n }\n this.poll()\n }\n\n stop() {\n if (!this.started) {\n console.warn('AsyncQueryBus stopping when already stopped')\n }\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n }\n\n protected callLocalModule = async (localModule: ModuleInstance, query: WithMeta<QueryBoundWitness>) => {\n //console.log(`callLocalModule: ${query.$hash}`)\n const localModuleName = localModule.config.name ?? localModule.address\n const queryArchivist = await this.queriesArchivist()\n const responseArchivist = await this.responsesArchivist()\n const commandDestination = (query.$meta as { destination?: string[] })?.destination\n if (commandDestination && commandDestination?.includes(localModule.address)) {\n // Find the query\n const queryIndex = query.payload_hashes.indexOf(query.query)\n if (queryIndex !== -1) {\n const querySchema = query.payload_schemas[queryIndex]\n // If the destination can process this type of query\n if (localModule.queries.includes(querySchema)) {\n // Get the associated payloads\n const commandPayloads = await queryArchivist.get(query.payload_hashes)\n const commandPayloadsDict = await PayloadBuilder.toAllHashMap(commandPayloads)\n const commandHash = (await PayloadBuilder.build(query)).$hash\n // Check that we have all the arguments for the command\n if (!containsAll(Object.keys(commandPayloadsDict), query.payload_hashes)) {\n this.logger?.error(`Error processing command ${commandHash} for module ${localModuleName}, missing payloads`)\n return\n }\n try {\n // Issue the query against module\n const commandSchema = commandPayloadsDict[query.query].schema\n this.logger?.debug(`Issuing command ${commandSchema} (${commandHash}) addressed to module: ${localModuleName}`)\n const response = await localModule.query(query, commandPayloads)\n const [bw, payloads, errors] = response\n this.logger?.debug(`Replying to command ${commandHash} addressed to module: ${localModuleName}`)\n const insertResult = await responseArchivist.insert([bw, ...payloads, ...errors])\n // NOTE: If all archivists support the contract that numPayloads inserted === numPayloads returned we can\n // do some deeper assertions here like lenIn === lenOut, but for now this should be good enough since BWs\n // should always be unique causing at least one insertion\n if (insertResult.length === 0) {\n this.logger?.error(`Error replying to command ${commandHash} addressed to module: ${localModuleName}`)\n }\n if (query?.timestamp) {\n // TODO: This needs to be thought through as we can't use a distributed timestamp\n // because of collisions. We need to ensure we are using the timestamp of the store\n // so there's no chance of multiple commands at the same time\n await this.commitState(localModule.address, query.timestamp)\n }\n } catch (error) {\n this.logger?.error(`Error processing command ${commandHash} for module ${localModuleName}: ${error}`)\n }\n }\n }\n }\n }\n\n /**\n * Finds unprocessed commands addressed to the supplied address\n * @param address The address to find commands for\n */\n protected findQueriesToAddress = async (address: Address) => {\n const queryBoundWitnessDiviner = await this.queriesDiviner()\n // Retrieve last offset from state store\n const timestamp = await this.retrieveState(address)\n const destination = [address]\n const limit = this.perAddressBatchQueryLimit\n // Filter for commands to us by destination address\n const divinerQuery = { destination, limit, schema: BoundWitnessDivinerQuerySchema, sort: 'asc', timestamp }\n const result = await queryBoundWitnessDiviner.divine([divinerQuery])\n const queries = result.filter(isQueryBoundWitnessWithMeta)\n const nextState = queries.length > 0 ? Math.max(...queries.map((c) => c.timestamp ?? 0)) + 1 : timestamp\n // TODO: This needs to be thought through as we can't use a distributed timestamp\n // because of collisions. We need to use the timestamp of the store so there's no\n // chance of multiple commands at the same time\n await this.commitState(address, nextState)\n return queries\n }\n\n /**\n * Runs the background divine process on a loop with a delay\n * specified by the `config.pollFrequency`\n */\n private poll() {\n this._pollId = setTimeoutEx(async () => {\n try {\n await this.processIncomingQueries()\n } catch (e) {\n this.logger?.error?.(`Error in main loop: ${e}`)\n } finally {\n if (this._pollId) clearTimeoutEx(this._pollId)\n this._pollId = undefined\n this.poll()\n }\n }, this.pollFrequencyConfig)\n }\n\n /**\n * Background process for checking for inbound commands\n */\n private processIncomingQueries = async () => {\n this.logger?.debug('Checking for inbound commands')\n // Check for any queries that have been issued and have not been responded to\n const localModules = await this.listeningModules()\n\n // TODO: Do in throttled batches\n await Promise.allSettled(\n localModules.map(async (localModule) => {\n try {\n const localModuleName = localModule.config.name ?? localModule.address\n this.logger?.debug(`Checking for inbound commands to ${localModuleName}`)\n const queries = await this.findQueriesToAddress(localModule.address)\n if (queries.length === 0) return\n this.logger?.debug(`Found commands addressed to local module: ${localModuleName}`)\n for (const query of queries) {\n await this.callLocalModule(localModule, query)\n }\n } catch (error) {\n this.logger?.error(`Error processing commands for address ${localModule.address}: ${error}`)\n }\n }),\n )\n }\n}\n","import { Base, BaseParams } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport type ModuleHostParams<THostedInstance extends ModuleInstance = ModuleInstance> = BaseParams<{\n module: THostedInstance\n}>\n\nexport abstract class AbstractModuleHost<TParams extends ModuleHostParams = ModuleHostParams> extends Base<TParams> {\n abstract start(): Promisable<void>\n abstract stop(): Promisable<void>\n}\n","import { AbstractModuleHost, ModuleHostParams } from '../../AbstractModuleHost'\nimport { AsyncQueryBusHost } from '../AsyncQueryBusHost'\nimport { AsyncQueryBusHostConfig } from '../model/HostConfig'\n\nexport type AsyncQueryBusModuleHostParams = ModuleHostParams & {\n config: AsyncQueryBusHostConfig\n}\n\nexport class AsyncQueryBusModuleHost extends AbstractModuleHost<AsyncQueryBusModuleHostParams> {\n private _busHost?: AsyncQueryBusHost\n\n constructor(params: AsyncQueryBusModuleHostParams) {\n super(params)\n }\n\n override async start(): Promise<void> {\n const listeningModules =\n this.params.config.listeningModules ?? (await this.params.module.resolve(undefined, { direction: 'down' })).map((m) => m.address)\n this._busHost = new AsyncQueryBusHost({\n config: { ...this.params.config, listeningModules },\n logger: this.params.logger,\n resolver: this.params.module,\n })\n this._busHost?.start()\n }\n override stop() {\n this._busHost?.stop()\n }\n}\n","import { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { Module, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { AbstractModuleProxy, ModuleProxyParams } from '../../AbstractModuleProxy'\nimport { AsyncQueryBusClient } from '../AsyncQueryBusClient'\n\nexport type AsyncQueryBusModuleProxyParams = ModuleProxyParams & {\n busClient: AsyncQueryBusClient\n}\n\nexport class AsyncQueryBusModuleProxy<TWrappedModule extends Module = Module>\n extends AbstractModuleProxy<AsyncQueryBusModuleProxyParams, TWrappedModule>\n implements ModuleInstance<TWrappedModule['params'], TWrappedModule['eventData']>\n{\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.proxyParams.busClient.send(this.address, query, payloads)\n }\n}\n","export const PubSubBridgeSchema = 'network.xyo.bridge.pubsub'\nexport type PubSubBridgeSchema = typeof PubSubBridgeSchema\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nimport { AsyncQueryBusClientConfig, AsyncQueryBusHostConfig } from './AsyncQueryBus'\nimport { PubSubBridgeSchema } from './Schema'\n\nexport const PubSubBridgeConfigSchema = `${PubSubBridgeSchema}.config`\nexport type PubSubBridgeConfigSchema = typeof PubSubBridgeConfigSchema\n\n/**\n * Configuration for the PubSubBridge\n */\nexport type PubSubBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: AsyncQueryBusClientConfig\n host?: AsyncQueryBusHostConfig\n } & TConfig,\n TSchema extends string ? TSchema : PubSubBridgeConfigSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractBridge } from '@xyo-network/abstract-bridge'\nimport { Account } from '@xyo-network/account'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport {\n creatableModule,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { NodeAttachQuerySchema } from '@xyo-network/node-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport {\n AsyncQueryBusClient,\n AsyncQueryBusClientParams,\n AsyncQueryBusHost,\n AsyncQueryBusModuleProxy,\n AsyncQueryBusModuleProxyParams,\n} from './AsyncQueryBus'\nimport { PubSubBridgeConfigSchema } from './Config'\nimport { PubSubBridgeParams } from './Params'\n\nconst moduleName = 'PubSubBridge'\n\n@creatableModule()\nexport class PubSubBridge<TParams extends PubSubBridgeParams = PubSubBridgeParams, TEventData extends ModuleEventData = ModuleEventData>\n extends AbstractBridge<TParams, TEventData>\n implements BridgeModule<TParams, TEventData>\n{\n static override configSchemas = [PubSubBridgeConfigSchema]\n\n protected _configRootAddress: Address = ''\n protected _configStateStoreArchivist: string = ''\n protected _configStateStoreBoundWitnessDiviner: string = ''\n protected _lastState?: LRUCache<string, number>\n\n private _busClient?: AsyncQueryBusClient\n private _busHost?: AsyncQueryBusHost\n\n protected get moduleName() {\n return `${this.config.name ?? moduleName}`\n }\n\n protected get rootAddress() {\n return this._configRootAddress\n }\n\n connect() {\n this.connected = true\n return this.connected\n }\n\n async disconnect(): Promise<boolean> {\n await Promise.resolve()\n this.connected = false\n return true\n }\n\n override getRootAddress(): Address {\n return this.rootAddress\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter?: ModuleFilter<T> | ModuleIdentifier,\n _options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (idOrFilter === undefined) {\n return []\n }\n if (typeof idOrFilter === 'string') {\n const upResolve = await this.upResolver.resolve<T>(idOrFilter)\n if (upResolve) return upResolve\n assertEx(!isAddress(idOrFilter), 'Name resolutions not supported')\n const params: AsyncQueryBusModuleProxyParams = {\n account: Account.randomSync(),\n busClient: assertEx(this.busClient(), 'Bus client not initialized'),\n moduleAddress: idOrFilter as Address,\n queries: [],\n }\n // eslint-disable-next-line unicorn/no-useless-promise-resolve-reject\n return await Promise.resolve(new AsyncQueryBusModuleProxy<T>(params) as unknown as T)\n } else {\n throw new TypeError('Filter not Supported')\n }\n }\n\n override targetConfig(_address: Address): ModuleConfig {\n return { schema: ModuleConfigSchema }\n }\n\n override targetManifest(_address: Address, _maxDepth?: number | undefined): Promisable<ModuleManifestPayload> {\n return { config: { name: '', schema: ModuleConfigSchema }, schema: ModuleManifestPayloadSchema }\n }\n\n override targetQueries(_address: Address): string[] {\n return []\n }\n\n override async targetQuery(address: Address, query: QueryBoundWitness, payloads?: Payload[] | undefined): Promise<ModuleQueryResult> {\n if (!this.connected) throw new Error('Not connected')\n await this.started('throw')\n const bus = assertEx(this.busClient(), 'Client not configured')\n return bus?.send(address, query, payloads)\n }\n\n override targetQueryable(_address: Address, _query: QueryBoundWitness, _payloads?: Payload[], _queryConfig?: ModuleConfig): boolean {\n return true\n }\n\n protected busClient() {\n if (!this._busClient && this.config.client) {\n this._busClient = new AsyncQueryBusClient({\n config: this.config.client,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busClient\n }\n\n protected busHost() {\n if (!this._busHost && this.config.host) {\n this._busHost = new AsyncQueryBusHost({\n config: this.config.host,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busHost\n }\n\n protected override async startHandler(): Promise<boolean> {\n await Promise.resolve(this.connect())\n this.busHost()?.start()\n return true\n }\n\n protected override stopHandler(_timeout?: number | undefined) {\n this.busHost()?.stop()\n return true\n }\n}\n"],"mappings":"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","names":["assertEx","compact","Base","PromiseEx","QueryBoundWitnessBuilder","BoundWitnessWrapper","AddressPreviousHashSchema","ModuleAddressQuerySchema","ModuleConfigSchema","ModuleDescribeQuerySchema","ModuleDiscoverQuerySchema","ModuleManifestQuerySchema","ModuleErrorSchema","AbstractModuleProxy","Base","eventData","proxyParams","constructor","params","config","schema","ModuleConfigSchema","account","address","moduleAddress","downResolver","Error","id","queries","upResolver","hasRequiredQueries","module","missingRequiredQueries","length","moduleQueries","compact","requiredQueries","map","query","includes","addressPreviousHash","queryPayload","ModuleAddressQuerySchema","assertEx","sendQuery","find","payload","AddressPreviousHashSchema","clearListeners","_eventNames","describe","ModuleDescribeQuerySchema","discover","ModuleDiscoverQuerySchema","emit","_eventName","_eventArgs","emitSerial","listenerCount","manifest","maxDepth","ModuleManifestQuerySchema","undefined","off","_listener","offAny","on","onAny","once","previousHash","pop","queryable","_query","_payloads","resolve","nameOrAddressOrFilter","_options","state","bindQuery","payloads","promise","PromiseEx","result","bindQueryInternal","builder","QueryBoundWitnessBuilder","witness","build","filterErrors","wrapper","BoundWitnessWrapper","wrap","payloadsBySchema","ModuleErrorSchema","resultPayloads","errors","delay","forget","clearTimeoutEx","setTimeoutEx","isBoundWitnessWithMeta","BoundWitnessDivinerQuerySchema","PayloadBuilder","LRUCache","assertEx","Base","asArchivistInstance","asDivinerInstance","LRUCache","AsyncQueryBusBase","Base","_lastState","_targetConfigs","_targetQueries","constructor","params","config","pollFrequencyConfig","pollFrequency","resolver","lastState","requiredConfig","max","ttl","LRUCache","queriesArchivist","assertEx","asArchivistInstance","resolve","intersect","queries","archivist","_a","_b","_c","queriesDiviner","asDivinerInstance","boundWitnessDiviner","responsesArchivist","responses","responsesDiviner","commitState","address","nextState","Promise","get","set","retrieveState","state","undefined","newState","Date","now","Pending","AsyncQueryBusClient","AsyncQueryBusBase","_queryCache","_pollCount","_pollId","constructor","params","queryCacheConfig","config","queryCache","max","ttl","started","requiredConfig","noUpdateTTL","ttlAutopurge","LRUCache","listeningAddresses","keys","send","address","query","payloads","logger","debug","$meta","destination","routedQuery","PayloadBuilder","build","queryArchivist","queriesArchivist","routedQueryHash","$hash","Object","toDataHashMap","data","insertResult","insert","set","Pending","Error","context","Promise","resolve","_a","pollForResponse","_b","start","response","get","undefined","delay","error","message","schema","sources","stop","forget","poll","setTimeoutEx","processIncomingResponses","e","clearTimeoutEx","pollFrequencyConfig","responseArchivist","responsesArchivist","responseBoundWitnessDiviner","responsesDiviner","pendingCommands","entries","filter","_","status","allSettled","map","sourceQuery","divinerQuery","BoundWitnessDivinerQuerySchema","result","divine","length","find","isBoundWitnessWithMeta","payload_hashes","containsAll","assertEx","clearTimeoutEx","setTimeoutEx","isQueryBoundWitnessWithMeta","BoundWitnessDivinerQuerySchema","asModuleInstance","PayloadBuilder","AsyncQueryBusHost","AsyncQueryBusBase","_pollId","constructor","params","perAddressBatchQueryLimit","config","started","listeningModules","mods","Promise","all","map","listeningModule","assertEx","asModuleInstance","resolver","resolve","undefined","direction","start","console","warn","poll","stop","clearTimeoutEx","callLocalModule","localModule","query","localModuleName","name","address","queryArchivist","queriesArchivist","responseArchivist","responsesArchivist","commandDestination","$meta","destination","includes","queryIndex","payload_hashes","indexOf","querySchema","payload_schemas","queries","commandPayloads","get","commandPayloadsDict","PayloadBuilder","toAllHashMap","commandHash","build","$hash","containsAll","Object","keys","logger","error","commandSchema","schema","debug","response","bw","payloads","errors","insertResult","insert","length","timestamp","commitState","findQueriesToAddress","queryBoundWitnessDiviner","queriesDiviner","retrieveState","limit","divinerQuery","BoundWitnessDivinerQuerySchema","sort","result","divine","filter","isQueryBoundWitnessWithMeta","nextState","Math","max","c","setTimeoutEx","processIncomingQueries","e","pollFrequencyConfig","localModules","allSettled","_a","Base","AbstractModuleHost","Base","AsyncQueryBusModuleHost","AbstractModuleHost","_busHost","constructor","params","start","listeningModules","config","module","resolve","undefined","direction","map","m","address","AsyncQueryBusHost","logger","resolver","stop","AsyncQueryBusModuleProxy","AbstractModuleProxy","query","payloads","proxyParams","busClient","send","address","PubSubBridgeSchema","PubSubBridgeConfigSchema","PubSubBridgeSchema","assertEx","isAddress","AbstractBridge","Account","ModuleManifestPayloadSchema","creatableModule","ModuleConfigSchema","moduleName","PubSubBridge","AbstractBridge","_configRootAddress","_configStateStoreArchivist","_configStateStoreBoundWitnessDiviner","_lastState","_busClient","_busHost","config","name","rootAddress","connect","connected","disconnect","Promise","resolve","getRootAddress","idOrFilter","_options","undefined","upResolve","upResolver","assertEx","isAddress","params","account","Account","randomSync","busClient","moduleAddress","queries","AsyncQueryBusModuleProxy","TypeError","targetConfig","_address","schema","ModuleConfigSchema","targetManifest","_maxDepth","ModuleManifestPayloadSchema","targetQueries","targetQuery","address","query","payloads","Error","started","bus","send","targetQueryable","_query","_payloads","_queryConfig","client","AsyncQueryBusClient","logger","resolver","busHost","host","AsyncQueryBusHost","startHandler","start","stopHandler","_timeout","stop","configSchemas","PubSubBridgeConfigSchema","creatableModule"]}