@xyo-network/bridge-pub-sub 2.91.3 → 2.92.0-rc.10
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.
- package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.cts +3 -0
- package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.cts.map +1 -1
- package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.mts +3 -0
- package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.mts.map +1 -1
- package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.ts +3 -0
- package/dist/browser/AsyncQueryBus/AsyncQueryBusBase.d.ts.map +1 -1
- package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.cts +1 -1
- package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.mts +1 -1
- package/dist/browser/AsyncQueryBus/AsyncQueryBusHost.d.ts +1 -1
- package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.cts +1 -1
- package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.cts.map +1 -1
- package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.mts +1 -1
- package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.mts.map +1 -1
- package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.ts +1 -1
- package/dist/browser/AsyncQueryBus/ModuleHost/ModuleHost.d.ts.map +1 -1
- package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts +1 -1
- package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts +1 -1
- package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts +1 -1
- package/dist/browser/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/browser/PubSubBridge.d.cts +8 -18
- package/dist/browser/PubSubBridge.d.cts.map +1 -1
- package/dist/browser/PubSubBridge.d.mts +8 -18
- package/dist/browser/PubSubBridge.d.mts.map +1 -1
- package/dist/browser/PubSubBridge.d.ts +8 -18
- package/dist/browser/PubSubBridge.d.ts.map +1 -1
- package/dist/browser/index.cjs +81 -255
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -1
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -1
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +76 -250
- package/dist/browser/index.js.map +1 -1
- package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.cts +3 -0
- package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.cts.map +1 -1
- package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.mts +3 -0
- package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.mts.map +1 -1
- package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.ts +3 -0
- package/dist/node/AsyncQueryBus/AsyncQueryBusBase.d.ts.map +1 -1
- package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.cts +1 -1
- package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.mts +1 -1
- package/dist/node/AsyncQueryBus/AsyncQueryBusHost.d.ts +1 -1
- package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.cts +1 -1
- package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.cts.map +1 -1
- package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.mts +1 -1
- package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.mts.map +1 -1
- package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.ts +1 -1
- package/dist/node/AsyncQueryBus/ModuleHost/ModuleHost.d.ts.map +1 -1
- package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts +1 -1
- package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts +1 -1
- package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts +1 -1
- package/dist/node/AsyncQueryBus/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/node/PubSubBridge.d.cts +8 -18
- package/dist/node/PubSubBridge.d.cts.map +1 -1
- package/dist/node/PubSubBridge.d.mts +8 -18
- package/dist/node/PubSubBridge.d.mts.map +1 -1
- package/dist/node/PubSubBridge.d.ts +8 -18
- package/dist/node/PubSubBridge.d.ts.map +1 -1
- package/dist/node/index.cjs +83 -256
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -1
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -1
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +77 -250
- package/dist/node/index.js.map +1 -1
- package/package.json +26 -31
- package/src/AsyncQueryBus/AsyncQueryBusBase.ts +11 -0
- package/src/AsyncQueryBus/AsyncQueryBusHost.ts +19 -19
- package/src/AsyncQueryBus/ModuleHost/ModuleHost.ts +1 -1
- package/src/AsyncQueryBus/ModuleProxy/ModuleProxy.ts +1 -1
- package/src/PubSubBridge.ts +32 -89
- package/src/index.ts +1 -1
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.cts +0 -90
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.cts.map +0 -1
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.mts +0 -90
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.mts.map +0 -1
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.ts +0 -90
- package/dist/browser/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +0 -1
- package/dist/browser/AbstractModuleProxy/index.d.cts +0 -2
- package/dist/browser/AbstractModuleProxy/index.d.cts.map +0 -1
- package/dist/browser/AbstractModuleProxy/index.d.mts +0 -2
- package/dist/browser/AbstractModuleProxy/index.d.mts.map +0 -1
- package/dist/browser/AbstractModuleProxy/index.d.ts +0 -2
- package/dist/browser/AbstractModuleProxy/index.d.ts.map +0 -1
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.cts +0 -90
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.cts.map +0 -1
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.mts +0 -90
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.mts.map +0 -1
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.ts +0 -90
- package/dist/node/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +0 -1
- package/dist/node/AbstractModuleProxy/index.d.cts +0 -2
- package/dist/node/AbstractModuleProxy/index.d.cts.map +0 -1
- package/dist/node/AbstractModuleProxy/index.d.mts +0 -2
- package/dist/node/AbstractModuleProxy/index.d.mts.map +0 -1
- package/dist/node/AbstractModuleProxy/index.d.ts +0 -2
- package/dist/node/AbstractModuleProxy/index.d.ts.map +0 -1
- package/src/AbstractModuleProxy/AbstractModuleProxy.ts +0 -239
- package/src/AbstractModuleProxy/index.ts +0 -1
package/dist/browser/index.js
CHANGED
|
@@ -1,162 +1,11 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
|
-
// src/
|
|
5
|
-
import { assertEx } from "@xylabs/assert";
|
|
6
|
-
import { compact } from "@xylabs/lodash";
|
|
4
|
+
// src/AbstractModuleHost/AbstractModuleHost.ts
|
|
7
5
|
import { Base } from "@xylabs/object";
|
|
8
|
-
|
|
9
|
-
import { QueryBoundWitnessBuilder } from "@xyo-network/boundwitness-builder";
|
|
10
|
-
import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
11
|
-
import { AddressPreviousHashSchema, ModuleAddressQuerySchema, ModuleConfigSchema, ModuleDescribeQuerySchema, ModuleDiscoverQuerySchema, ModuleManifestQuerySchema } from "@xyo-network/module-model";
|
|
12
|
-
import { ModuleErrorSchema } from "@xyo-network/payload-model";
|
|
13
|
-
var AbstractModuleProxy = class extends Base {
|
|
6
|
+
var AbstractModuleHost = class extends Base {
|
|
14
7
|
static {
|
|
15
|
-
__name(this, "
|
|
16
|
-
}
|
|
17
|
-
static requiredQueries = [
|
|
18
|
-
ModuleDiscoverQuerySchema
|
|
19
|
-
];
|
|
20
|
-
eventData = {};
|
|
21
|
-
proxyParams;
|
|
22
|
-
constructor(params) {
|
|
23
|
-
super({
|
|
24
|
-
config: {
|
|
25
|
-
schema: ModuleConfigSchema
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
this.proxyParams = params;
|
|
29
|
-
}
|
|
30
|
-
get account() {
|
|
31
|
-
return this.proxyParams.account;
|
|
32
|
-
}
|
|
33
|
-
get address() {
|
|
34
|
-
return this.proxyParams.moduleAddress;
|
|
35
|
-
}
|
|
36
|
-
get config() {
|
|
37
|
-
return this.params.config;
|
|
38
|
-
}
|
|
39
|
-
get downResolver() {
|
|
40
|
-
throw new Error("Unsupported");
|
|
41
|
-
}
|
|
42
|
-
get id() {
|
|
43
|
-
return this.proxyParams.moduleAddress;
|
|
44
|
-
}
|
|
45
|
-
get queries() {
|
|
46
|
-
return this.proxyParams.queries;
|
|
47
|
-
}
|
|
48
|
-
get upResolver() {
|
|
49
|
-
throw new Error("Unsupported");
|
|
50
|
-
}
|
|
51
|
-
static hasRequiredQueries(module) {
|
|
52
|
-
return this.missingRequiredQueries(module).length === 0;
|
|
53
|
-
}
|
|
54
|
-
static missingRequiredQueries(module) {
|
|
55
|
-
const moduleQueries = module.queries;
|
|
56
|
-
return compact(this.requiredQueries.map((query) => {
|
|
57
|
-
return moduleQueries.includes(query) ? null : query;
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
async addressPreviousHash() {
|
|
61
|
-
const queryPayload = {
|
|
62
|
-
schema: ModuleAddressQuerySchema
|
|
63
|
-
};
|
|
64
|
-
return assertEx((await this.sendQuery(queryPayload)).find((payload) => payload.schema === AddressPreviousHashSchema), "Result did not include correct payload");
|
|
65
|
-
}
|
|
66
|
-
clearListeners(_eventNames) {
|
|
67
|
-
throw new Error("Unsupported");
|
|
68
|
-
}
|
|
69
|
-
//TODO: Make ModuleDescription into real payload
|
|
70
|
-
async describe() {
|
|
71
|
-
const queryPayload = {
|
|
72
|
-
schema: ModuleDescribeQuerySchema
|
|
73
|
-
};
|
|
74
|
-
return (await this.sendQuery(queryPayload))[0];
|
|
75
|
-
}
|
|
76
|
-
async discover() {
|
|
77
|
-
const queryPayload = {
|
|
78
|
-
schema: ModuleDiscoverQuerySchema
|
|
79
|
-
};
|
|
80
|
-
return await this.sendQuery(queryPayload);
|
|
81
|
-
}
|
|
82
|
-
emit(_eventName, _eventArgs) {
|
|
83
|
-
throw new Error("Unsupported");
|
|
84
|
-
}
|
|
85
|
-
emitSerial(_eventName, _eventArgs) {
|
|
86
|
-
throw new Error("Unsupported");
|
|
87
|
-
}
|
|
88
|
-
listenerCount(_eventNames) {
|
|
89
|
-
throw new Error("Unsupported");
|
|
90
|
-
}
|
|
91
|
-
async manifest(maxDepth) {
|
|
92
|
-
const queryPayload = {
|
|
93
|
-
schema: ModuleManifestQuerySchema,
|
|
94
|
-
...maxDepth === void 0 ? {} : {
|
|
95
|
-
maxDepth
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
return (await this.sendQuery(queryPayload))[0];
|
|
99
|
-
}
|
|
100
|
-
async moduleAddress() {
|
|
101
|
-
const queryPayload = {
|
|
102
|
-
schema: ModuleAddressQuerySchema
|
|
103
|
-
};
|
|
104
|
-
return await this.sendQuery(queryPayload);
|
|
105
|
-
}
|
|
106
|
-
off(_eventNames, _listener) {
|
|
107
|
-
throw new Error("Unsupported");
|
|
108
|
-
}
|
|
109
|
-
offAny(_listener) {
|
|
110
|
-
throw new Error("Unsupported");
|
|
111
|
-
}
|
|
112
|
-
on(_eventNames, _listener) {
|
|
113
|
-
throw new Error("Unsupported");
|
|
114
|
-
}
|
|
115
|
-
onAny(_listener) {
|
|
116
|
-
throw new Error("Unsupported");
|
|
117
|
-
}
|
|
118
|
-
once(_eventName, _listener) {
|
|
119
|
-
throw new Error("Unsupported");
|
|
120
|
-
}
|
|
121
|
-
async previousHash() {
|
|
122
|
-
const queryPayload = {
|
|
123
|
-
schema: ModuleAddressQuerySchema
|
|
124
|
-
};
|
|
125
|
-
return (await this.sendQuery(queryPayload)).pop().previousHash;
|
|
126
|
-
}
|
|
127
|
-
queryable(_query, _payloads) {
|
|
128
|
-
return true;
|
|
129
|
-
}
|
|
130
|
-
resolve(nameOrAddressOrFilter, _options) {
|
|
131
|
-
return typeof nameOrAddressOrFilter === "string" ? void 0 : [];
|
|
132
|
-
}
|
|
133
|
-
state() {
|
|
134
|
-
return [];
|
|
135
|
-
}
|
|
136
|
-
bindQuery(query, payloads, account = this.account) {
|
|
137
|
-
const promise = new PromiseEx(async (resolve) => {
|
|
138
|
-
const result = await this.bindQueryInternal(query, payloads, account);
|
|
139
|
-
resolve?.(result);
|
|
140
|
-
return result;
|
|
141
|
-
}, account);
|
|
142
|
-
return promise;
|
|
143
|
-
}
|
|
144
|
-
async bindQueryInternal(query, payloads, account = this.account) {
|
|
145
|
-
const builder = await new QueryBoundWitnessBuilder().payloads(payloads).query(query);
|
|
146
|
-
const result = await (account ? builder.witness(account) : builder).build();
|
|
147
|
-
return result;
|
|
148
|
-
}
|
|
149
|
-
async filterErrors(result) {
|
|
150
|
-
const wrapper = await BoundWitnessWrapper.wrap(result[0], result[1]);
|
|
151
|
-
return wrapper.payloadsBySchema(ModuleErrorSchema);
|
|
152
|
-
}
|
|
153
|
-
async sendQuery(queryPayload, payloads) {
|
|
154
|
-
const query = await this.bindQuery(queryPayload, payloads);
|
|
155
|
-
const [, resultPayloads, errors] = await this.query(query[0], query[1]);
|
|
156
|
-
if (errors && errors.length > 0) {
|
|
157
|
-
throw errors[0];
|
|
158
|
-
}
|
|
159
|
-
return resultPayloads;
|
|
8
|
+
__name(this, "AbstractModuleHost");
|
|
160
9
|
}
|
|
161
10
|
};
|
|
162
11
|
|
|
@@ -170,7 +19,7 @@ import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
|
170
19
|
import { LRUCache as LRUCache2 } from "lru-cache";
|
|
171
20
|
|
|
172
21
|
// src/AsyncQueryBus/AsyncQueryBusBase.ts
|
|
173
|
-
import { assertEx
|
|
22
|
+
import { assertEx } from "@xylabs/assert";
|
|
174
23
|
import { Base as Base2 } from "@xylabs/object";
|
|
175
24
|
import { asArchivistInstance } from "@xyo-network/archivist-model";
|
|
176
25
|
import { asDivinerInstance } from "@xyo-network/diviner-model";
|
|
@@ -179,6 +28,7 @@ var AsyncQueryBusBase = class extends Base2 {
|
|
|
179
28
|
static {
|
|
180
29
|
__name(this, "AsyncQueryBusBase");
|
|
181
30
|
}
|
|
31
|
+
_exposedAddresses = /* @__PURE__ */ new Set();
|
|
182
32
|
_lastState;
|
|
183
33
|
_targetConfigs = {};
|
|
184
34
|
_targetQueries = {};
|
|
@@ -205,17 +55,25 @@ var AsyncQueryBusBase = class extends Base2 {
|
|
|
205
55
|
this._lastState = this._lastState ?? new LRUCache(requiredConfig);
|
|
206
56
|
return this._lastState;
|
|
207
57
|
}
|
|
58
|
+
expose(address, validate = true) {
|
|
59
|
+
assertEx(!validate || !this._exposedAddresses.has(address), () => `Address already exposed [${address}]`);
|
|
60
|
+
this._exposedAddresses.add(address);
|
|
61
|
+
}
|
|
208
62
|
async queriesArchivist() {
|
|
209
|
-
return
|
|
63
|
+
return assertEx(asArchivistInstance(await this.resolver.resolve(this.config?.intersect?.queries?.archivist)), () => `Unable to resolve queriesArchivist [${this.config?.intersect?.queries?.archivist}]`);
|
|
210
64
|
}
|
|
211
65
|
async queriesDiviner() {
|
|
212
|
-
return
|
|
66
|
+
return assertEx(asDivinerInstance(await this.resolver.resolve(this.config?.intersect?.queries?.boundWitnessDiviner)), () => `Unable to resolve queriesDiviner [${this.config?.intersect?.queries?.boundWitnessDiviner}]`);
|
|
213
67
|
}
|
|
214
68
|
async responsesArchivist() {
|
|
215
|
-
return
|
|
69
|
+
return assertEx(asArchivistInstance(await this.resolver.resolve(this.config?.intersect?.responses?.archivist)), () => `Unable to resolve responsesArchivist [${this.config?.intersect?.responses?.archivist}]`);
|
|
216
70
|
}
|
|
217
71
|
async responsesDiviner() {
|
|
218
|
-
return
|
|
72
|
+
return assertEx(asDivinerInstance(await this.resolver.resolve(this.config?.intersect?.responses?.boundWitnessDiviner)), () => `Unable to resolve responsesDiviner [${this.config?.intersect?.responses?.boundWitnessDiviner}]`);
|
|
73
|
+
}
|
|
74
|
+
unexpose(address, validate = true) {
|
|
75
|
+
assertEx(!validate || this._exposedAddresses.has(address), () => `Address not exposed [${address}]`);
|
|
76
|
+
this._exposedAddresses.delete(address);
|
|
219
77
|
}
|
|
220
78
|
/**
|
|
221
79
|
* Commit the internal state of the process. This is similar
|
|
@@ -434,7 +292,7 @@ var AsyncQueryBusClient = class extends AsyncQueryBusBase {
|
|
|
434
292
|
|
|
435
293
|
// src/AsyncQueryBus/AsyncQueryBusHost.ts
|
|
436
294
|
import { containsAll } from "@xylabs/array";
|
|
437
|
-
import { assertEx as
|
|
295
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
438
296
|
import { clearTimeoutEx as clearTimeoutEx2, setTimeoutEx as setTimeoutEx2 } from "@xylabs/timer";
|
|
439
297
|
import { isQueryBoundWitnessWithMeta } from "@xyo-network/boundwitness-model";
|
|
440
298
|
import { BoundWitnessDivinerQuerySchema as BoundWitnessDivinerQuerySchema2 } from "@xyo-network/diviner-boundwitness-model";
|
|
@@ -455,7 +313,7 @@ var AsyncQueryBusHost = class extends AsyncQueryBusBase {
|
|
|
455
313
|
return !!this._pollId;
|
|
456
314
|
}
|
|
457
315
|
async listeningModules() {
|
|
458
|
-
const mods = this.config?.listeningModules ? await Promise.all(this.config.listeningModules.map(async (listeningModule) =>
|
|
316
|
+
const mods = this.config?.listeningModules ? await Promise.all(this.config.listeningModules.map(async (listeningModule) => assertEx2(asModuleInstance(await this.resolver.resolve(listeningModule)), () => `Unable to resolve listeningModule [${listeningModule}]`))) : await this.resolver.resolve(void 0, {
|
|
459
317
|
direction: "down"
|
|
460
318
|
});
|
|
461
319
|
return mods;
|
|
@@ -478,38 +336,39 @@ var AsyncQueryBusHost = class extends AsyncQueryBusBase {
|
|
|
478
336
|
const localModuleName = localModule.config.name ?? localModule.address;
|
|
479
337
|
const queryArchivist = await this.queriesArchivist();
|
|
480
338
|
const responseArchivist = await this.responsesArchivist();
|
|
481
|
-
const
|
|
482
|
-
if (
|
|
339
|
+
const queryDestination = query.$meta?.destination;
|
|
340
|
+
if (queryDestination && queryDestination?.includes(localModule.address)) {
|
|
483
341
|
const queryIndex = query.payload_hashes.indexOf(query.query);
|
|
484
342
|
if (queryIndex !== -1) {
|
|
485
343
|
const querySchema = query.payload_schemas[queryIndex];
|
|
486
344
|
if (localModule.queries.includes(querySchema)) {
|
|
487
|
-
const
|
|
488
|
-
const
|
|
489
|
-
const
|
|
490
|
-
if (!containsAll(Object.keys(
|
|
491
|
-
this.logger?.error(`Error processing command ${
|
|
345
|
+
const queryPayloads = await queryArchivist.get(query.payload_hashes);
|
|
346
|
+
const queryPayloadsDict = await PayloadBuilder2.toAllHashMap(queryPayloads);
|
|
347
|
+
const queryHash = (await PayloadBuilder2.build(query)).$hash;
|
|
348
|
+
if (!containsAll(Object.keys(queryPayloadsDict), query.payload_hashes)) {
|
|
349
|
+
this.logger?.error(`Error processing command ${queryHash} for module ${localModuleName}, missing payloads`);
|
|
492
350
|
return;
|
|
493
351
|
}
|
|
494
352
|
try {
|
|
495
|
-
const
|
|
496
|
-
this.logger?.debug(`Issuing
|
|
497
|
-
const response = await localModule.query(query,
|
|
353
|
+
const querySchema2 = queryPayloadsDict[query.query].schema;
|
|
354
|
+
this.logger?.debug(`Issuing query ${querySchema2} (${queryHash}) addressed to module: ${localModuleName}`);
|
|
355
|
+
const response = await localModule.query(query, queryPayloads);
|
|
498
356
|
const [bw, payloads, errors] = response;
|
|
499
|
-
this.logger?.debug(`Replying to
|
|
357
|
+
this.logger?.debug(`Replying to query ${queryHash} addressed to module: ${localModuleName}`);
|
|
500
358
|
const insertResult = await responseArchivist.insert([
|
|
501
359
|
bw,
|
|
502
360
|
...payloads,
|
|
503
361
|
...errors
|
|
504
362
|
]);
|
|
505
363
|
if (insertResult.length === 0) {
|
|
506
|
-
this.logger?.error(`Error replying to
|
|
364
|
+
this.logger?.error(`Error replying to query ${queryHash} addressed to module: ${localModuleName}`);
|
|
507
365
|
}
|
|
508
366
|
if (query?.timestamp) {
|
|
509
367
|
await this.commitState(localModule.address, query.timestamp);
|
|
510
368
|
}
|
|
511
369
|
} catch (error) {
|
|
512
|
-
this.logger?.error(`Error processing
|
|
370
|
+
this.logger?.error(`Error processing query ${queryHash} for module ${localModuleName}: ${error}`);
|
|
371
|
+
console.error(`Error processing query ${queryHash} for module ${localModuleName}: ${error}`);
|
|
513
372
|
}
|
|
514
373
|
}
|
|
515
374
|
}
|
|
@@ -560,37 +419,29 @@ var AsyncQueryBusHost = class extends AsyncQueryBusBase {
|
|
|
560
419
|
}, this.pollFrequencyConfig);
|
|
561
420
|
}
|
|
562
421
|
/**
|
|
563
|
-
* Background process for checking for inbound
|
|
422
|
+
* Background process for checking for inbound queries
|
|
564
423
|
*/
|
|
565
424
|
processIncomingQueries = async () => {
|
|
566
|
-
this.logger?.debug("Checking for inbound
|
|
425
|
+
this.logger?.debug("Checking for inbound queries");
|
|
567
426
|
const localModules = await this.listeningModules();
|
|
568
427
|
await Promise.allSettled(localModules.map(async (localModule) => {
|
|
569
428
|
try {
|
|
570
429
|
const localModuleName = localModule.config.name ?? localModule.address;
|
|
571
|
-
this.logger?.debug(`Checking for inbound
|
|
430
|
+
this.logger?.debug(`Checking for inbound queries to ${localModuleName}`);
|
|
572
431
|
const queries = await this.findQueriesToAddress(localModule.address);
|
|
573
432
|
if (queries.length === 0)
|
|
574
433
|
return;
|
|
575
|
-
this.logger?.debug(`Found
|
|
434
|
+
this.logger?.debug(`Found queries addressed to local module: ${localModuleName}`);
|
|
576
435
|
for (const query of queries) {
|
|
577
436
|
await this.callLocalModule(localModule, query);
|
|
578
437
|
}
|
|
579
438
|
} catch (error) {
|
|
580
|
-
this.logger?.error(`Error processing
|
|
439
|
+
this.logger?.error(`Error processing queries for address ${localModule.address}: ${error}`);
|
|
581
440
|
}
|
|
582
441
|
}));
|
|
583
442
|
};
|
|
584
443
|
};
|
|
585
444
|
|
|
586
|
-
// src/AbstractModuleHost/AbstractModuleHost.ts
|
|
587
|
-
import { Base as Base3 } from "@xylabs/object";
|
|
588
|
-
var AbstractModuleHost = class extends Base3 {
|
|
589
|
-
static {
|
|
590
|
-
__name(this, "AbstractModuleHost");
|
|
591
|
-
}
|
|
592
|
-
};
|
|
593
|
-
|
|
594
445
|
// src/AsyncQueryBus/ModuleHost/ModuleHost.ts
|
|
595
446
|
var AsyncQueryBusModuleHost = class extends AbstractModuleHost {
|
|
596
447
|
static {
|
|
@@ -620,6 +471,7 @@ var AsyncQueryBusModuleHost = class extends AbstractModuleHost {
|
|
|
620
471
|
};
|
|
621
472
|
|
|
622
473
|
// src/AsyncQueryBus/ModuleProxy/ModuleProxy.ts
|
|
474
|
+
import { AbstractModuleProxy } from "@xyo-network/abstract-bridge";
|
|
623
475
|
var AsyncQueryBusModuleProxy = class extends AbstractModuleProxy {
|
|
624
476
|
static {
|
|
625
477
|
__name(this, "AsyncQueryBusModuleProxy");
|
|
@@ -636,12 +488,10 @@ var PubSubBridgeSchema = "network.xyo.bridge.pubsub";
|
|
|
636
488
|
var PubSubBridgeConfigSchema = `${PubSubBridgeSchema}.config`;
|
|
637
489
|
|
|
638
490
|
// src/PubSubBridge.ts
|
|
639
|
-
import { assertEx as
|
|
640
|
-
import { isAddress } from "@xylabs/hex";
|
|
491
|
+
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
641
492
|
import { AbstractBridge } from "@xyo-network/abstract-bridge";
|
|
642
493
|
import { Account } from "@xyo-network/account";
|
|
643
|
-
import {
|
|
644
|
-
import { creatableModule, ModuleConfigSchema as ModuleConfigSchema2 } from "@xyo-network/module-model";
|
|
494
|
+
import { creatableModule } from "@xyo-network/module-model";
|
|
645
495
|
function _ts_decorate(decorators, target, key, desc) {
|
|
646
496
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
647
497
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
@@ -664,74 +514,51 @@ var PubSubBridge = class extends AbstractBridge {
|
|
|
664
514
|
_configRootAddress = "";
|
|
665
515
|
_configStateStoreArchivist = "";
|
|
666
516
|
_configStateStoreBoundWitnessDiviner = "";
|
|
517
|
+
_exposedAddresses = [];
|
|
667
518
|
_lastState;
|
|
668
519
|
_busClient;
|
|
669
520
|
_busHost;
|
|
670
521
|
get moduleName() {
|
|
671
522
|
return `${this.config.name ?? moduleName}`;
|
|
672
523
|
}
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
}
|
|
685
|
-
getRootAddress() {
|
|
686
|
-
return this.rootAddress;
|
|
687
|
-
}
|
|
688
|
-
async resolve(idOrFilter, _options) {
|
|
689
|
-
if (idOrFilter === void 0) {
|
|
690
|
-
return [];
|
|
691
|
-
}
|
|
692
|
-
if (typeof idOrFilter === "string") {
|
|
693
|
-
const upResolve = await this.upResolver.resolve(idOrFilter);
|
|
694
|
-
if (upResolve)
|
|
695
|
-
return upResolve;
|
|
696
|
-
assertEx4(!isAddress(idOrFilter), "Name resolutions not supported");
|
|
697
|
-
const params = {
|
|
698
|
-
account: Account.randomSync(),
|
|
699
|
-
busClient: assertEx4(this.busClient(), "Bus client not initialized"),
|
|
700
|
-
moduleAddress: idOrFilter,
|
|
701
|
-
queries: []
|
|
702
|
-
};
|
|
703
|
-
return await Promise.resolve(new AsyncQueryBusModuleProxy(params));
|
|
704
|
-
} else {
|
|
705
|
-
throw new TypeError("Filter not Supported");
|
|
524
|
+
async exposeHandler(id, options) {
|
|
525
|
+
const filterOptions = {
|
|
526
|
+
direction: options?.direction
|
|
527
|
+
};
|
|
528
|
+
const module = await super.resolve(id, filterOptions);
|
|
529
|
+
if (module) {
|
|
530
|
+
const host = assertEx3(this.busHost(), "Not configured as a host");
|
|
531
|
+
host.expose(module.address);
|
|
532
|
+
return [
|
|
533
|
+
module.address
|
|
534
|
+
];
|
|
706
535
|
}
|
|
536
|
+
return [];
|
|
707
537
|
}
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
538
|
+
resolveHandler(id, _options) {
|
|
539
|
+
const account = Account.randomSync();
|
|
540
|
+
const params = {
|
|
541
|
+
account,
|
|
542
|
+
bridge: this,
|
|
543
|
+
busClient: assertEx3(this.busClient(), "Bus client not initialized"),
|
|
544
|
+
moduleAddress: id
|
|
711
545
|
};
|
|
546
|
+
return new AsyncQueryBusModuleProxy(params);
|
|
712
547
|
}
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
name: "",
|
|
717
|
-
schema: ModuleConfigSchema2
|
|
718
|
-
},
|
|
719
|
-
schema: ModuleManifestPayloadSchema
|
|
548
|
+
async unexposeHandler(id, options) {
|
|
549
|
+
const filterOptions = {
|
|
550
|
+
direction: options?.direction
|
|
720
551
|
};
|
|
721
|
-
|
|
722
|
-
|
|
552
|
+
const module = await super.resolve(id, filterOptions);
|
|
553
|
+
if (module) {
|
|
554
|
+
const host = assertEx3(this.busHost(), "Not configured as a host");
|
|
555
|
+
host.unexpose(module.address);
|
|
556
|
+
return [
|
|
557
|
+
module.address
|
|
558
|
+
];
|
|
559
|
+
}
|
|
723
560
|
return [];
|
|
724
561
|
}
|
|
725
|
-
async targetQuery(address, query, payloads) {
|
|
726
|
-
if (!this.connected)
|
|
727
|
-
throw new Error("Not connected");
|
|
728
|
-
await this.started("throw");
|
|
729
|
-
const bus = assertEx4(this.busClient(), "Client not configured");
|
|
730
|
-
return bus?.send(address, query, payloads);
|
|
731
|
-
}
|
|
732
|
-
targetQueryable(_address, _query, _payloads, _queryConfig) {
|
|
733
|
-
return true;
|
|
734
|
-
}
|
|
735
562
|
busClient() {
|
|
736
563
|
if (!this._busClient && this.config.client) {
|
|
737
564
|
this._busClient = new AsyncQueryBusClient({
|
|
@@ -752,10 +579,9 @@ var PubSubBridge = class extends AbstractBridge {
|
|
|
752
579
|
}
|
|
753
580
|
return this._busHost;
|
|
754
581
|
}
|
|
755
|
-
|
|
756
|
-
await Promise.resolve(this.connect());
|
|
582
|
+
startHandler() {
|
|
757
583
|
this.busHost()?.start();
|
|
758
|
-
return true;
|
|
584
|
+
return Promise.resolve(true);
|
|
759
585
|
}
|
|
760
586
|
stopHandler(_timeout) {
|
|
761
587
|
this.busHost()?.stop();
|
|
@@ -766,7 +592,7 @@ PubSubBridge = _ts_decorate([
|
|
|
766
592
|
creatableModule()
|
|
767
593
|
], PubSubBridge);
|
|
768
594
|
export {
|
|
769
|
-
|
|
595
|
+
AbstractModuleHost,
|
|
770
596
|
AsyncQueryBusClient,
|
|
771
597
|
AsyncQueryBusHost,
|
|
772
598
|
AsyncQueryBusModuleHost,
|