@xyo-network/bridge-pub-sub 2.94.16 → 2.94.17

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.
@@ -2,30 +2,24 @@ import { Address } from '@xylabs/hex';
2
2
  import { Base } from '@xylabs/object';
3
3
  import { ArchivistInstance } from '@xyo-network/archivist-model';
4
4
  import { DivinerInstance } from '@xyo-network/diviner-model';
5
- import { ModuleConfig } from '@xyo-network/module-model';
5
+ import { ModuleConfig, ModuleInstance } from '@xyo-network/module-model';
6
6
  import { LRUCache } from 'lru-cache';
7
7
  import { AsyncQueryBusParams } from './model';
8
8
  export declare class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = AsyncQueryBusParams> extends Base<TParams> {
9
9
  protected _lastState?: LRUCache<Address, number>;
10
10
  protected _targetConfigs: Record<Address, ModuleConfig>;
11
11
  protected _targetQueries: Record<Address, string[]>;
12
- private _lastQueriesArchivistAttempt?;
13
- private _lastQueriesDivinerAttempt?;
14
- private _lastResponsesArchivistAttempt?;
15
- private _lastResponsesDivinerAttempt?;
12
+ private _lastResolveAttempt;
16
13
  private _queriesArchivist?;
17
- private _queriesArchivistMutex;
18
14
  private _queriesDiviner?;
19
- private _queriesDivinerMutex;
20
15
  private _reResolveDelay;
16
+ private _resolveMutex;
21
17
  private _responsesArchivist?;
22
- private _responsesArchivistMutex;
23
18
  private _responsesDiviner?;
24
- private _responsesDivinerMutex;
25
19
  constructor(params: TParams);
26
20
  get config(): TParams['config'];
27
21
  get pollFrequencyConfig(): number;
28
- get resolver(): import("@xyo-network/module-model").ModuleResolver<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
22
+ get resolver(): import("@xyo-network/module-model").ModuleResolver<ModuleInstance<import("@xylabs/object").BaseParamsFields & {
29
23
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
30
24
  addToResolvers?: boolean | undefined;
31
25
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
@@ -84,37 +78,7 @@ export declare class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = Asy
84
78
  schema: "network.xyo.boundwitness";
85
79
  }, "schema"> & {
86
80
  schema: "network.xyo.boundwitness";
87
- }, import("@xyo-network/diviner-model").DivinerModuleEventData> | DivinerInstance<import("@xylabs/object").BaseParamsFields & {
88
- account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
89
- addToResolvers?: boolean | undefined;
90
- config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
91
- schema: "network.xyo.diviner.config";
92
- }, "schema"> & {
93
- schema: "network.xyo.diviner.config";
94
- }, "schema"> & {
95
- schema: string;
96
- };
97
- ephemeralQueryAccountEnabled?: boolean | undefined;
98
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[] | undefined;
99
- }, {
100
- schema: string;
101
- } & import("@xyo-network/payload-model").PayloadFields, {
102
- schema: string;
103
- } & import("@xyo-network/payload-model").PayloadFields, import("@xyo-network/diviner-model").DivinerModuleEventData<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
104
- account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
105
- addToResolvers?: boolean | undefined;
106
- config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
107
- schema: "network.xyo.module.config";
108
- }, "schema"> & {
109
- schema: string;
110
- };
111
- ephemeralQueryAccountEnabled?: boolean | undefined;
112
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[] | undefined;
113
- }, import("@xyo-network/module-model").ModuleEventData<object>>, {
114
- schema: string;
115
- } & import("@xyo-network/payload-model").PayloadFields, {
116
- schema: string;
117
- } & import("@xyo-network/payload-model").PayloadFields>> | undefined>;
81
+ }, import("@xyo-network/diviner-model").DivinerModuleEventData>>;
118
82
  responsesArchivist(): Promise<ArchivistInstance<import("@xylabs/object").BaseParamsFields & {
119
83
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
120
84
  addToResolvers?: boolean | undefined;
@@ -155,37 +119,7 @@ export declare class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = Asy
155
119
  schema: "network.xyo.diviner.boundwitness.query";
156
120
  }, import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
157
121
  schema: "network.xyo.boundwitness";
