@xyo-network/bridge-pub-sub 2.90.1 → 2.90.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 (36) hide show
  1. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.cts.map +1 -1
  2. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.mts.map +1 -1
  3. package/dist/browser/AsyncQueryBus/AsyncQueryBusClient.d.ts.map +1 -1
  4. package/dist/browser/AsyncQueryBus/AsyncQueryBusServer.d.cts +2 -2
  5. package/dist/browser/AsyncQueryBus/AsyncQueryBusServer.d.cts.map +1 -1
  6. package/dist/browser/AsyncQueryBus/AsyncQueryBusServer.d.mts +2 -2
  7. package/dist/browser/AsyncQueryBus/AsyncQueryBusServer.d.mts.map +1 -1
  8. package/dist/browser/AsyncQueryBus/AsyncQueryBusServer.d.ts +2 -2
  9. package/dist/browser/AsyncQueryBus/AsyncQueryBusServer.d.ts.map +1 -1
  10. package/dist/browser/PubSubBridge.d.cts.map +1 -1
  11. package/dist/browser/PubSubBridge.d.mts.map +1 -1
  12. package/dist/browser/PubSubBridge.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +9 -12
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.js +9 -12
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.cts.map +1 -1
  18. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.mts.map +1 -1
  19. package/dist/node/AsyncQueryBus/AsyncQueryBusClient.d.ts.map +1 -1
  20. package/dist/node/AsyncQueryBus/AsyncQueryBusServer.d.cts +2 -2
  21. package/dist/node/AsyncQueryBus/AsyncQueryBusServer.d.cts.map +1 -1
  22. package/dist/node/AsyncQueryBus/AsyncQueryBusServer.d.mts +2 -2
  23. package/dist/node/AsyncQueryBus/AsyncQueryBusServer.d.mts.map +1 -1
  24. package/dist/node/AsyncQueryBus/AsyncQueryBusServer.d.ts +2 -2
  25. package/dist/node/AsyncQueryBus/AsyncQueryBusServer.d.ts.map +1 -1
  26. package/dist/node/PubSubBridge.d.cts.map +1 -1
  27. package/dist/node/PubSubBridge.d.mts.map +1 -1
  28. package/dist/node/PubSubBridge.d.ts.map +1 -1
  29. package/dist/node/index.cjs +9 -12
  30. package/dist/node/index.cjs.map +1 -1
  31. package/dist/node/index.js +9 -12
  32. package/dist/node/index.js.map +1 -1
  33. package/package.json +23 -24
  34. package/src/AsyncQueryBus/AsyncQueryBusClient.ts +5 -6
  35. package/src/AsyncQueryBus/AsyncQueryBusServer.ts +3 -5
  36. package/src/PubSubBridge.ts +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncQueryBusClient.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnF,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAe,OAAO,EAAY,MAAM,4BAA4B,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAchB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgEnH,KAAK;IAOL,IAAI;IAQJ;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAuB/B;CACF"}
1
+ {"version":3,"file":"AsyncQueryBusClient.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE3F,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAe,OAAO,EAAY,MAAM,4BAA4B,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAchB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgEnH,KAAK;IAOL,IAAI;IAQJ;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAsB/B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncQueryBusClient.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnF,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAe,OAAO,EAAY,MAAM,4BAA4B,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAchB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgEnH,KAAK;IAOL,IAAI;IAQJ;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAuB/B;CACF"}
1
+ {"version":3,"file":"AsyncQueryBusClient.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE3F,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAe,OAAO,EAAY,MAAM,4BAA4B,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAchB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgEnH,KAAK;IAOL,IAAI;IAQJ;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAsB/B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncQueryBusClient.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnF,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAe,OAAO,EAAY,MAAM,4BAA4B,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAchB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgEnH,KAAK;IAOL,IAAI;IAQJ;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAuB/B;CACF"}
1
+ {"version":3,"file":"AsyncQueryBusClient.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE3F,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAe,OAAO,EAAY,MAAM,4BAA4B,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAchB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgEnH,KAAK;IAOL,IAAI;IAQJ;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAsB/B;CACF"}
@@ -54,13 +54,13 @@ export declare class AsyncQueryBusServer<TParams extends AsyncQueryBusParams = A
54
54
  * Finds unprocessed commands addressed to the supplied address
55
55
  * @param address The address to find commands for
56
56
  */
57
- protected findCommandsToAddress: (address: string) => Promise<(import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
57
+ protected findCommandsToAddress: (address: string) => Promise<import("@xyo-network/payload-model").WithMeta<import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
58
58
  query: string;
59
59
  resultSet?: string | undefined;
60
60
  schema: "network.xyo.boundwitness";
61
61
  }, "schema"> & {
62
62
  schema: "network.xyo.boundwitness";
63
- })[]>;
63
+ }>[]>;
64
64
  /**
65
65
  * Runs the background divine process on a loop with a delay
66
66
  * specified by the `config.pollFrequency`
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncQueryBusServer.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGxF,OAAO,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWtB,KAAK;IAOL,IAAI;IAQJ,SAAS,CAAC,eAAe,gBAAuB,cAAc,WAAW,iBAAiB,mBA+CzF;IAED;;;OAGG;IACH,SAAS,CAAC,qBAAqB,YAAmB,MAAM;;;;;;UAgBvD;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAsB7B;CACF"}
1
+ {"version":3,"file":"AsyncQueryBusServer.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEhG,OAAO,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWtB,KAAK;IAOL,IAAI;IAQJ,SAAS,CAAC,eAAe,gBAAuB,cAAc,WAAW,iBAAiB,mBA+CzF;IAED;;;OAGG;IACH,SAAS,CAAC,qBAAqB,YAAmB,MAAM;;;;;;UAgBvD;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAsB7B;CACF"}
@@ -54,13 +54,13 @@ export declare class AsyncQueryBusServer<TParams extends AsyncQueryBusParams = A
54
54
  * Finds unprocessed commands addressed to the supplied address
55
55
  * @param address The address to find commands for
56
56
  */