158
- }, import("@xyo-network/diviner-model").DivinerModuleEventData> | DivinerInstance<import("@xylabs/object").BaseParamsFields & {
159
- account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
160
- addToResolvers?: boolean | undefined;
161
- config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
162
- schema: "network.xyo.diviner.config";
163
- }, "schema"> & {
164
- schema: "network.xyo.diviner.config";
165
- }, "schema"> & {
166
- schema: string;
167
- };
168
- ephemeralQueryAccountEnabled?: boolean | undefined;
169
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[] | undefined;
170
- }, {
171
- schema: string;
172
- } & import("@xyo-network/payload-model").PayloadFields, {
173
- schema: string;
174
- } & import("@xyo-network/payload-model").PayloadFields, import("@xyo-network/diviner-model").DivinerModuleEventData<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
175
- account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
176
- addToResolvers?: boolean | undefined;
177
- config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
178
- schema: "network.xyo.module.config";
179
- }, "schema"> & {
180
- schema: string;
181
- };
182
- ephemeralQueryAccountEnabled?: boolean | undefined;
183
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[] | undefined;
184
- }, import("@xyo-network/module-model").ModuleEventData<object>>, {
185
- schema: string;
186
- } & import("@xyo-network/payload-model").PayloadFields, {
187
- schema: string;
188
- } & import("@xyo-network/payload-model").PayloadFields>> | undefined>;
122
+ }, import("@xyo-network/diviner-model").DivinerModuleEventData>>;
189
123
  /**
190
124
  * Commit the internal state of the process. This is similar
191
125
  * to a transaction completion in a database and should only be called
@@ -200,5 +134,6 @@ export declare class AsyncQueryBusBase<TParams extends AsyncQueryBusParams = Asy
200
134
  * preemptions, reboots, etc.
201
135
  */
202
136
  protected retrieveState(address: Address): Promise<number>;
137
+ private resolve;
203
138
  }
204
139
  //# sourceMappingURL=AsyncQueryBusBase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncQueryBusBase.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAgB,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAuB,MAAM,8BAA8B,CAAA;AAGrF,OAAO,EAAqB,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE7C,qBAAa,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,IAAI,CAAC,OAAO,CAAC;IAC7G,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAChD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAK;IAC5D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAK;IAExD,OAAO,CAAC,4BAA4B,CAAC,CAAQ;IAC7C,OAAO,CAAC,0BAA0B,CAAC,CAAQ;IAC3C,OAAO,CAAC,8BAA8B,CAAC,CAAQ;IAC/C,OAAO,CAAC,4BAA4B,CAAC,CAAQ;IAC7C,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAC7C,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,eAAe,CAAC,CAAgG;IACxH,OAAO,CAAC,oBAAoB,CAAc;IAC1C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAAC,CAAmB;IAC/C,OAAO,CAAC,wBAAwB,CAAc;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAA2F;IACrH,OAAO,CAAC,sBAAsB,CAAc;gBAEhC,MAAM,EAAE,OAAO;IAI3B,IAAI,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE9B;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,QAAQ;;;;;;;;;;qEAEX;IAED;;OAEG;IACH,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAInD;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;IAyBhB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyBd,kBAAkB;;;;;;;;;;;;;;;;;;IAyBlB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyBtB;;;;;;;OAOG;cACa,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;IAQ/D;;;OAGG;cACa,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAajE"}
1
+ {"version":3,"file":"AsyncQueryBusBase.d.ts","sourceRoot":"","sources":["../../../src/AsyncQueryBus/AsyncQueryBusBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAa,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAuB,MAAM,8BAA8B,CAAA;AAGrF,OAAO,EAAE,eAAe,EAAqB,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAoB,cAAc,EAAyB,MAAM,2BAA2B,CAAA;AAEjH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE7C,qBAAa,iBAAiB,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB,CAAE,SAAQ,IAAI,CAAC,OAAO,CAAC;IAC7G,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAChD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAK;IAC5D,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAK;IAExD,OAAO,CAAC,mBAAmB,CAAuC;IAClE,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAgG;IACxH,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,mBAAmB,CAAC,CAAmB;IAC/C,OAAO,CAAC,iBAAiB,CAAC,CAA2F;gBAEzG,MAAM,EAAE,OAAO;IAI3B,IAAI,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE9B;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,QAAQ;;;;;;;;;;qEAEX;IAED;;OAEG;IACH,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAInD;IAEK,gBAAgB;;;;;;;;;;;;;;;;;;IAUhB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;IAUd,kBAAkB;;;;;;;;;;;;;;;;;;IAUlB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;IAUtB;;;;;;;OAOG;cACa,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;IAQ/D;;;OAGG;cACa,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAclD,OAAO;CAqBtB"}
@@ -47,7 +47,7 @@ __name(_AbstractModuleHost, "AbstractModuleHost");
47
47
  var AbstractModuleHost = _AbstractModuleHost;
48
48
 
49
49
  // src/AsyncQueryBus/AsyncQueryBusClient.ts
50
- var import_assert = require("@xylabs/assert");
50
+ var import_assert2 = require("@xylabs/assert");
51
51
  var import_delay = require("@xylabs/delay");
52
52
  var import_forget = require("@xylabs/forget");
53
53
  var import_timer = require("@xylabs/timer");
@@ -57,28 +57,24 @@ var import_payload_builder = require("@xyo-network/payload-builder");
57
57
  var import_lru_cache2 = require("lru-cache");
58
58
 
59
59
  // src/AsyncQueryBus/AsyncQueryBusBase.ts
60
+ var import_assert = require("@xylabs/assert");
60
61
  var import_object2 = require("@xylabs/object");
61
62
  var import_archivist_model = require("@xyo-network/archivist-model");
62
63
  var import_diviner_model = require("@xyo-network/diviner-model");
64
+ var import_module_model = require("@xyo-network/module-model");
63
65
  var import_async_mutex = require("async-mutex");
64
66
  var import_lru_cache = require("lru-cache");
65
67
  var _AsyncQueryBusBase = class _AsyncQueryBusBase extends import_object2.Base {
66
68
  _lastState;
67
69
  _targetConfigs = {};
68
70
  _targetQueries = {};
69
- _lastQueriesArchivistAttempt;
70
- _lastQueriesDivinerAttempt;
71
- _lastResponsesArchivistAttempt;
72
- _lastResponsesDivinerAttempt;
71
+ _lastResolveAttempt = {};
73
72
  _queriesArchivist;
74
- _queriesArchivistMutex = new import_async_mutex.Mutex();
75
73
  _queriesDiviner;
76
- _queriesDivinerMutex = new import_async_mutex.Mutex();
77
- _reResolveDelay = 5e4;
74
+ _reResolveDelay = 1e3 * 5;
75
+ _resolveMutex = new import_async_mutex.Mutex();
78
76
  _responsesArchivist;
79
- _responsesArchivistMutex = new import_async_mutex.Mutex();
80
77
  _responsesDiviner;
81
- _responsesDivinerMutex = new import_async_mutex.Mutex();
82
78
  constructor(params) {
83
79
  super(params);
84
80
  }
@@ -104,96 +100,24 @@ var _AsyncQueryBusBase = class _AsyncQueryBusBase extends import_object2.Base {
104
100
  return this._lastState;
105
101
  }
106
102
  async queriesArchivist() {
107
- return await this._queriesArchivistMutex.runExclusive(async () => {
108
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
109
- if (this._queriesArchivist) {
110
- return this._queriesArchivist;
111
- }
112
- if (Date.now() - (this._lastQueriesArchivistAttempt ?? 0) < this._reResolveDelay) {
113
- return;
114
- }
115
- this._lastQueriesArchivistAttempt = Date.now();
116
- const resolved = await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.queries) == null ? void 0 : _c.archivist);
117
- if (resolved) {
118
- const typedResolve = (0, import_archivist_model.asArchivistInstance)(resolved);
119
- if (typedResolve) {
120
- return typedResolve;
121
- } else {
122
- (_h = this.logger) == null ? void 0 : _h.warn(`Unable to resolve queriesArchivist as correct type [${(_f = (_e = (_d = this.config) == null ? void 0 : _d.intersect) == null ? void 0 : _e.queries) == null ? void 0 : _f.archivist}][${(_g = resolved == null ? void 0 : resolved.constructor) == null ? void 0 : _g.name}]: ${(0, import_object2.toJsonString)(resolved)}`);
123
- }
124
- } else {
125
- (_l = this.logger) == null ? void 0 : _l.log(`Unable to resolve queriesArchivist [${(_k = (_j = (_i = this.config) == null ? void 0 : _i.intersect) == null ? void 0 : _j.queries) == null ? void 0 : _k.archivist}]`);
126
- }
127
- });
103
+ var _a, _b, _c;
104
+ this._queriesArchivist = this._queriesArchivist ?? await this.resolve((0, import_assert.assertEx)((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.queries) == null ? void 0 : _c.archivist, () => "No queries Archivist defined"), import_archivist_model.isArchivistInstance);
105
+ return this._queriesArchivist;
128
106
  }