57
- protected findCommandsToAddress: (address: string) => Promise<(import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
57
+ protected findCommandsToAddress: (address: string) => Promise<import("@xyo-network/payload-model").WithMeta<import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
58
58
  query: string;
59
59
  resultSet?: string | undefined;
60
60
  schema: "network.xyo.boundwitness";
61
61
  }, "schema"> & {
62
62
  schema: "network.xyo.boundwitness";
63
- })[]>;
63
+ }>[]>;
64
64
  /**
65
65
  * Runs the background divine process on a loop with a delay
66
66
  * specified by the `config.pollFrequency`
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncQueryBusServer.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGxF,OAAO,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWtB,KAAK;IAOL,IAAI;IAQJ,SAAS,CAAC,eAAe,gBAAuB,cAAc,WAAW,iBAAiB,mBA+CzF;IAED;;;OAGG;IACH,SAAS,CAAC,qBAAqB,YAAmB,MAAM;;;;;;UAgBvD;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAsB7B;CACF"}
1
+ {"version":3,"file":"AsyncQueryBusServer.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEhG,OAAO,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWtB,KAAK;IAOL,IAAI;IAQJ,SAAS,CAAC,eAAe,gBAAuB,cAAc,WAAW,iBAAiB,mBA+CzF;IAED;;;OAGG;IACH,SAAS,CAAC,qBAAqB,YAAmB,MAAM;;;;;;UAgBvD;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAsB7B;CACF"}
@@ -54,13 +54,13 @@ export declare class AsyncQueryBusServer<TParams extends AsyncQueryBusParams = A
54
54
  * Finds unprocessed commands addressed to the supplied address
55
55
  * @param address The address to find commands for
56
56
  */