129
107
  async queriesDiviner() {
130
- return await this._queriesDivinerMutex.runExclusive(async () => {
131
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
132
- if (this._queriesDiviner) {
133
- return this._queriesDiviner;
134
- }
135
- if (Date.now() - (this._lastQueriesDivinerAttempt ?? 0) < this._reResolveDelay) {
136
- return;
137
- }
138
- this._lastQueriesDivinerAttempt = Date.now();
139
- const resolved = await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.queries) == null ? void 0 : _c.boundWitnessDiviner);
140
- if (resolved) {
141
- const typedResolve = (0, import_diviner_model.asDivinerInstance)(resolved);
142
- if (typedResolve) {
143
- return typedResolve;
144
- } else {
145
- (_h = this.logger) == null ? void 0 : _h.warn(`Unable to resolve queriesDiviner as correct type [${(_f = (_e = (_d = this.config) == null ? void 0 : _d.intersect) == null ? void 0 : _e.queries) == null ? void 0 : _f.boundWitnessDiviner}][${(_g = resolved == null ? void 0 : resolved.constructor) == null ? void 0 : _g.name}]: ${(0, import_object2.toJsonString)(resolved)}`);
146
- }
147
- } else {
148
- (_l = this.logger) == null ? void 0 : _l.log(`Unable to resolve queriesDiviner [${(_k = (_j = (_i = this.config) == null ? void 0 : _i.intersect) == null ? void 0 : _j.queries) == null ? void 0 : _k.boundWitnessDiviner}]`);
149
- }
150
- });
108
+ var _a, _b, _c;
109
+ this._queriesDiviner = this._queriesDiviner ?? await this.resolve((0, import_assert.assertEx)((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.queries) == null ? void 0 : _c.boundWitnessDiviner, () => "No queries Diviner defined"), import_diviner_model.isDivinerInstance);
110
+ return this._queriesDiviner;
151
111
  }
152
112
  async responsesArchivist() {
153
- return await this._responsesArchivistMutex.runExclusive(async () => {
154
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
155
- if (this._responsesArchivist) {
156
- return this._responsesArchivist;
157
- }
158
- if (Date.now() - (this._lastResponsesArchivistAttempt ?? 0) < this._reResolveDelay) {
159
- return;
160
- }
161
- this._lastResponsesArchivistAttempt = Date.now();
162
- const resolved = await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.responses) == null ? void 0 : _c.archivist);
163
- if (resolved) {
164
- const typedResolve = (0, import_archivist_model.asArchivistInstance)(resolved);
165
- if (typedResolve) {
166
- return typedResolve;
167
- } else {
168
- (_h = this.logger) == null ? void 0 : _h.warn(`Unable to resolve responseArchivist as correct type [${(_f = (_e = (_d = this.config) == null ? void 0 : _d.intersect) == null ? void 0 : _e.responses) == null ? void 0 : _f.archivist}][${(_g = resolved == null ? void 0 : resolved.constructor) == null ? void 0 : _g.name}]: ${(0, import_object2.toJsonString)(resolved)}`);
169
- }
170
- } else {
171
- (_l = this.logger) == null ? void 0 : _l.log(`Unable to resolve responseArchivist [${(_k = (_j = (_i = this.config) == null ? void 0 : _i.intersect) == null ? void 0 : _j.responses) == null ? void 0 : _k.archivist}]`);
172
- }
173
- });
113
+ var _a, _b, _c;
114
+ this._responsesArchivist = this._responsesArchivist ?? await this.resolve((0, import_assert.assertEx)((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.responses) == null ? void 0 : _c.archivist, () => "No responses Archivist defined"), import_archivist_model.isArchivistInstance);
115
+ return this._responsesArchivist;
174
116
  }
175
117
  async responsesDiviner() {
176
- return await this._responsesDivinerMutex.runExclusive(async () => {
177
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
178
- if (this._responsesDiviner) {
179
- return this._responsesDiviner;
180
- }
181
- if (Date.now() - (this._lastResponsesDivinerAttempt ?? 0) < this._reResolveDelay) {
182
- return;
183
- }
184
- this._lastResponsesDivinerAttempt = Date.now();
185
- const resolved = await this.resolver.resolve((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.responses) == null ? void 0 : _c.boundWitnessDiviner);
186
- if (resolved) {
187
- const typedResolve = (0, import_diviner_model.asDivinerInstance)(resolved);
188
- if (typedResolve) {
189
- return typedResolve;
190
- } else {
191
- (_h = this.logger) == null ? void 0 : _h.warn(`Unable to resolve responsesDiviner as correct type [${(_f = (_e = (_d = this.config) == null ? void 0 : _d.intersect) == null ? void 0 : _e.responses) == null ? void 0 : _f.boundWitnessDiviner}][${(_g = resolved == null ? void 0 : resolved.constructor) == null ? void 0 : _g.name}]: ${(0, import_object2.toJsonString)(resolved)}`);
192
- }
193
- } else {
194
- (_l = this.logger) == null ? void 0 : _l.log(`Unable to resolve responsesDiviner [${(_k = (_j = (_i = this.config) == null ? void 0 : _i.intersect) == null ? void 0 : _j.responses) == null ? void 0 : _k.boundWitnessDiviner}]`);
195
- }
196
- });
118
+ var _a, _b, _c;
119
+ this._responsesDiviner = this._responsesDiviner ?? await this.resolve((0, import_assert.assertEx)((_c = (_b = (_a = this.config) == null ? void 0 : _a.intersect) == null ? void 0 : _b.responses) == null ? void 0 : _c.boundWitnessDiviner, () => "No responses Diviner defined"), import_diviner_model.isDivinerInstance);
120
+ return this._responsesDiviner;
197
121
  }
198
122
  /**
199
123
  * Commit the internal state of the process. This is similar
@@ -225,6 +149,28 @@ var _AsyncQueryBusBase = class _AsyncQueryBusBase extends import_object2.Base {
225
149
  return state;
226
150
  }
227
151
  }
152
+ async resolve(id, typeCheck) {
153
+ return await this._resolveMutex.runExclusive(async () => {
154
+ var _a, _b, _c;
155
+ if (this._queriesArchivist) {
156
+ return this._queriesArchivist;
157
+ }
158
+ if (Date.now() - (this._lastResolveAttempt[id] ?? 0) < this._reResolveDelay) {
159
+ return;
160
+ }
161
+ this._lastResolveAttempt[id] = Date.now();
162
+ const resolved = await this.resolver.resolve(id);
163
+ if (resolved) {
164
+ if (typeCheck(resolved)) {
165
+ return resolved;
166
+ } else {
167
+ (_b = this.logger) == null ? void 0 : _b.warn(`Unable to resolve responsesDiviner as correct type [${id}][${(_a = resolved == null ? void 0 : resolved.constructor) == null ? void 0 : _a.name}]: ${resolved.id}`);
168
+ }
169
+ } else {
170
+ (_c = this.logger) == null ? void 0 : _c.log(`Unable to resolve queriesArchivist [${id}] [${await (0, import_module_model.traceModuleIdentifier)(this.resolver, id)}]`);
171
+ }
172
+ });
173
+ }
228
174
  };
229
175
  __name(_AsyncQueryBusBase, "AsyncQueryBusBase");
230
176
  var AsyncQueryBusBase = _AsyncQueryBusBase;
@@ -284,7 +230,7 @@ var _AsyncQueryBusClient = class _AsyncQueryBusClient extends AsyncQueryBusBase
284
230
  ...query,
285
231
  $meta
286
232
  });
287
- const queryArchivist = (0, import_assert.assertEx)(await this.queriesArchivist(), () => {
233
+ const queryArchivist = (0, import_assert2.assertEx)(await this.queriesArchivist(), () => {
288
234
  var _a2, _b2, _c2;
289
235
  return `Unable to contact queriesArchivist [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.intersect) == null ? void 0 : _b2.queries) == null ? void 0 : _c2.archivist}]`;
290
236
  });
@@ -421,11 +367,11 @@ var AsyncQueryBusClient = _AsyncQueryBusClient;
421
367
 
422
368
  // src/AsyncQueryBus/AsyncQueryBusHost.ts
423
369
  var import_array = require("@xylabs/array");
424
- var import_assert2 = require("@xylabs/assert");
370
+ var import_assert3 = require("@xylabs/assert");
425
371
  var import_timer2 = require("@xylabs/timer");
426
372
  var import_boundwitness_model2 = require("@xyo-network/boundwitness-model");
427
373
  var import_diviner_boundwitness_model2 = require("@xyo-network/diviner-boundwitness-model");
428
- var import_module_model = require("@xyo-network/module-model");
374
+ var import_module_model2 = require("@xyo-network/module-model");
429
375
  var import_payload_builder2 = require("@xyo-network/payload-builder");
430
376
  var _AsyncQueryBusHost = class _AsyncQueryBusHost extends AsyncQueryBusBase {
431
377
  _exposedAddresses = /* @__PURE__ */ new Set();