57
- protected findCommandsToAddress: (address: string) => Promise<(import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
57
+ protected findCommandsToAddress: (address: string) => Promise<import("@xyo-network/payload-model").WithMeta<import("@xyo-network/payload-model").SchemaFields & object & Omit<import("@xyo-network/boundwitness-model").BoundWitnessFields & {
58
58
  query: string;
59
59
  resultSet?: string | undefined;
60
60
  schema: "network.xyo.boundwitness";
61
61
  }, "schema"> & {
62
62
  schema: "network.xyo.boundwitness";
63
- })[]>;
63
+ }>[]>;
64
64
  /**
65
65
  * Runs the background divine process on a loop with a delay
66
66
  * specified by the `config.pollFrequency`
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncQueryBusServer.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAGxF,OAAO,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWtB,KAAK;IAOL,IAAI;IAQJ,SAAS,CAAC,eAAe,gBAAuB,cAAc,WAAW,iBAAiB,mBA+CzF;IAED;;;OAGG;IACH,SAAS,CAAC,qBAAqB,YAAmB,MAAM;;;;;;UAgBvD;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAsB7B;CACF"}
1
+ {"version":3,"file":"AsyncQueryBusServer.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+B,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEhG,OAAO,EAAoB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,qBAAa,mBAAmB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IAC5H,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,OAAO;IAI3B,IAAI,OAAO,YAEV;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWtB,KAAK;IAOL,IAAI;IAQJ,SAAS,CAAC,eAAe,gBAAuB,cAAc,WAAW,iBAAiB,mBA+CzF;IAED;;;OAGG;IACH,SAAS,CAAC,qBAAqB,YAAmB,MAAM;;;;;;UAgBvD;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI;IAcZ;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAsB7B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAEL,YAAY,EACZ,eAAe,EAGf,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAyB,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAAE,UAAU,SAAS,eAAe,GAAG,eAAe,CACrI,SAAQ,cAAc,CAAC,OAAO,EAAE,UAAU,CAC1C,YAAW,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;IAE5C,OAAgB,aAAa,WAA6B;IAE1D,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAK;IACzC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACtD,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAK;IAC3D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAK;IAEvD,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAqB;IAExC,IAAI,aAAa;;4BAIhB;IAED,IAAI,mBAAmB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAGtE;IAED,SAAS,KAAK,UAAU,WAEvB;IAED,SAAS,KAAK,WAAW,WAExB;IAUD,OAAO;IAqCD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAM3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAIrC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqChG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQpG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO1H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO;IAIlI,SAAS,CAAC,SAAS;;;;IAWnB,SAAS,CAAC,SAAS;;;;cAWM,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;cAOtC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAK7D"}
1
+ {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAEL,YAAY,EACZ,eAAe,EAGf,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAyB,OAAO,EAAY,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAAE,UAAU,SAAS,eAAe,GAAG,eAAe,CACrI,SAAQ,cAAc,CAAC,OAAO,EAAE,UAAU,CAC1C,YAAW,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;IAE5C,OAAgB,aAAa,WAA6B;IAE1D,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAK;IACzC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACtD,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAK;IAC3D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAK;IAEvD,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAqB;IAExC,IAAI,aAAa;;4BAIhB;IAED,IAAI,mBAAmB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAGtE;IAED,SAAS,KAAK,UAAU,WAEvB;IAED,SAAS,KAAK,WAAW,WAExB;IAUD,OAAO;IAqCD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAM3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAIrC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqChG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWpG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO1H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO;IAIlI,SAAS,CAAC,SAAS;;;;IAWnB,SAAS,CAAC,SAAS;;;;cAWM,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;cAOtC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAK7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAEL,YAAY,EACZ,eAAe,EAGf,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAyB,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAAE,UAAU,SAAS,eAAe,GAAG,eAAe,CACrI,SAAQ,cAAc,CAAC,OAAO,EAAE,UAAU,CAC1C,YAAW,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;IAE5C,OAAgB,aAAa,WAA6B;IAE1D,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAK;IACzC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACtD,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAK;IAC3D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAK;IAEvD,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAqB;IAExC,IAAI,aAAa;;4BAIhB;IAED,IAAI,mBAAmB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAGtE;IAED,SAAS,KAAK,UAAU,WAEvB;IAED,SAAS,KAAK,WAAW,WAExB;IAUD,OAAO;IAqCD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAM3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAIrC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqChG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQpG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO1H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO;IAIlI,SAAS,CAAC,SAAS;;;;IAWnB,SAAS,CAAC,SAAS;;;;cAWM,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;cAOtC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAK7D"}
1
+ {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAEL,YAAY,EACZ,eAAe,EAGf,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAyB,OAAO,EAAY,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAAE,UAAU,SAAS,eAAe,GAAG,eAAe,CACrI,SAAQ,cAAc,CAAC,OAAO,EAAE,UAAU,CAC1C,YAAW,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;IAE5C,OAAgB,aAAa,WAA6B;IAE1D,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAK;IACzC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACtD,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAK;IAC3D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAK;IAEvD,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAqB;IAExC,IAAI,aAAa;;4BAIhB;IAED,IAAI,mBAAmB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAGtE;IAED,SAAS,KAAK,UAAU,WAEvB;IAED,SAAS,KAAK,WAAW,WAExB;IAUD,OAAO;IAqCD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAM3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAIrC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqChG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWpG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO1H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO;IAIlI,SAAS,CAAC,SAAS;;;;IAWnB,SAAS,CAAC,SAAS;;;;cAWM,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;cAOtC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAK7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAEL,YAAY,EACZ,eAAe,EAGf,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAyB,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAAE,UAAU,SAAS,eAAe,GAAG,eAAe,CACrI,SAAQ,cAAc,CAAC,OAAO,EAAE,UAAU,CAC1C,YAAW,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;IAE5C,OAAgB,aAAa,WAA6B;IAE1D,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAK;IACzC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACtD,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAK;IAC3D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAK;IAEvD,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAqB;IAExC,IAAI,aAAa;;4BAIhB;IAED,IAAI,mBAAmB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAGtE;IAED,SAAS,KAAK,UAAU,WAEvB;IAED,SAAS,KAAK,WAAW,WAExB;IAUD,OAAO;IAqCD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAM3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAIrC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqChG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQpG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO1H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO;IAIlI,SAAS,CAAC,SAAS;;;;IAWnB,SAAS,CAAC,SAAS;;;;cAWM,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;cAOtC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAK7D"}
1
+ {"version":3,"file":"PubSubBridge.d.ts","sourceRoot":"","sources":["../../src/PubSubBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAEL,YAAY,EACZ,eAAe,EAGf,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAyB,OAAO,EAAY,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,qBACa,YAAY,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAAE,UAAU,SAAS,eAAe,GAAG,eAAe,CACrI,SAAQ,cAAc,CAAC,OAAO,EAAE,UAAU,CAC1C,YAAW,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;IAE5C,OAAgB,aAAa,WAA6B;IAE1D,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAK;IACzC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAK;IACjD,SAAS,CAAC,oCAAoC,EAAE,MAAM,CAAK;IAC3D,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACtD,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAK;IAC3D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAK;IAEvD,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAqB;IAExC,IAAI,aAAa;;4BAIhB;IAED,IAAI,mBAAmB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAGtE;IAED,SAAS,KAAK,UAAU,WAEvB;IAED,SAAS,KAAK,WAAW,WAExB;IAUD,OAAO;IAqCD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAM3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAIrC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqChG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAWpG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO1H,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO;IAIlI,SAAS,CAAC,SAAS;;;;IAWnB,SAAS,CAAC,SAAS;;;;cAWM,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;cAOtC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAK7D"}
@@ -38,7 +38,7 @@ var import_assert4 = require("@xylabs/assert");
38
38
  var import_abstract_bridge = require("@xyo-network/abstract-bridge");
39
39
  var import_manifest_model = require("@xyo-network/manifest-model");
40
40
  var import_module_model3 = require("@xyo-network/module-model");
41
- var import_payload_model2 = require("@xyo-network/payload-model");
41
+ var import_payload_model = require("@xyo-network/payload-model");
42
42
  var import_lru_cache2 = require("lru-cache");
43
43
 
44
44
  // src/AsyncQueryBus/AsyncQueryBusClient.ts
@@ -187,10 +187,10 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
187
187
  address
188
188
  ]
189
189
  };
190
- const routedQuery = {
190
+ const routedQuery = await import_payload_builder.PayloadBuilder.build({
191
191
  ...query,
192
192
  $meta
193
- };
193
+ });
194
194
  const queryArchivist = await this.queriesArchivist();
195
195
  const sourceAddress = query.addresses.at(0);
196
196
  if (sourceAddress && !this.config.listeningModules?.includes(sourceAddress)) {
@@ -241,7 +241,7 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
241
241
  routedQuery,
242
242
  [],
243
243
  [
244
- error
244
+ await import_payload_builder.PayloadBuilder.build(error)
245
245
  ]
246
246
  ]);
247
247
  return;
@@ -301,15 +301,14 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
301
301
  divinerQuery
302
302
  ]);
303
303
  if (result && result.length > 0) {
304
- const response = result.find(import_boundwitness_model.isBoundWitness);
304
+ const response = result.find(import_boundwitness_model.isBoundWitnessWithMeta);
305
305
  if (response && response?.$meta?.sourceQuery === sourceQuery) {
306
306
  this.logger?.debug(`Found response to query: ${sourceQuery}`);
307
307
  const payloads = response.payload_hashes?.length > 0 ? await responseArchivist.get(response.payload_hashes) : [];
308
- const errors = [];
309
308
  this.queryCache.set(sourceQuery, [
310
309
  response,
311
310
  payloads,
312
- errors
311
+ []
313
312
  ]);
314
313
  }
315
314
  }
@@ -324,10 +323,8 @@ var import_assert3 = require("@xylabs/assert");
324
323
  var import_timer2 = require("@xylabs/timer");
325
324
  var import_boundwitness_model2 = require("@xyo-network/boundwitness-model");
326
325
  var import_diviner_boundwitness_model2 = require("@xyo-network/diviner-boundwitness-model");
327
- var import_hash = require("@xyo-network/hash");
328
326
  var import_module_model2 = require("@xyo-network/module-model");
329
327
  var import_payload_builder2 = require("@xyo-network/payload-builder");
330
- var import_payload_model = require("@xyo-network/payload-model");
331
328
  var AsyncQueryBusServer = class extends AsyncQueryBusBase {
332
329
  static {
333
330
  __name(this, "AsyncQueryBusServer");
@@ -371,7 +368,7 @@ var AsyncQueryBusServer = class extends AsyncQueryBusBase {
371
368
  if (localModule.queries.includes(querySchema)) {
372
369
  const commandPayloads = await queryArchivist.get(command.payload_hashes);
373
370
  const commandPayloadsDict = await import_payload_builder2.PayloadBuilder.toAllHashMap(commandPayloads);
374
- const commandHash = (0, import_payload_model.isPayloadWithHash)(command) ? command.$hash : await import_hash.PayloadHasher.hash(command);
371
+ const commandHash = (await import_payload_builder2.PayloadBuilder.build(command)).$hash;
375
372
  if (!(0, import_array.containsAll)(Object.keys(commandPayloadsDict), command.payload_hashes)) {
376
373
  this.logger?.error(`Error processing command ${commandHash} for module ${localModuleName}, missing payloads`);
377
374
  return;
@@ -421,7 +418,7 @@ var AsyncQueryBusServer = class extends AsyncQueryBusBase {
421
418
  const result = await queryBoundWitnessDiviner.divine([
422
419
  divinerQuery
423
420
  ]);
424
- const commands = result.filter(import_boundwitness_model2.isQueryBoundWitness);
421
+ const commands = result.filter(import_boundwitness_model2.isQueryBoundWitnessWithMeta);
425
422
  const nextState = Math.max(...commands.map((c) => c.timestamp ?? 0));
426
423
  await this.commitState(address, nextState);
427
424
  return commands;
@@ -560,7 +557,7 @@ var PubSubBridge = class extends import_abstract_bridge.AbstractBridge {
560
557
  };
561
558
  const boundQuery = await this.bindQuery(queryPayload);
562
559
  const manifest = (0, import_assert4.assertEx)(await this.targetQuery(addressToCall, boundQuery[0], boundQuery[1]), () => `Unable to resolve [${address}]`)[1];
563
- return (0, import_assert4.assertEx)(manifest.find((0, import_payload_model2.isPayloadOfSchemaType)(import_manifest_model.ModuleManifestPayloadSchema)), "Did not receive manifest");
560
+ return (0, import_assert4.assertEx)(manifest.find((0, import_payload_model.isPayloadOfSchemaType)(import_manifest_model.ModuleManifestPayloadSchema)), "Did not receive manifest");
564
561
  }
565
562
  targetQueries(address) {
566
563
  if (!this.connected)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/PubSubBridge.ts","../../src/AsyncQueryBus/AsyncQueryBusClient.ts","../../src/AsyncQueryBus/AsyncQueryBusBase.ts","../../src/AsyncQueryBus/Config.ts","../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"sourcesContent":["export * from './Config'\nexport * from './Params'\nexport * from './PubSubBridge'\nexport * from './Schema'\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 { AsyncQueryBusConfig } 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 AsyncQueryBusConfig & TConfig,\n TSchema extends string ? TSchema : PubSubBridgeConfigSchema\n>\n","import { assertEx } from '@xylabs/assert'\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 } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { AsyncQueryBusClient, AsyncQueryBusServer } 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: string = ''\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 _busServer?: AsyncQueryBusServer\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(): string {\n return this.rootAddress\n }\n\n override targetConfig(address: string): ModuleConfig {\n return assertEx(this._targetConfigs[address], () => `targetConfig not set [${address}]`)\n }\n\n override async targetDiscover(address?: string | 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((payload) => payload.schema === ConfigSchema) as ConfigPayload,\n // () => `Discover did not return a [${ConfigSchema}] payload`,\n // ).config\n // this._targetConfigs[addressToDiscover] = assertEx(\n // discover.find((payload) => payload.schema === 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: string, 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(manifest.find(isPayloadOfSchemaType(ModuleManifestPayloadSchema)), 'Did not receive manifest') as ModuleManifestPayload\n }\n\n override targetQueries(address: string): 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: string, 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: string, _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,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busClient\n }\n\n protected busServer() {\n if (!this._busServer) {\n this._busServer = new AsyncQueryBusServer({\n config: this.config,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busServer\n }\n\n protected override async startHandler(): Promise<boolean> {\n await Promise.resolve(this.connect())\n this.busServer().start()\n this.busClient().start()\n return true\n }\n\n protected override stopHandler(_timeout?: number | undefined) {\n this.busClient().stop()\n this.busServer().stop()\n return true\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { clearTimeoutEx, setTimeoutEx } from '@xylabs/timer'\nimport { isBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { asModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { ModuleError, Payload, WithMeta } from '@xyo-network/payload-model'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { Pending } from './Config'\nimport { AsyncQueryBusParams } from './Params'\n\nexport class AsyncQueryBusClient<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends AsyncQueryBusBase<TParams> {\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get started() {\n return !!this._pollId\n }\n\n async listeningModules() {\n const mods = this.config.listeningModules\n ? await Promise.all(\n this.config.listeningModules.map(async (listeningModule) =>\n assertEx(\n asModuleInstance(await this.resolver.resolve(listeningModule)),\n () => `Unable to resolve all listeningModule [${listeningModule}]`,\n ),\n ),\n )\n : await this.resolver.resolve({ direction: 'all' })\n return mods\n }\n\n async send(address: string, 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 = { ...query, $meta }\n const queryArchivist = await this.queriesArchivist()\n\n const sourceAddress = query.addresses.at(0)\n if (sourceAddress && !this.config.listeningModules?.includes(sourceAddress)) {\n this.config.listeningModules?.push(sourceAddress)\n }\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 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, [], [error]])\n return\n }\n forget(pollForResponse())\n })\n return context\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 /**\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 = { schema: BoundWitnessDivinerQuerySchema, sourceQuery }\n const result = await responseBoundWitnessDiviner.divine([divinerQuery])\n if (result && result.length > 0) {\n const response = result.find(isBoundWitness)\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 = response.payload_hashes?.length > 0 ? await responseArchivist.get(response.payload_hashes) : []\n const errors: ModuleError[] = []\n this.queryCache.set(sourceQuery, [response, payloads, errors])\n }\n }\n }\n }),\n )\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Base } from '@xylabs/object'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport { CacheConfig } from '@xyo-network/bridge-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleConfig, ModuleQueryResult } from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { Pending } from './Config'\nimport { AsyncQueryBusParams } from './Params'\n\nexport class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends Base<TParams> {\n protected _lastState?: LRUCache<string, number>\n protected _queryCache?: LRUCache<string, Pending | ModuleQueryResult>\n protected _targetConfigs: Record<string, ModuleConfig> = {}\n protected _targetQueries: Record<string, string[]> = {}\n\n constructor(params: TParams) {\n super(params)\n }\n\n get config() {\n return this.params.config\n }\n\n get individualAddressBatchQueryLimitConfig(): number {\n return this.config.individualAddressBatchQueryLimit ?? 10\n }\n\n get pollFrequencyConfig(): number {\n return this.config.pollFrequency ?? 1000\n }\n\n get queryCacheConfig(): LRUCache.Options<string, 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 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<string, number> {\n const requiredConfig = { max: 1000, ttl: 0 }\n this._lastState = this._lastState ?? new LRUCache<string, number>(requiredConfig)\n return this._lastState\n }\n\n /**\n * A cache of queries that have been issued\n */\n protected get queryCache(): LRUCache<string, Pending | ModuleQueryResult> {\n const config = this.queryCacheConfig\n const requiredConfig = { noUpdateTTL: false, ttlAutopurge: true }\n this._queryCache = this._queryCache ?? new LRUCache<string, Pending | ModuleQueryResult>({ ...config, ...requiredConfig })\n return this._queryCache\n }\n\n async queriesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config.queries?.archivist)),\n () => `Unable to resolve queriesArchivist [${this.config.queries?.archivist}]`,\n )\n }\n\n async queriesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config.queries?.boundWitnessDiviner)),\n () => `Unable to resolve queriesDiviner [${this.config.queries?.boundWitnessDiviner}]`,\n )\n }\n\n async responsesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config.responses?.archivist)),\n () => `Unable to resolve responsesArchivist [${this.config.responses?.archivist}]`,\n )\n }\n\n async responsesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config.responses?.boundWitnessDiviner)),\n () => `Unable to resolve responsesDiviner [${this.config.responses?.boundWitnessDiviner}]`,\n )\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: string, 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: string): 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'\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<TArchivist = string, TDiviner = string> {\n /**\n * Name/Address of the archivist where intermediate communications are stored\n */\n archivist: TArchivist\n /**\n * Name/Address of the diviner where intermediate communications are filtered\n */\n boundWitnessDiviner: TDiviner\n}\n\n/**\n * Configuration for the mutually accessible\n * modules between the modules being connected\n */\nexport interface Intermediary<TArchivist = string, TDiviner = string> {\n /**\n * Name/Address of the archivist where intermediate communications are stored\n */\n archivist: TArchivist\n /**\n * Name/Address of the diviner where intermediate communications are filtered\n */\n boundWitnessDiviner: TDiviner\n}\n\nexport interface AsyncQueryBusConfig<TArchivist = string, TDiviner = string> {\n /**\n * How many queries to process at once when retrieving queries\n * for an address\n */\n individualAddressBatchQueryLimit?: number\n\n listeningModules?: string[]\n\n /**\n * How often to poll for new queries/responses\n */\n pollFrequency?: number\n /**\n * Configuration for intermediary query storage\n */\n queries?: Intermediary<TArchivist, TDiviner>\n\n /**\n * Configuration for intermediary response storage\n */\n queryCache?: CacheConfig | true\n\n /**\n * Configuration for intermediary response storage\n */\n responses?: Intermediary<TArchivist, TDiviner>\n\n /**\n * The root address to connect the bridge to\n */\n rootAddress?: string\n\n /**\n * Where the archivist should persist its internal state\n */\n stateStore?: SearchableStorage<TArchivist, TDiviner>\n}\n","import { containsAll } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\nimport { clearTimeoutEx, setTimeoutEx } from '@xylabs/timer'\nimport { isQueryBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { asModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { isPayloadWithHash } from '@xyo-network/payload-model'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { AsyncQueryBusParams } from './Params'\n\nexport class AsyncQueryBusServer<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends AsyncQueryBusBase<TParams> {\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get started() {\n return !!this._pollId\n }\n\n async listeningModules() {\n const mods = 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({ direction: 'all' })\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, command: QueryBoundWitness) => {\n const localModuleName = localModule.config.name ?? localModule.address\n const queryArchivist = await this.queriesArchivist()\n const responseArchivist = await this.responsesArchivist()\n const commandDestination = (command.$meta as { destination?: string[] })?.destination\n if (commandDestination && commandDestination?.includes(localModule.address)) {\n // Find the query\n const queryIndex = command.payload_hashes.indexOf(command.query)\n if (queryIndex !== -1) {\n const querySchema = command.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(command.payload_hashes)\n const commandPayloadsDict = await PayloadBuilder.toAllHashMap(commandPayloads)\n const commandHash = isPayloadWithHash(command) ? command.$hash : await PayloadHasher.hash(command)\n // Check that we have all the arguments for the command\n if (!containsAll(Object.keys(commandPayloadsDict), command.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[command.query].schema\n this.logger?.debug(`Issuing command ${commandSchema} (${commandHash}) addressed to module: ${localModuleName}`)\n const response = await localModule.query(command, 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 (command?.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, command.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 findCommandsToAddress = async (address: string) => {\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.individualAddressBatchQueryLimitConfig\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 commands = result.filter(isQueryBoundWitness)\n const nextState = Math.max(...commands.map((c) => c.timestamp ?? 0))\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 commands\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 commands = await this.findCommandsToAddress(localModule.address)\n if (commands.length === 0) return\n this.logger?.debug(`Found commands addressed to local module: ${localModuleName}`)\n for (const command of commands) {\n await this.callLocalModule(localModule, command)\n }\n } catch (error) {\n this.logger?.error(`Error processing commands for address ${localModule.address}: ${error}`)\n }\n }),\n )\n }\n}\n"],"mappings":"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","names":["PubSubBridgeSchema","PubSubBridgeConfigSchema","PubSubBridgeSchema","import_assert","import_module_model","import_payload_model","import_lru_cache","import_assert","AsyncQueryBusBase","Base","_lastState","_queryCache","_targetConfigs","_targetQueries","constructor","params","config","individualAddressBatchQueryLimitConfig","individualAddressBatchQueryLimit","pollFrequencyConfig","pollFrequency","queryCacheConfig","queryCache","max","ttl","resolver","lastState","requiredConfig","LRUCache","noUpdateTTL","ttlAutopurge","queriesArchivist","assertEx","asArchivistInstance","resolve","queries","archivist","queriesDiviner","asDivinerInstance","boundWitnessDiviner","responsesArchivist","responses","responsesDiviner","commitState","address","nextState","Promise","get","set","retrieveState","state","undefined","newState","Date","now","Pending","AsyncQueryBusClient","AsyncQueryBusBase","_pollId","constructor","params","started","listeningModules","mods","config","Promise","all","map","listeningModule","assertEx","asModuleInstance","resolver","resolve","direction","send","address","query","payloads","logger","debug","$meta","destination","routedQuery","queryArchivist","queriesArchivist","sourceAddress","addresses","at","includes","push","routedQueryHash","$hash","Object","keys","PayloadBuilder","toDataHashMap","data","insertResult","insert","queryCache","set","Pending","Error","context","pollForResponse","response","get","undefined","delay","error","message","schema","sources","forget","start","console","warn","poll","stop","clearTimeoutEx","setTimeoutEx","processIncomingResponses","e","pollFrequencyConfig","responseArchivist","responsesArchivist","responseBoundWitnessDiviner","responsesDiviner","pendingCommands","entries","filter","_","status","allSettled","sourceQuery","divinerQuery","BoundWitnessDivinerQuerySchema","result","divine","length","find","isBoundWitness","payload_hashes","errors","import_assert","import_timer","import_boundwitness_model","import_diviner_boundwitness_model","import_module_model","import_payload_builder","AsyncQueryBusServer","AsyncQueryBusBase","_pollId","constructor","params","started","listeningModules","mods","config","Promise","all","map","listeningModule","assertEx","asModuleInstance","resolver","resolve","direction","start","console","warn","poll","stop","clearTimeoutEx","undefined","callLocalModule","localModule","command","localModuleName","name","address","queryArchivist","queriesArchivist","responseArchivist","responsesArchivist","commandDestination","$meta","destination","includes","queryIndex","payload_hashes","indexOf","query","querySchema","payload_schemas","queries","commandPayloads","get","commandPayloadsDict","PayloadBuilder","toAllHashMap","commandHash","isPayloadWithHash","$hash","PayloadHasher","hash","containsAll","Object","keys","logger","error","commandSchema","schema","debug","response","bw","payloads","errors","insertResult","insert","length","timestamp","commitState","findCommandsToAddress","queryBoundWitnessDiviner","queriesDiviner","retrieveState","limit","individualAddressBatchQueryLimitConfig","divinerQuery","BoundWitnessDivinerQuerySchema","sort","result","divine","commands","filter","isQueryBoundWitness","nextState","Math","max","c","setTimeoutEx","processIncomingQueries","e","pollFrequencyConfig","localModules","allSettled","moduleName","PubSubBridge","AbstractBridge","configSchemas","PubSubBridgeConfigSchema","_configRootAddress","_configStateStoreArchivist","_configStateStoreBoundWitnessDiviner","_discoverCache","_lastState","_targetConfigs","_targetQueries","_busClient","_busServer","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","resolver","busServer","AsyncQueryBusServer","startHandler","start","stopHandler","_timeout","stop","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/PubSubBridge.ts","../../src/AsyncQueryBus/AsyncQueryBusClient.ts","../../src/AsyncQueryBus/AsyncQueryBusBase.ts","../../src/AsyncQueryBus/Config.ts","../../src/AsyncQueryBus/AsyncQueryBusServer.ts"],"sourcesContent":["export * from './Config'\nexport * from './Params'\nexport * from './PubSubBridge'\nexport * from './Schema'\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 { AsyncQueryBusConfig } 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 AsyncQueryBusConfig & TConfig,\n TSchema extends string ? TSchema : PubSubBridgeConfigSchema\n>\n","import { assertEx } from '@xylabs/assert'\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, AsyncQueryBusServer } 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: string = ''\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 _busServer?: AsyncQueryBusServer\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(): string {\n return this.rootAddress\n }\n\n override targetConfig(address: string): ModuleConfig {\n return assertEx(this._targetConfigs[address], () => `targetConfig not set [${address}]`)\n }\n\n override async targetDiscover(address?: string | 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((payload) => payload.schema === ConfigSchema) as ConfigPayload,\n // () => `Discover did not return a [${ConfigSchema}] payload`,\n // ).config\n // this._targetConfigs[addressToDiscover] = assertEx(\n // discover.find((payload) => payload.schema === 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: string, 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: string): 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: string, 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: string, _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,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busClient\n }\n\n protected busServer() {\n if (!this._busServer) {\n this._busServer = new AsyncQueryBusServer({\n config: this.config,\n logger: this.logger,\n resolver: this,\n })\n }\n return this._busServer\n }\n\n protected override async startHandler(): Promise<boolean> {\n await Promise.resolve(this.connect())\n this.busServer().start()\n this.busClient().start()\n return true\n }\n\n protected override stopHandler(_timeout?: number | undefined) {\n this.busClient().stop()\n this.busServer().stop()\n return true\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { clearTimeoutEx, setTimeoutEx } from '@xylabs/timer'\nimport { isBoundWitnessWithMeta, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessDivinerQuerySchema } from '@xyo-network/diviner-boundwitness-model'\nimport { asModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { ModuleError, Payload, WithMeta } from '@xyo-network/payload-model'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { Pending } from './Config'\nimport { AsyncQueryBusParams } from './Params'\n\nexport class AsyncQueryBusClient<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends AsyncQueryBusBase<TParams> {\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get started() {\n return !!this._pollId\n }\n\n async listeningModules() {\n const mods = this.config.listeningModules\n ? await Promise.all(\n this.config.listeningModules.map(async (listeningModule) =>\n assertEx(\n asModuleInstance(await this.resolver.resolve(listeningModule)),\n () => `Unable to resolve all listeningModule [${listeningModule}]`,\n ),\n ),\n )\n : await this.resolver.resolve({ direction: 'all' })\n return mods\n }\n\n async send(address: string, 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 const sourceAddress = query.addresses.at(0)\n if (sourceAddress && !this.config.listeningModules?.includes(sourceAddress)) {\n this.config.listeningModules?.push(sourceAddress)\n }\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 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 }\n forget(pollForResponse())\n })\n return context\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 /**\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 = { 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 = 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","import { assertEx } from '@xylabs/assert'\nimport { Base } from '@xylabs/object'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport { CacheConfig } from '@xyo-network/bridge-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleConfig, ModuleQueryResult } from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { Pending } from './Config'\nimport { AsyncQueryBusParams } from './Params'\n\nexport class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends Base<TParams> {\n protected _lastState?: LRUCache<string, number>\n protected _queryCache?: LRUCache<string, Pending | ModuleQueryResult>\n protected _targetConfigs: Record<string, ModuleConfig> = {}\n protected _targetQueries: Record<string, string[]> = {}\n\n constructor(params: TParams) {\n super(params)\n }\n\n get config() {\n return this.params.config\n }\n\n get individualAddressBatchQueryLimitConfig(): number {\n return this.config.individualAddressBatchQueryLimit ?? 10\n }\n\n get pollFrequencyConfig(): number {\n return this.config.pollFrequency ?? 1000\n }\n\n get queryCacheConfig(): LRUCache.Options<string, 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 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<string, number> {\n const requiredConfig = { max: 1000, ttl: 0 }\n this._lastState = this._lastState ?? new LRUCache<string, number>(requiredConfig)\n return this._lastState\n }\n\n /**\n * A cache of queries that have been issued\n */\n protected get queryCache(): LRUCache<string, Pending | ModuleQueryResult> {\n const config = this.queryCacheConfig\n const requiredConfig = { noUpdateTTL: false, ttlAutopurge: true }\n this._queryCache = this._queryCache ?? new LRUCache<string, Pending | ModuleQueryResult>({ ...config, ...requiredConfig })\n return this._queryCache\n }\n\n async queriesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config.queries?.archivist)),\n () => `Unable to resolve queriesArchivist [${this.config.queries?.archivist}]`,\n )\n }\n\n async queriesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config.queries?.boundWitnessDiviner)),\n () => `Unable to resolve queriesDiviner [${this.config.queries?.boundWitnessDiviner}]`,\n )\n }\n\n async responsesArchivist() {\n return assertEx(\n asArchivistInstance(await this.resolver.resolve(this.config.responses?.archivist)),\n () => `Unable to resolve responsesArchivist [${this.config.responses?.archivist}]`,\n )\n }\n\n async responsesDiviner() {\n return assertEx(\n asDivinerInstance(await this.resolver.resolve(this.config.responses?.boundWitnessDiviner)),\n () => `Unable to resolve responsesDiviner [${this.config.responses?.boundWitnessDiviner}]`,\n )\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: string, 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: string): 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'\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<TArchivist = string, TDiviner = string> {\n /**\n * Name/Address of the archivist where intermediate communications are stored\n */\n archivist: TArchivist\n /**\n * Name/Address of the diviner where intermediate communications are filtered\n */\n boundWitnessDiviner: TDiviner\n}\n\n/**\n * Configuration for the mutually accessible\n * modules between the modules being connected\n */\nexport interface Intermediary<TArchivist = string, TDiviner = string> {\n /**\n * Name/Address of the archivist where intermediate communications are stored\n */\n archivist: TArchivist\n /**\n * Name/Address of the diviner where intermediate communications are filtered\n */\n boundWitnessDiviner: TDiviner\n}\n\nexport interface AsyncQueryBusConfig<TArchivist = string, TDiviner = string> {\n /**\n * How many queries to process at once when retrieving queries\n * for an address\n */\n individualAddressBatchQueryLimit?: number\n\n listeningModules?: string[]\n\n /**\n * How often to poll for new queries/responses\n */\n pollFrequency?: number\n /**\n * Configuration for intermediary query storage\n */\n queries?: Intermediary<TArchivist, TDiviner>\n\n /**\n * Configuration for intermediary response storage\n */\n queryCache?: CacheConfig | true\n\n /**\n * Configuration for intermediary response storage\n */\n responses?: Intermediary<TArchivist, TDiviner>\n\n /**\n * The root address to connect the bridge to\n */\n rootAddress?: string\n\n /**\n * Where the archivist should persist its internal state\n */\n stateStore?: SearchableStorage<TArchivist, TDiviner>\n}\n","import { containsAll } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\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'\n\nimport { AsyncQueryBusBase } from './AsyncQueryBusBase'\nimport { AsyncQueryBusParams } from './Params'\n\nexport class AsyncQueryBusServer<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends AsyncQueryBusBase<TParams> {\n private _pollId?: string\n\n constructor(params: TParams) {\n super(params)\n }\n\n get started() {\n return !!this._pollId\n }\n\n async listeningModules() {\n const mods = 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({ direction: 'all' })\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, command: QueryBoundWitness) => {\n const localModuleName = localModule.config.name ?? localModule.address\n const queryArchivist = await this.queriesArchivist()\n const responseArchivist = await this.responsesArchivist()\n const commandDestination = (command.$meta as { destination?: string[] })?.destination\n if (commandDestination && commandDestination?.includes(localModule.address)) {\n // Find the query\n const queryIndex = command.payload_hashes.indexOf(command.query)\n if (queryIndex !== -1) {\n const querySchema = command.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(command.payload_hashes)\n const commandPayloadsDict = await PayloadBuilder.toAllHashMap(commandPayloads)\n const commandHash = (await PayloadBuilder.build(command)).$hash\n // Check that we have all the arguments for the command\n if (!containsAll(Object.keys(commandPayloadsDict), command.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[command.query].schema\n this.logger?.debug(`Issuing command ${commandSchema} (${commandHash}) addressed to module: ${localModuleName}`)\n const response = await localModule.query(command, 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 (command?.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, command.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 findCommandsToAddress = async (address: string) => {\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.individualAddressBatchQueryLimitConfig\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 commands = result.filter(isQueryBoundWitnessWithMeta)\n const nextState = Math.max(...commands.map((c) => c.timestamp ?? 0))\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 commands\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 commands = await this.findCommandsToAddress(localModule.address)\n if (commands.length === 0) return\n this.logger?.debug(`Found commands addressed to local module: ${localModuleName}`)\n for (const command of commands) {\n await this.callLocalModule(localModule, command)\n }\n } catch (error) {\n this.logger?.error(`Error processing commands for address ${localModule.address}: ${error}`)\n }\n }),\n )\n }\n}\n"],"mappings":"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","names":["PubSubBridgeSchema","PubSubBridgeConfigSchema","PubSubBridgeSchema","import_assert","import_module_model","import_lru_cache","import_assert","AsyncQueryBusBase","Base","_lastState","_queryCache","_targetConfigs","_targetQueries","constructor","params","config","individualAddressBatchQueryLimitConfig","individualAddressBatchQueryLimit","pollFrequencyConfig","pollFrequency","queryCacheConfig","queryCache","max","ttl","resolver","lastState","requiredConfig","LRUCache","noUpdateTTL","ttlAutopurge","queriesArchivist","assertEx","asArchivistInstance","resolve","queries","archivist","queriesDiviner","asDivinerInstance","boundWitnessDiviner","responsesArchivist","responses","responsesDiviner","commitState","address","nextState","Promise","get","set","retrieveState","state","undefined","newState","Date","now","Pending","AsyncQueryBusClient","AsyncQueryBusBase","_pollId","constructor","params","started","listeningModules","mods","config","Promise","all","map","listeningModule","assertEx","asModuleInstance","resolver","resolve","direction","send","address","query","payloads","logger","debug","$meta","destination","routedQuery","PayloadBuilder","build","queryArchivist","queriesArchivist","sourceAddress","addresses","at","includes","push","routedQueryHash","$hash","Object","keys","toDataHashMap","data","insertResult","insert","queryCache","set","Pending","Error","context","pollForResponse","response","get","undefined","delay","error","message","schema","sources","forget","start","console","warn","poll","stop","clearTimeoutEx","setTimeoutEx","processIncomingResponses","e","pollFrequencyConfig","responseArchivist","responsesArchivist","responseBoundWitnessDiviner","responsesDiviner","pendingCommands","entries","filter","_","status","allSettled","sourceQuery","divinerQuery","BoundWitnessDivinerQuerySchema","result","divine","length","find","isBoundWitnessWithMeta","payload_hashes","import_assert","import_timer","import_boundwitness_model","import_diviner_boundwitness_model","import_module_model","import_payload_builder","AsyncQueryBusServer","AsyncQueryBusBase","_pollId","constructor","params","started","listeningModules","mods","config","Promise","all","map","listeningModule","assertEx","asModuleInstance","resolver","resolve","direction","start","console","warn","poll","stop","clearTimeoutEx","undefined","callLocalModule","localModule","command","localModuleName","name","address","queryArchivist","queriesArchivist","responseArchivist","responsesArchivist","commandDestination","$meta","destination","includes","queryIndex","payload_hashes","indexOf","query","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","findCommandsToAddress","queryBoundWitnessDiviner","queriesDiviner","retrieveState","limit","individualAddressBatchQueryLimitConfig","divinerQuery","BoundWitnessDivinerQuerySchema","sort","result","divine","commands","filter","isQueryBoundWitnessWithMeta","nextState","Math","max","c","setTimeoutEx","processIncomingQueries","e","pollFrequencyConfig","localModules","allSettled","moduleName","PubSubBridge","AbstractBridge","configSchemas","PubSubBridgeConfigSchema","_configRootAddress","_configStateStoreArchivist","_configStateStoreBoundWitnessDiviner","_discoverCache","_lastState","_targetConfigs","_targetQueries","_busClient","_busServer","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","resolver","busServer","AsyncQueryBusServer","startHandler","start","stopHandler","_timeout","stop","creatableModule"]}
@@ -20,7 +20,7 @@ import { assertEx as assertEx2 } from "@xylabs/assert";
20
20
  import { delay } from "@xylabs/delay";
21
21
  import { forget } from "@xylabs/forget";
22
22
  import { clearTimeoutEx, setTimeoutEx } from "@xylabs/timer";
23
- import { isBoundWitness } from "@xyo-network/boundwitness-model";
23
+ import { isBoundWitnessWithMeta } from "@xyo-network/boundwitness-model";
24
24
  import { BoundWitnessDivinerQuerySchema } from "@xyo-network/diviner-boundwitness-model";
25
25
  import { asModuleInstance } from "@xyo-network/module-model";
26
26
  import { PayloadBuilder } from "@xyo-network/payload-builder";
@@ -161,10 +161,10 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
161
161
  address
162
162
  ]
163
163
  };
164
- const routedQuery = {
164
+ const routedQuery = await PayloadBuilder.build({
165
165
  ...query,
166
166
  $meta
167
- };
167
+ });
168
168
  const queryArchivist = await this.queriesArchivist();
169
169
  const sourceAddress = query.addresses.at(0);
170
170
  if (sourceAddress && !this.config.listeningModules?.includes(sourceAddress)) {
@@ -215,7 +215,7 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
215
215
  routedQuery,
216
216
  [],
217
217
  [
218
- error
218
+ await PayloadBuilder.build(error)
219
219
  ]
220
220
  ]);