@@ -447,14 +393,14 @@ var _AsyncQueryBusHost = class _AsyncQueryBusHost extends AsyncQueryBusBase {
447
393
  async expose(id, options) {
448
394
  var _a;
449
395
  const { failOnAlreadyExposed, required = true } = options ?? {};
450
- const module2 = (0, import_module_model.asModuleInstance)(await this.resolver.resolve(id, {
396
+ const module2 = (0, import_module_model2.asModuleInstance)(await this.resolver.resolve(id, {
451
397
  maxDepth: 10
452
398
  }));
453
399
  if (!module2 && required) {
454
400
  throw new Error(`Unable to resolve module to expose [${id}]`);
455
401
  }
456
402
  if (module2) {
457
- (0, import_assert2.assertEx)(!failOnAlreadyExposed || !this._exposedAddresses.has(module2.address), () => `Address already exposed: ${id} [${module2.address}]`);
403
+ (0, import_assert3.assertEx)(!failOnAlreadyExposed || !this._exposedAddresses.has(module2.address), () => `Address already exposed: ${id} [${module2.address}]`);
458
404
  this._exposedAddresses.add(module2.address);
459
405
  this._exposeOptions[module2.address] = {
460
406
  ...options
@@ -469,7 +415,7 @@ var _AsyncQueryBusHost = class _AsyncQueryBusHost extends AsyncQueryBusBase {
469
415
  ...((_a = this.config) == null ? void 0 : _a.listeningModules) ?? [],
470
416
  ...this.exposedAddresses.values()
471
417
  ];
472
- const mods = await Promise.all(exposedModules.map(async (exposedModule) => (0, import_assert2.assertEx)((0, import_module_model.asModuleInstance)(await this.resolver.resolve(exposedModule, {
418
+ const mods = await Promise.all(exposedModules.map(async (exposedModule) => (0, import_assert3.assertEx)((0, import_module_model2.asModuleInstance)(await this.resolver.resolve(exposedModule, {
473
419
  maxDepth: 10
474
420
  })), () => `Unable to resolve listeningModule [${exposedModule}]`)));
475
421
  return mods;
@@ -490,11 +436,11 @@ var _AsyncQueryBusHost = class _AsyncQueryBusHost extends AsyncQueryBusBase {
490
436
  }
491
437
  async unexpose(id, validate = true) {
492
438
  var _a;
493
- const module2 = (0, import_module_model.asModuleInstance)(await this.resolver.resolve(id, {
439
+ const module2 = (0, import_module_model2.asModuleInstance)(await this.resolver.resolve(id, {
494
440
  maxDepth: 10
495
441
  }));
496
442
  if (module2) {
497
- (0, import_assert2.assertEx)(!validate || this._exposedAddresses.has(module2.address), () => `Address not exposed [${module2.address}][${module2.id}]`);
443
+ (0, import_assert3.assertEx)(!validate || this._exposedAddresses.has(module2.address), () => `Address not exposed [${module2.address}][${module2.id}]`);
498
444
  this._exposedAddresses.delete(module2.address);
499
445
  delete this._exposeOptions[module2.address];
500
446
  (_a = this.logger) == null ? void 0 : _a.debug(`${module2.address} [${module2.id}] unexposed`);
@@ -504,11 +450,11 @@ var _AsyncQueryBusHost = class _AsyncQueryBusHost extends AsyncQueryBusBase {
504
450
  callLocalModule = async (localModule, query) => {
505
451
  var _a, _b, _c, _d, _e, _f, _g;
506
452
  const localModuleName = localModule.config.name ?? localModule.address;
507
- const queryArchivist = (0, import_assert2.assertEx)(await this.queriesArchivist(), () => {
453
+ const queryArchivist = (0, import_assert3.assertEx)(await this.queriesArchivist(), () => {
508
454
  var _a2, _b2, _c2;
509
455
  return `Unable to contact queriesArchivist [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.intersect) == null ? void 0 : _b2.queries) == null ? void 0 : _c2.archivist}]`;
510
456
  });
511
- const responsesArchivist = (0, import_assert2.assertEx)(await this.responsesArchivist(), () => {
457
+ const responsesArchivist = (0, import_assert3.assertEx)(await this.responsesArchivist(), () => {
512
458
  var _a2, _b2, _c2;
513
459
  return `Unable to contact responsesArchivist [${(_c2 = (_b2 = (_a2 = this.config) == null ? void 0 : _a2.intersect) == null ? void 0 : _b2.queries) == null ? void 0 : _c2.archivist}]`;
514
460
  });
@@ -530,7 +476,7 @@ var _AsyncQueryBusHost = class _AsyncQueryBusHost extends AsyncQueryBusBase {
530
476
  (_c = this.logger) == null ? void 0 : _c.debug(`Issuing query ${querySchema2} (${queryHash}) addressed to module: ${localModuleName}`);
531
477
  const response = await localModule.query(query, queryPayloads, {
532
478
  allowedQueries: (_d = this._exposeOptions[localModule.address]) == null ? void 0 : _d.allowedQueries,
533
- schema: import_module_model.ModuleConfigSchema
479
+ schema: import_module_model2.ModuleConfigSchema
534
480
  });
535
481
  const [bw, payloads, errors] = response;
536
482
  (_e = this.logger) == null ? void 0 : _e.debug(`Replying to query ${queryHash} addressed to module: ${localModuleName}`);
@@ -680,18 +626,18 @@ var PubSubBridgeSchema = "network.xyo.bridge.pubsub";
680
626
  var PubSubBridgeConfigSchema = `${PubSubBridgeSchema}.config`;
681
627
 
682
628
  // src/PubSubBridge.ts
683
- var import_assert4 = require("@xylabs/assert");
629
+ var import_assert5 = require("@xylabs/assert");
684
630
  var import_exists = require("@xylabs/exists");
685
631
  var import_abstract_bridge3 = require("@xyo-network/abstract-bridge");
686
- var import_module_model3 = require("@xyo-network/module-model");
632
+ var import_module_model4 = require("@xyo-network/module-model");
687
633
 
688
634
  // src/PubSubBridgeModuleResolver.ts
689
- var import_assert3 = require("@xylabs/assert");
635
+ var import_assert4 = require("@xylabs/assert");
690
636
  var import_hex = require("@xylabs/hex");
691
637
  var import_abstract_bridge2 = require("@xyo-network/abstract-bridge");
692
638
  var import_account = require("@xyo-network/account");
693
639
  var import_config_payload_plugin = require("@xyo-network/config-payload-plugin");
694
- var import_module_model2 = require("@xyo-network/module-model");
640
+ var import_module_model3 = require("@xyo-network/module-model");
695
641
  var _PubSubBridgeModuleResolver = class _PubSubBridgeModuleResolver extends import_abstract_bridge2.AbstractBridgeModuleResolver {
696
642
  async resolveHandler(id, options) {
697
643
  var _a, _b;
@@ -701,14 +647,14 @@ var _PubSubBridgeModuleResolver = class _PubSubBridgeModuleResolver extends impo
701
647
  }
702
648
  const idParts = id.split(":");
703
649
  const firstPart = idParts.shift();
704
- (0, import_assert3.assertEx)((0, import_hex.isAddress)(firstPart), () => `Invalid module address: ${firstPart}`);
650
+ (0, import_assert4.assertEx)((0, import_hex.isAddress)(firstPart), () => `Invalid module address: ${firstPart}`);
705
651
  const remainderParts = idParts.join(":");
706
652
  const account = import_account.Account.randomSync();
707
653
  const params = {
708
654
  account,
709
655
  busClient: this.params.busClient,
710
656
  config: {
711
- schema: import_module_model2.ModuleConfigSchema
657
+ schema: import_module_model3.ModuleConfigSchema
712
658
  },
713
659
  host: this.params.bridge,
714
660
  moduleAddress: firstPart
@@ -718,13 +664,13 @@ var _PubSubBridgeModuleResolver = class _PubSubBridgeModuleResolver extends impo
718
664
  const state = await proxy.state();
719
665
  if (state) {
720
666
  const configSchema = (_a = state.find((payload) => payload.schema === import_config_payload_plugin.ConfigSchema)) == null ? void 0 : _a.config;
721
- const config = (0, import_assert3.assertEx)(state.find((payload) => payload.schema === configSchema), () => "Unable to locate config");
667
+ const config = (0, import_assert4.assertEx)(state.find((payload) => payload.schema === configSchema), () => "Unable to locate config");
722
668
  proxy.setConfig(config);
723
669
  }
724
670
  }
725
671
  await ((_b = proxy.start) == null ? void 0 : _b.call(proxy));
726
672
  const wrapped = (0, import_abstract_bridge2.wrapModuleWithType)(proxy, account);
727
- const as = (0, import_assert3.assertEx)((0, import_module_model2.asModuleInstance)(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
673
+ const as = (0, import_assert4.assertEx)((0, import_module_model3.asModuleInstance)(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
728
674
  proxy.upResolver.add(as);
729
675
  proxy.downResolver.add(as);
730
676
  this.add(as);
@@ -759,7 +705,7 @@ var _PubSubBridge = class _PubSubBridge extends import_abstract_bridge3.Abstract
759
705
  get resolver() {
760
706
  this._resolver = this._resolver ?? new PubSubBridgeModuleResolver({
761
707
  bridge: this,
762
- busClient: (0, import_assert4.assertEx)(this.busClient(), () => "busClient not configured"),
708
+ busClient: (0, import_assert5.assertEx)(this.busClient(), () => "busClient not configured"),
763
709
  wrapperAccount: this.account
764
710
  });
765
711
  return this._resolver;
@@ -768,7 +714,7 @@ var _PubSubBridge = class _PubSubBridge extends import_abstract_bridge3.Abstract
768
714
  return `${this.config.name ?? moduleName}`;
769
715
  }
770
716
  get roots() {
771
- return (0, import_assert4.assertEx)(this.config.roots, () => "roots not configured");
717
+ return (0, import_assert5.assertEx)(this.config.roots, () => "roots not configured");
772
718
  }
773
719
  async discoverRoots() {
774
720
  const rootInstances = (await Promise.all(this.roots.map(async (root) => await this.resolver.resolve(root)))).filter(import_exists.exists);
@@ -779,7 +725,7 @@ var _PubSubBridge = class _PubSubBridge extends import_abstract_bridge3.Abstract
779
725
  }
780
726
  async exposeHandler(id, options) {
781
727
  const { maxDepth = 2, direction = "all", required = true } = options ?? {};
782
- const host = (0, import_assert4.assertEx)(this.busHost(), () => "Not configured as a host");
728
+ const host = (0, import_assert5.assertEx)(this.busHost(), () => "Not configured as a host");
783
729
  const module2 = await host.expose(id, {
784
730
  required
785
731
  });
@@ -814,7 +760,7 @@ var _PubSubBridge = class _PubSubBridge extends import_abstract_bridge3.Abstract
814
760
  }
815
761
  async unexposeHandler(id, options) {
816
762
  const { maxDepth = 2, direction = "all", required = true } = options ?? {};
817
- const host = (0, import_assert4.assertEx)(this.busHost(), () => "Not configured as a host");
763
+ const host = (0, import_assert5.assertEx)(this.busHost(), () => "Not configured as a host");
818
764
  const module2 = await host.unexpose(id, required);
819
765
  if (module2) {
820
766
  const children = maxDepth > 0 ? await module2.resolve("*", {
@@ -865,7 +811,7 @@ __publicField(_PubSubBridge, "configSchemas", [
865
811
  ]);
866
812
  var PubSubBridge = _PubSubBridge;
867
813
  PubSubBridge = _ts_decorate([
868
- (0, import_module_model3.creatableModule)()
814
+ (0, import_module_model4.creatableModule)()
869
815
  ], PubSubBridge);
870
816
  // Annotate the CommonJS export names for ESM import in node:
871
817
  0 && (module.exports = {