221
221
  return;
@@ -275,15 +275,14 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
275
275
  divinerQuery
276
276
  ]);
277
277
  if (result && result.length > 0) {
278
- const response = result.find(isBoundWitness);
278
+ const response = result.find(isBoundWitnessWithMeta);
279
279
  if (response && response?.$meta?.sourceQuery === sourceQuery) {
280
280
  this.logger?.debug(`Found response to query: ${sourceQuery}`);
281
281
  const payloads = response.payload_hashes?.length > 0 ? await responseArchivist.get(response.payload_hashes) : [];
282
- const errors = [];
283
282
  this.queryCache.set(sourceQuery, [
284
283
  response,
285
284
  payloads,
286
- errors
285
+ []
287
286
  ]);
288
287
  }
289
288
  }
@@ -296,12 +295,10 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
296
295
  import { containsAll } from "@xylabs/array";
297
296
  import { assertEx as assertEx3 } from "@xylabs/assert";
298
297
  import { clearTimeoutEx as clearTimeoutEx2, setTimeoutEx as setTimeoutEx2 } from "@xylabs/timer";
299
- import { isQueryBoundWitness } from "@xyo-network/boundwitness-model";
298
+ import { isQueryBoundWitnessWithMeta } from "@xyo-network/boundwitness-model";
300
299
  import { BoundWitnessDivinerQuerySchema as BoundWitnessDivinerQuerySchema2 } from "@xyo-network/diviner-boundwitness-model";
301
- import { PayloadHasher } from "@xyo-network/hash";
302
300
  import { asModuleInstance as asModuleInstance2 } from "@xyo-network/module-model";
303
301
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
304
- import { isPayloadWithHash } from "@xyo-network/payload-model";
305
302
  var AsyncQueryBusServer = class extends AsyncQueryBusBase {
306
303
  static {
307
304
  __name(this, "AsyncQueryBusServer");
@@ -345,7 +342,7 @@ var AsyncQueryBusServer = class extends AsyncQueryBusBase {
345
342
  if (localModule.queries.includes(querySchema)) {
346
343
  const commandPayloads = await queryArchivist.get(command.payload_hashes);
347
344
  const commandPayloadsDict = await PayloadBuilder2.toAllHashMap(commandPayloads);
348
- const commandHash = isPayloadWithHash(command) ? command.$hash : await PayloadHasher.hash(command);
345
+ const commandHash = (await PayloadBuilder2.build(command)).$hash;
349
346
  if (!containsAll(Object.keys(commandPayloadsDict), command.payload_hashes)) {
350
347
  this.logger?.error(`Error processing command ${commandHash} for module ${localModuleName}, missing payloads`);
351
348
  return;
@@ -395,7 +392,7 @@ var AsyncQueryBusServer = class extends AsyncQueryBusBase {
395
392
  const result = await queryBoundWitnessDiviner.divine([
396
393
  divinerQuery
397
394
  ]);
398
- const commands = result.filter(isQueryBoundWitness);
395
+ const commands = result.filter(isQueryBoundWitnessWithMeta);
399
396
  const nextState = Math.max(...commands.map((c) => c.timestamp ?? 0));
400
397
  await this.commitState(address, nextState);
401
398
  return commands;