@xyo-network/bridge-http 2.105.1 → 2.106.0-rc.2
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/HttpBridgeBase.d.cts +4 -1
- package/dist/browser/HttpBridgeBase.d.cts.map +1 -1
- package/dist/browser/HttpBridgeBase.d.mts +4 -1
- package/dist/browser/HttpBridgeBase.d.mts.map +1 -1
- package/dist/browser/HttpBridgeBase.d.ts +4 -1
- package/dist/browser/HttpBridgeBase.d.ts.map +1 -1
- package/dist/browser/HttpBridgeModuleResolver.d.cts +18 -2
- package/dist/browser/HttpBridgeModuleResolver.d.cts.map +1 -1
- package/dist/browser/HttpBridgeModuleResolver.d.mts +18 -2
- package/dist/browser/HttpBridgeModuleResolver.d.mts.map +1 -1
- package/dist/browser/HttpBridgeModuleResolver.d.ts +18 -2
- package/dist/browser/HttpBridgeModuleResolver.d.ts.map +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts +9 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts +9 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts +9 -1
- package/dist/browser/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/browser/index-browser.cjs +132 -60
- package/dist/browser/index-browser.cjs.map +1 -1
- package/dist/browser/index-browser.js +127 -55
- package/dist/browser/index-browser.js.map +1 -1
- package/dist/neutral/HttpBridgeBase.d.cts +4 -1
- package/dist/neutral/HttpBridgeBase.d.cts.map +1 -1
- package/dist/neutral/HttpBridgeBase.d.mts +4 -1
- package/dist/neutral/HttpBridgeBase.d.mts.map +1 -1
- package/dist/neutral/HttpBridgeBase.d.ts +4 -1
- package/dist/neutral/HttpBridgeBase.d.ts.map +1 -1
- package/dist/neutral/HttpBridgeModuleResolver.d.cts +18 -2
- package/dist/neutral/HttpBridgeModuleResolver.d.cts.map +1 -1
- package/dist/neutral/HttpBridgeModuleResolver.d.mts +18 -2
- package/dist/neutral/HttpBridgeModuleResolver.d.mts.map +1 -1
- package/dist/neutral/HttpBridgeModuleResolver.d.ts +18 -2
- package/dist/neutral/HttpBridgeModuleResolver.d.ts.map +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts +9 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts +9 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts +9 -1
- package/dist/neutral/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/neutral/index-browser.cjs +132 -60
- package/dist/neutral/index-browser.cjs.map +1 -1
- package/dist/neutral/index-browser.js +127 -55
- package/dist/neutral/index-browser.js.map +1 -1
- package/dist/node/HttpBridgeBase.d.cts +4 -1
- package/dist/node/HttpBridgeBase.d.cts.map +1 -1
- package/dist/node/HttpBridgeBase.d.mts +4 -1
- package/dist/node/HttpBridgeBase.d.mts.map +1 -1
- package/dist/node/HttpBridgeBase.d.ts +4 -1
- package/dist/node/HttpBridgeBase.d.ts.map +1 -1
- package/dist/node/HttpBridgeModuleResolver.d.cts +18 -2
- package/dist/node/HttpBridgeModuleResolver.d.cts.map +1 -1
- package/dist/node/HttpBridgeModuleResolver.d.mts +18 -2
- package/dist/node/HttpBridgeModuleResolver.d.mts.map +1 -1
- package/dist/node/HttpBridgeModuleResolver.d.ts +18 -2
- package/dist/node/HttpBridgeModuleResolver.d.ts.map +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.cts +9 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.cts.map +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.mts +9 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.mts.map +1 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.ts +9 -1
- package/dist/node/ModuleProxy/ModuleProxy.d.ts.map +1 -1
- package/dist/node/index.cjs +145 -72
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +139 -66
- package/dist/node/index.js.map +1 -1
- package/package.json +24 -20
- package/src/HttpBridgeBase.ts +52 -5
- package/src/HttpBridgeModuleResolver.ts +42 -35
- package/src/ModuleProxy/ModuleProxy.ts +68 -2
package/dist/node/index.js
CHANGED
|
@@ -10,38 +10,44 @@ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
|
10
10
|
var HttpBridgeConfigSchema = "network.xyo.bridge.http.config";
|
|
11
11
|
|
|
12
12
|
// src/HttpBridgeFull.ts
|
|
13
|
-
import { assertEx as
|
|
14
|
-
import { exists as
|
|
13
|
+
import { assertEx as assertEx4 } from "@xylabs/assert";
|
|
14
|
+
import { exists as exists3 } from "@xylabs/exists";
|
|
15
15
|
import { toJsonString as toJsonString2 } from "@xylabs/object";
|
|
16
16
|
import { isQueryBoundWitness } from "@xyo-network/boundwitness-model";
|
|
17
17
|
import { creatableModule as creatableModule2, resolveAddressToInstanceUp } from "@xyo-network/module-model";
|
|
18
18
|
import express from "express";
|
|
19
19
|
|
|
20
20
|
// src/HttpBridgeBase.ts
|
|
21
|
-
import { assertEx as
|
|
21
|
+
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
22
22
|
import { AxiosJson } from "@xylabs/axios";
|
|
23
|
-
import { exists } from "@xylabs/exists";
|
|
23
|
+
import { exists as exists2 } from "@xylabs/exists";
|
|
24
24
|
import { forget as forget2 } from "@xylabs/forget";
|
|
25
25
|
import { toJsonString } from "@xylabs/object";
|
|
26
26
|
import { AbstractBridge } from "@xyo-network/bridge-abstract";
|
|
27
27
|
import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
|
|
28
|
-
import { creatableModule, ModuleStateQuerySchema } from "@xyo-network/module-model";
|
|
28
|
+
import { creatableModule, ModuleStateQuerySchema, ResolveHelper as ResolveHelper3 } from "@xyo-network/module-model";
|
|
29
29
|
import { asAttachableNodeInstance } from "@xyo-network/node-model";
|
|
30
30
|
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
31
|
-
import { Mutex, Semaphore } from "async-mutex";
|
|
32
|
-
import { LRUCache } from "lru-cache";
|
|
31
|
+
import { Mutex as Mutex2, Semaphore } from "async-mutex";
|
|
32
|
+
import { LRUCache as LRUCache2 } from "lru-cache";
|
|
33
33
|
|
|
34
34
|
// src/HttpBridgeModuleResolver.ts
|
|
35
|
-
import { assertEx } from "@xylabs/assert";
|
|
36
|
-
import { isAddress } from "@xylabs/hex";
|
|
35
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
36
|
+
import { isAddress as isAddress2 } from "@xylabs/hex";
|
|
37
37
|
import { Account } from "@xyo-network/account";
|
|
38
38
|
import { AbstractBridgeModuleResolver, wrapModuleWithType } from "@xyo-network/bridge-abstract";
|
|
39
39
|
import { ConfigSchema } from "@xyo-network/config-payload-plugin";
|
|
40
|
-
import { asModuleInstance, ModuleConfigSchema, ResolveHelper } from "@xyo-network/module-model";
|
|
40
|
+
import { asModuleInstance, ModuleConfigSchema, ResolveHelper as ResolveHelper2 } from "@xyo-network/module-model";
|
|
41
|
+
import { Mutex } from "async-mutex";
|
|
42
|
+
import { LRUCache } from "lru-cache";
|
|
41
43
|
|
|
42
44
|
// src/ModuleProxy/ModuleProxy.ts
|
|
45
|
+
import { assertEx } from "@xylabs/assert";
|
|
46
|
+
import { exists } from "@xylabs/exists";
|
|
43
47
|
import { forget } from "@xylabs/forget";
|
|
48
|
+
import { isAddress } from "@xylabs/hex";
|
|
44
49
|
import { AbstractModuleProxy } from "@xyo-network/bridge-abstract";
|
|
50
|
+
import { ResolveHelper } from "@xyo-network/module-model";
|
|
45
51
|
var _HttpModuleProxy = class _HttpModuleProxy extends AbstractModuleProxy {
|
|
46
52
|
constructor(params) {
|
|
47
53
|
_HttpModuleProxy.createCount = _HttpModuleProxy.createCount + 1;
|
|
@@ -63,6 +69,40 @@ var _HttpModuleProxy = class _HttpModuleProxy extends AbstractModuleProxy {
|
|
|
63
69
|
}
|
|
64
70
|
return result;
|
|
65
71
|
}
|
|
72
|
+
async publicChildren() {
|
|
73
|
+
return (await Promise.all(Object.values(await this.childAddressMap()).filter(exists).map((address) => this.resolve(address)))).filter(exists);
|
|
74
|
+
}
|
|
75
|
+
async resolve(idOrFilter = "*", options = {}) {
|
|
76
|
+
const config = {
|
|
77
|
+
address: this.address,
|
|
78
|
+
dead: this.dead,
|
|
79
|
+
downResolver: this.downResolver,
|
|
80
|
+
logger: this.logger,
|
|
81
|
+
module: this,
|
|
82
|
+
transformers: this.moduleIdentifierTransformers,
|
|
83
|
+
upResolver: this.upResolver
|
|
84
|
+
};
|
|
85
|
+
if (idOrFilter === "*") {
|
|
86
|
+
return await this.publicChildren();
|
|
87
|
+
}
|
|
88
|
+
switch (typeof idOrFilter) {
|
|
89
|
+
case "string": {
|
|
90
|
+
const parts = idOrFilter.split(":");
|
|
91
|
+
const first = assertEx(parts.shift(), () => "Missing first");
|
|
92
|
+
const remainingPath = parts.join(":");
|
|
93
|
+
const address = isAddress(first) ? first : this.id === first ? this.address : this.childAddressByName(first);
|
|
94
|
+
if (!address) return void 0;
|
|
95
|
+
const firstInstance = await this.params.host.resolve(address);
|
|
96
|
+
return remainingPath ? await (firstInstance == null ? void 0 : firstInstance.resolve(remainingPath)) : firstInstance;
|
|
97
|
+
}
|
|
98
|
+
case "object": {
|
|
99
|
+
return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address);
|
|
100
|
+
}
|
|
101
|
+
default: {
|
|
102
|
+
return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
66
106
|
};
|
|
67
107
|
__name(_HttpModuleProxy, "HttpModuleProxy");
|
|
68
108
|
__publicField(_HttpModuleProxy, "createCount", 0);
|
|
@@ -70,64 +110,70 @@ var HttpModuleProxy = _HttpModuleProxy;
|
|
|
70
110
|
|
|
71
111
|
// src/HttpBridgeModuleResolver.ts
|
|
72
112
|
var _HttpBridgeModuleResolver = class _HttpBridgeModuleResolver extends AbstractBridgeModuleResolver {
|
|
113
|
+
_resolvedCache = new LRUCache({
|
|
114
|
+
max: 1e3
|
|
115
|
+
});
|
|
116
|
+
_resolvedCacheMutex = new Mutex();
|
|
73
117
|
get querySender() {
|
|
74
118
|
return this.params.querySender;
|
|
75
119
|
}
|
|
76
120
|
moduleUrl(address) {
|
|
77
121
|
return new URL(address, this.params.rootUrl);
|
|
78
122
|
}
|
|
79
|
-
async resolveHandler(id, options) {
|
|
80
|
-
var _a, _b;
|
|
123
|
+
async resolveHandler(id, options, params) {
|
|
81
124
|
const parentResult = await super.resolveHandler(id, options);
|
|
82
125
|
if (parentResult.length > 0) {
|
|
83
126
|
return parentResult;
|
|
84
127
|
}
|
|
85
|
-
if (id === "*") {
|
|
86
|
-
return [];
|
|
87
|
-
}
|
|
88
128
|
const idParts = id.split(":");
|
|
89
|
-
const untransformedFirstPart =
|
|
90
|
-
const firstPart = await
|
|
91
|
-
|
|
92
|
-
assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`);
|
|
129
|
+
const untransformedFirstPart = assertEx2(idParts.shift(), () => "Missing module identifier");
|
|
130
|
+
const firstPart = await ResolveHelper2.transformModuleIdentifier(untransformedFirstPart);
|
|
131
|
+
assertEx2(isAddress2(firstPart), () => `Invalid module address: ${firstPart}`);
|
|
93
132
|
const remainderParts = idParts.join(":");
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
133
|
+
const instance = await this._resolvedCacheMutex.runExclusive(async () => {
|
|
134
|
+
var _a, _b, _c;
|
|
135
|
+
const cachedMod = this._resolvedCache.get(firstPart);
|
|
136
|
+
if (cachedMod) {
|
|
137
|
+
const result2 = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, {
|
|
138
|
+
...options,
|
|
139
|
+
maxDepth: ((options == null ? void 0 : options.maxDepth) ?? 5) - 1
|
|
140
|
+
});
|
|
141
|
+
return result2;
|
|
142
|
+
}
|
|
143
|
+
const account = Account.randomSync();
|
|
144
|
+
const finalParams = {
|
|
145
|
+
account,
|
|
146
|
+
archiving: this.params.archiving,
|
|
147
|
+
config: {
|
|
148
|
+
schema: ModuleConfigSchema
|
|
149
|
+
},
|
|
150
|
+
host: this,
|
|
151
|
+
moduleAddress: firstPart,
|
|
152
|
+
onQuerySendFinished: this.params.onQuerySendFinished,
|
|
153
|
+
onQuerySendStarted: this.params.onQuerySendStarted,
|
|
154
|
+
querySender: this.params.querySender,
|
|
155
|
+
...params
|
|
156
|
+
};
|
|
157
|
+
(_a = this.logger) == null ? void 0 : _a.debug(`creating HttpProxy [${firstPart}] ${id}`);
|
|
158
|
+
console.log(`creating HttpProxy [${firstPart}] ${id}`);
|
|
159
|
+
const proxy = new HttpModuleProxy(finalParams);
|
|
110
160
|
const state = await proxy.state();
|
|
111
161
|
if (state) {
|
|
112
162
|
const configSchema = (_b = state.find((payload) => payload.schema === ConfigSchema)) == null ? void 0 : _b.config;
|
|
113
|
-
const config =
|
|
163
|
+
const config = assertEx2(state.find((payload) => payload.schema === configSchema), () => "Unable to locate config");
|
|
114
164
|
proxy.setConfig(config);
|
|
115
165
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
return [
|
|
129
|
-
instance
|
|
130
|
-
];
|
|
166
|
+
console.log(`created HttpProxy [${firstPart}] ${proxy.id}`);
|
|
167
|
+
await ((_c = proxy.start) == null ? void 0 : _c.call(proxy));
|
|
168
|
+
const wrapped = wrapModuleWithType(proxy, account);
|
|
169
|
+
assertEx2(asModuleInstance(wrapped, {}), () => `Failed to asModuleInstance [${id}]`);
|
|
170
|
+
this._resolvedCache.set(wrapped.address, wrapped);
|
|
171
|
+
return wrapped;
|
|
172
|
+
});
|
|
173
|
+
const result = remainderParts.length > 0 ? await instance.resolve(remainderParts, options) : instance;
|
|
174
|
+
return result ? [
|
|
175
|
+
result
|
|
176
|
+
] : [];
|
|
131
177
|
}
|
|
132
178
|
};
|
|
133
179
|
__name(_HttpBridgeModuleResolver, "HttpBridgeModuleResolver");
|
|
@@ -143,8 +189,8 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
143
189
|
__name(_ts_decorate, "_ts_decorate");
|
|
144
190
|
var _HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
|
|
145
191
|
_axios;
|
|
146
|
-
_discoverRootsMutex = new
|
|
147
|
-
_failureTimeCache = new
|
|
192
|
+
_discoverRootsMutex = new Mutex2();
|
|
193
|
+
_failureTimeCache = new LRUCache2({
|
|
148
194
|
max: _HttpBridgeBase.maxFailureCacheSize
|
|
149
195
|
});
|
|
150
196
|
_querySemaphore;
|
|
@@ -155,7 +201,7 @@ var _HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
|
|
|
155
201
|
}
|
|
156
202
|
get clientUrl() {
|
|
157
203
|
var _a;
|
|
158
|
-
return
|
|
204
|
+
return assertEx3(((_a = this.config.client) == null ? void 0 : _a.url) ?? this.config.nodeUrl, () => "No Url Set");
|
|
159
205
|
}
|
|
160
206
|
get failureRetryTime() {
|
|
161
207
|
return this.config.failureRetryTime ?? _HttpBridgeBase.defaultFailureRetryTime;
|
|
@@ -197,6 +243,23 @@ var _HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
|
|
|
197
243
|
});
|
|
198
244
|
return this._resolver;
|
|
199
245
|
}
|
|
246
|
+
async connect(id) {
|
|
247
|
+
const transformedId = assertEx3(await ResolveHelper3.transformModuleIdentifier(id), () => `Unable to transform module identifier: ${id}`);
|
|
248
|
+
const existingInstance = await this.resolve(transformedId);
|
|
249
|
+
if (existingInstance) {
|
|
250
|
+
return existingInstance.address;
|
|
251
|
+
}
|
|
252
|
+
const [instance] = await this.resolver.resolveHandler(id);
|
|
253
|
+
return this.connectInstance(instance);
|
|
254
|
+
}
|
|
255
|
+
async disconnect(id) {
|
|
256
|
+
const transformedId = assertEx3(await ResolveHelper3.transformModuleIdentifier(id), () => `Unable to transform module identifier: ${id}`);
|
|
257
|
+
const instance = await this.resolve(transformedId);
|
|
258
|
+
if (instance) {
|
|
259
|
+
this.downResolver.remove(instance.address);
|
|
260
|
+
return instance.address;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
200
263
|
exposeHandler(_id, _options) {
|
|
201
264
|
throw new Error("Unsupported");
|
|
202
265
|
}
|
|
@@ -211,7 +274,7 @@ var _HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
|
|
|
211
274
|
(_a = this.logger) == null ? void 0 : _a.debug(`HttpBridge:discoverRoots.state [${state == null ? void 0 : state.length}]`);
|
|
212
275
|
const nodeManifest = state == null ? void 0 : state.find(isPayloadOfSchemaType(NodeManifestPayloadSchema));
|
|
213
276
|
if (nodeManifest) {
|
|
214
|
-
const mods = (await this.resolveRootNode(nodeManifest)).filter(
|
|
277
|
+
const mods = (await this.resolveRootNode(nodeManifest)).filter(exists2);
|
|
215
278
|
(_b = this.logger) == null ? void 0 : _b.debug(`HttpBridge:discoverRoots [${mods.length}]`);
|
|
216
279
|
this._roots = mods;
|
|
217
280
|
} else {
|
|
@@ -268,6 +331,14 @@ var _HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
|
|
|
268
331
|
unexposeHandler(_id, _options) {
|
|
269
332
|
throw new Error("Unsupported");
|
|
270
333
|
}
|
|
334
|
+
connectInstance(instance) {
|
|
335
|
+
var _a;
|
|
336
|
+
if (instance) {
|
|
337
|
+
this.downResolver.add(instance);
|
|
338
|
+
(_a = this.logger) == null ? void 0 : _a.log(`Connect: ${instance.id}`);
|
|
339
|
+
return instance.address;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
271
342
|
async getRootState() {
|
|
272
343
|
var _a;
|
|
273
344
|
const queryPayload = {
|
|
@@ -291,15 +362,17 @@ var _HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
|
|
|
291
362
|
}
|
|
292
363
|
async resolveRootNode(nodeManifest) {
|
|
293
364
|
var _a;
|
|
294
|
-
const rootModule =
|
|
365
|
+
const rootModule = assertEx3((await this.resolver.resolveHandler(assertEx3((_a = nodeManifest.status) == null ? void 0 : _a.address, () => "Root has no address"), void 0, {
|
|
366
|
+
manifest: nodeManifest
|
|
367
|
+
})).at(0), () => {
|
|
295
368
|
var _a2;
|
|
296
369
|
return `Root not found [${(_a2 = nodeManifest.status) == null ? void 0 : _a2.address}]`;
|
|
297
370
|
});
|
|
298
|
-
|
|
371
|
+
assertEx3(rootModule.constructor.name !== "HttpModuleProxy", () => "rootModule is not a Wrapper");
|
|
299
372
|
const rootNode = asAttachableNodeInstance(rootModule, "Root modules is not a node");
|
|
300
373
|
if (rootNode) {
|
|
301
374
|
this.logger.debug(`rootNode: ${rootNode.id}`);
|
|
302
|
-
this.
|
|
375
|
+
this.connectInstance(rootNode);
|
|
303
376
|
return [
|
|
304
377
|
rootNode
|
|
305
378
|
];
|
|
@@ -350,14 +423,14 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
|
|
|
350
423
|
var _a, _b;
|
|
351
424
|
const { maxDepth = 5 } = options ?? {};
|
|
352
425
|
console.log(`exposeChild: ${mod.address} ${mod == null ? void 0 : mod.id} ${maxDepth}`);
|
|
353
|
-
|
|
426
|
+
assertEx4(this.config.host, () => "Not configured as a host");
|
|
354
427
|
this._exposedModules.push(new WeakRef(mod));
|
|
355
428
|
const children = maxDepth > 0 ? await ((_a = mod.publicChildren) == null ? void 0 : _a.call(mod)) ?? [] : [];
|
|
356
429
|
this.logger.log(`childrenToExpose [${mod.id}][${mod.address}]: ${toJsonString2(children.map((child) => child.id))}`);
|
|
357
430
|
const exposedChildren = (await Promise.all(children.map((child) => this.exposeChild(child, {
|
|
358
431
|
maxDepth: maxDepth - 1,
|
|
359
432
|
required: false
|
|
360
|
-
})))).flat().filter(
|
|
433
|
+
})))).flat().filter(exists3);
|
|
361
434
|
const allExposed = [
|
|
362
435
|
mod,
|
|
363
436
|
...exposedChildren
|
|
@@ -381,7 +454,7 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
|
|
|
381
454
|
return this._exposedModules.map((ref) => {
|
|
382
455
|
var _a;
|
|
383
456
|
return (_a = ref.deref()) == null ? void 0 : _a.address;
|
|
384
|
-
}).filter(
|
|
457
|
+
}).filter(exists3);
|
|
385
458
|
}
|
|
386
459
|
async startHandler() {
|
|
387
460
|
return await super.startHandler() && this.startHttpServer();
|
|
@@ -392,12 +465,12 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
|
|
|
392
465
|
async unexposeHandler(address, options) {
|
|
393
466
|
var _a, _b;
|
|
394
467
|
const { maxDepth = 2, required = true } = options ?? {};
|
|
395
|
-
|
|
468
|
+
assertEx4(this.config.host, () => "Not configured as a host");
|
|
396
469
|
const mod = (_a = this._exposedModules.find((ref) => {
|
|
397
470
|
var _a2;
|
|
398
471
|
return ((_a2 = ref.deref()) == null ? void 0 : _a2.address) === address;
|
|
399
472
|
})) == null ? void 0 : _a.deref();
|
|
400
|
-
|
|
473
|
+
assertEx4(!required || mod, () => `Module not exposed: ${address}`);
|
|
401
474
|
this._exposedModules = this._exposedModules.filter((ref) => {
|
|
402
475
|
var _a2;
|
|
403
476
|
return ((_a2 = ref.deref()) == null ? void 0 : _a2.address) !== address;
|
|
@@ -407,7 +480,7 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
|
|
|
407
480
|
const exposedChildren = (await Promise.all(children.map((child) => this.unexposeHandler(child.address, {
|
|
408
481
|
maxDepth: maxDepth - 1,
|
|
409
482
|
required: false
|
|
410
|
-
})))).flat().filter(
|
|
483
|
+
})))).flat().filter(exists3);
|
|
411
484
|
return [
|
|
412
485
|
mod,
|
|
413
486
|
...exposedChildren
|
|
@@ -450,13 +523,13 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
|
|
|
450
523
|
startHttpServer() {
|
|
451
524
|
var _a;
|
|
452
525
|
if (this.config.host) {
|
|
453
|
-
|
|
526
|
+
assertEx4(!this._server, () => "Server already started");
|
|
454
527
|
this._server = this.app.listen(((_a = this.config.host) == null ? void 0 : _a.port) ?? 3030);
|
|
455
528
|
}
|
|
456
529
|
return true;
|
|
457
530
|
}
|
|
458
531
|
stopHttpServer() {
|
|
459
|
-
const server =
|
|
532
|
+
const server = assertEx4(this._server, () => "Server not started");
|
|
460
533
|
server.close();
|
|
461
534
|
this._server = void 0;
|
|
462
535
|
return true;
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/HttpBridgeConfig.ts","../../src/HttpBridgeFull.ts","../../src/HttpBridgeBase.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\nexport const HttpBridgeConfigSchema: HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\n\nexport type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: BridgeConfig['client'] & {\n url: string\n }\n failureRetryTime?: number\n failureTimeCacheMax?: number\n host?: {\n port: number\n }\n maxConnections?: number\n maxPayloadSizeWarning?: number\n /** @deprecated use client.url instead */\n nodeUrl?: string\n schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : HttpBridgeConfigSchema\n>\n","import { Server } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { ApiEnvelopeSuccess } from '@xyo-network/api-models'\nimport { isQueryBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleQueryResult, resolveAddressToInstanceUp } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport express, { Application, Request, Response } from 'express'\n\nimport { HttpBridgeBase } from './HttpBridgeBase'\nimport { HttpBridgeConfig } from './HttpBridgeConfig'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {\n protected _app?: Application\n protected _exposedModules: WeakRef<ModuleInstance>[] = []\n protected _server?: Server\n\n get app() {\n this._app =\n this._app ??\n (() => {\n const app = express()\n app.use(express.json())\n\n app.post<Payload[]>('/', (req, res) => {\n this.handlePost(req, res)\n })\n\n return app\n })()\n return this._app\n }\n\n async exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 5 } = options ?? {}\n console.log(`exposeChild: ${mod.address} ${mod?.id} ${maxDepth}`)\n assertEx(this.config.host, () => 'Not configured as a host')\n this._exposedModules.push(new WeakRef(mod))\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n this.logger.log(`childrenToExpose [${mod.id}][${mod.address}]: ${toJsonString(children.map((child) => child.id))}`)\n const exposedChildren = (await Promise.all(children.map((child) => this.exposeChild(child, { maxDepth: maxDepth - 1, required: false }))))\n .flat()\n .filter(exists)\n const allExposed = [mod, ...exposedChildren]\n\n for (const exposedMod of allExposed) this.logger?.log(`exposed: ${exposedMod.address} [${mod.id}]`)\n\n return allExposed\n }\n\n override async exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { required = true } = options ?? {}\n const mod = await resolveAddressToInstanceUp(this, address)\n console.log(`exposeHandler: ${address} ${mod?.id}`)\n if (required && !mod) {\n throw new Error(`Unable to find required module: ${address}`)\n }\n if (mod) {\n return this.exposeChild(mod, options)\n }\n return []\n }\n\n override exposedHandler(): Address[] {\n return this._exposedModules.map((ref) => ref.deref()?.address).filter(exists)\n }\n\n override async startHandler(): Promise<boolean> {\n return (await super.startHandler()) && this.startHttpServer()\n }\n\n override async stopHandler(_timeout?: number | undefined): Promise<boolean> {\n return (await super.stopHandler()) && this.stopHttpServer()\n }\n\n override async unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 2, required = true } = options ?? {}\n assertEx(this.config.host, () => 'Not configured as a host')\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n assertEx(!required || mod, () => `Module not exposed: ${address}`)\n this._exposedModules = this._exposedModules.filter((ref) => ref.deref()?.address !== address)\n if (mod) {\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n const exposedChildren = (\n await Promise.all(children.map((child) => this.unexposeHandler(child.address, { maxDepth: maxDepth - 1, required: false })))\n )\n .flat()\n .filter(exists)\n return [mod, ...exposedChildren]\n }\n return []\n }\n\n protected async callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null> {\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n if (mod) {\n return await mod.query(query, payloads)\n }\n return null\n }\n\n protected handlePost(req: Request<Payload[]>, res: Response) {\n const allPayloads = req.body as Payload[]\n const query = allPayloads.find(isQueryBoundWitness) as QueryBoundWitness\n const payloads = allPayloads.filter((payload) => !isQueryBoundWitness(payload))\n this.callLocalModule(req.route, query, payloads)\n .then((result) => {\n if (result === null) {\n res.status(404).json({ error: 'Module not found' })\n } else {\n const envelope = {\n data: result,\n } as ApiEnvelopeSuccess<ModuleQueryResult>\n res.json(envelope)\n }\n })\n .catch((ex) => {\n res.status(500).json({ error: (ex as Error).message })\n })\n }\n\n protected startHttpServer() {\n if (this.config.host) {\n assertEx(!this._server, () => 'Server already started')\n this._server = this.app.listen(this.config.host?.port ?? 3030)\n }\n return true\n }\n\n protected stopHttpServer() {\n const server = assertEx(this._server, () => 'Server not started')\n server.close()\n this._server = undefined\n return true\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosError, AxiosJson } from '@xylabs/axios'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport {\n BridgeExposeOptions,\n BridgeModule,\n BridgeParams,\n BridgeUnexposeOptions,\n QuerySendFinishedEventArgs,\n QuerySendStartedEventArgs,\n} from '@xyo-network/bridge-model'\nimport { NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n creatableModule,\n ModuleInstance,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n ModuleStateQuerySchema,\n} from '@xyo-network/module-model'\nimport { asAttachableNodeInstance } from '@xyo-network/node-model'\nimport { isPayloadOfSchemaType, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { HttpBridgeConfig, HttpBridgeConfigSchema } from './HttpBridgeConfig'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver'\nimport { BridgeQuerySender } from './ModuleProxy'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {\n axios?: AxiosJson\n}\n\n@creatableModule()\nexport class HttpBridgeBase<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static axios = new AxiosJson()\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _axios?: AxiosJson\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<Address, number>({ max: HttpBridgeBase.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get axios() {\n this._axios = this._axios ?? this.params.axios ?? HttpBridgeBase.axios\n return this._axios\n }\n\n get clientUrl() {\n // eslint-disable-next-line deprecation/deprecation\n return assertEx(this.config.client?.url ?? this.config.nodeUrl, () => 'No Url Set')\n }\n\n get failureRetryTime() {\n return this.config.failureRetryTime ?? HttpBridgeBase.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.config.maxConnections ?? HttpBridgeBase.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.config.maxPayloadSizeWarning ?? HttpBridgeBase.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ??\n new HttpBridgeModuleResolver({\n additionalSigners: this.additionalSigners,\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n onQuerySendFinished: (args: Omit<QuerySendFinishedEventArgs, 'module'>) => {\n forget(this.emit('querySendFinished', { module: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'module'>) => {\n forget(this.emit('querySendStarted', { module: this, ...args }))\n },\n querySender: this,\n root: this,\n rootUrl: this.clientUrl,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(force?: boolean): Promise<ModuleInstance[]> {\n return await this._discoverRootsMutex.runExclusive(async () => {\n if (this._roots === undefined || force) {\n const state = await this.getRootState()\n this.logger?.debug(`HttpBridge:discoverRoots.state [${state?.length}]`)\n const nodeManifest = state?.find(isPayloadOfSchemaType<WithMeta<NodeManifestPayload>>(NodeManifestPayloadSchema))\n if (nodeManifest) {\n const mods = (await this.resolveRootNode(nodeManifest)).filter(exists)\n this.logger?.debug(`HttpBridge:discoverRoots [${mods.length}]`)\n this._roots = mods\n } else {\n this._roots = []\n }\n }\n return this._roots\n })\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.clientUrl)\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n const payloadSize = JSON.stringify([query, payloads]).length\n if (payloadSize > this.maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n const moduleUrl = this.moduleUrl(targetAddress).href\n const result = await this.axios.post<ApiEnvelope<ModuleQueryResult<TOut>>>(moduleUrl, [query, payloads])\n if (result.status === 404) {\n throw `target module not found [${moduleUrl}] [${result.status}]`\n }\n if (result.status >= 400) {\n this.logger?.error(`targetQuery failed [${moduleUrl}]`)\n throw `targetQuery failed [${moduleUrl}] [${result.status}]`\n }\n return result.data?.data\n } catch (ex) {\n const error = ex as AxiosError\n this.logger?.error(`Error: ${toJsonString(error)}`)\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n private async getRootState() {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const boundQuery = await this.bindQuery(queryPayload)\n try {\n const response = await this.axios.post<ApiEnvelope<ModuleQueryResult>>(this.clientUrl.toString(), boundQuery)\n if (response.status === 404) {\n return []\n }\n const [, payloads, errors] = response.data.data\n if (errors.length > 0) {\n throw new Error(`getRootState failed: ${JSON.stringify(errors, null, 2)}`)\n }\n return payloads\n } catch (ex) {\n const error = ex as Error\n this.logger?.warn(`Unable to connect to remote node: ${error.message} [${this.clientUrl}]`)\n }\n }\n\n private async resolveRootNode(nodeManifest: NodeManifestPayload): Promise<ModuleInstance[]> {\n const rootModule = assertEx(\n (await this.resolver.resolveHandler(assertEx(nodeManifest.status?.address, () => 'Root has no address'))).at(0),\n () => `Root not found [${nodeManifest.status?.address}]`,\n )\n assertEx(rootModule.constructor.name !== 'HttpModuleProxy', () => 'rootModule is not a Wrapper')\n const rootNode = asAttachableNodeInstance(rootModule, 'Root modules is not a node')\n if (rootNode) {\n this.logger.debug(`rootNode: ${rootNode.id}`)\n this.downResolver.addResolver(rootNode as unknown as ModuleResolverInstance)\n return [rootNode]\n }\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\n\nimport { BridgeQuerySender, HttpModuleProxy, HttpModuleProxyParams } from './ModuleProxy'\n\nexport interface HttpBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: BridgeQuerySender\n rootUrl: string\n}\n\nexport class HttpBridgeModuleResolver<\n T extends HttpBridgeModuleResolverParams = HttpBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n get querySender() {\n return this.params.querySender\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.params.rootUrl)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult.length > 0) {\n return parentResult\n }\n if (id === '*') {\n return []\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => `Invalid module identifier: ${id}`)\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n const moduleAddress = firstPart as Address\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const params: HttpModuleProxyParams = {\n account: Account.randomSync(),\n additionalSigners: this.params.additionalSigners,\n archiving: this.params.archiving,\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress,\n onQuerySendFinished: this.params.onQuerySendFinished,\n onQuerySendStarted: this.params.onQuerySendStarted,\n querySender: this.querySender,\n }\n\n this.logger?.debug(`creating HttpProxy [${moduleAddress}] ${id}`)\n\n const proxy = new HttpModuleProxy<T, HttpModuleProxyParams>(params)\n //calling state here to get the config\n if (proxy) {\n const state = await proxy.state()\n if (state) {\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n }\n }\n\n await proxy.start()\n\n const wrapped = assertEx(wrapModuleWithType(proxy, Account.randomSync()) as unknown as T, () => `Failed to wrapModuleWithType [${id}]`)\n const instance = assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n proxy.upResolver.add(instance)\n proxy.downResolver.add(instance)\n\n if (remainderParts.length > 0) {\n const result = await wrapped.resolve<T>(remainderParts, options)\n return result ? [result] : []\n }\n\n //console.log(`resolved: ${proxy.address} [${wrapped.constructor.name}] [${as.constructor.name}]`)\n return [instance]\n }\n}\n","import { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport { AttachableModuleInstance, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface BridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type HttpModuleProxyParams = ModuleProxyParams & {\n querySender: BridgeQuerySender\n}\n\nexport class HttpModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<HttpModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<HttpModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements AttachableModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n HttpModuleProxy.createCount = HttpModuleProxy.createCount + 1\n if (Math.floor(HttpModuleProxy.createCount / 10) === HttpModuleProxy.createCount / 10) {\n console.log(`HttpModuleProxy.createCount: ${HttpModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n const result = await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n}\n"],"mappings":"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","names":["HttpBridgeConfigSchema","assertEx","exists","toJsonString","isQueryBoundWitness","creatableModule","resolveAddressToInstanceUp","express","assertEx","AxiosJson","exists","forget","toJsonString","AbstractBridge","NodeManifestPayloadSchema","creatableModule","ModuleStateQuerySchema","asAttachableNodeInstance","isPayloadOfSchemaType","Mutex","Semaphore","LRUCache","assertEx","isAddress","Account","AbstractBridgeModuleResolver","wrapModuleWithType","ConfigSchema","asModuleInstance","ModuleConfigSchema","ResolveHelper","forget","AbstractModuleProxy","HttpModuleProxy","AbstractModuleProxy","constructor","params","createCount","Math","floor","console","log","proxyQueryHandler","query","payloads","archiving","isAllowedArchivingQuery","schema","forget","storeToArchivists","result","querySender","sendBridgeQuery","moduleAddress","flat","HttpBridgeModuleResolver","AbstractBridgeModuleResolver","querySender","params","moduleUrl","address","URL","rootUrl","resolveHandler","id","options","parentResult","length","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","moduleAddress","isAddress","remainderParts","join","account","Account","randomSync","additionalSigners","archiving","config","schema","ModuleConfigSchema","host","onQuerySendFinished","onQuerySendStarted","logger","debug","proxy","HttpModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","instance","asModuleInstance","upResolver","add","downResolver","result","resolve","HttpBridgeBase","AbstractBridge","_axios","_discoverRootsMutex","Mutex","_failureTimeCache","LRUCache","max","maxFailureCacheSize","_querySemaphore","_resolver","axios","params","clientUrl","assertEx","config","client","url","nodeUrl","failureRetryTime","defaultFailureRetryTime","maxConnections","defaultMaxConnections","maxPayloadSizeWarning","defaultMaxPayloadSizeWarning","querySemaphore","Semaphore","resolver","HttpBridgeModuleResolver","additionalSigners","archiving","resolveArchivists","resolveArchivingArchivists","bind","bridge","onQuerySendFinished","args","forget","emit","module","onQuerySendStarted","querySender","root","rootUrl","wrapperAccount","account","exposeHandler","_id","_options","Error","exposedHandler","getRoots","force","runExclusive","_roots","undefined","state","getRootState","logger","debug","length","nodeManifest","find","isPayloadOfSchemaType","NodeManifestPayloadSchema","mods","resolveRootNode","filter","exists","moduleUrl","address","URL","sendBridgeQuery","targetAddress","query","payloads","lastFailureTime","get","now","Date","timeSincePreviousFailure","delete","acquire","payloadSize","JSON","stringify","warn","moduleAddress","schema","href","result","post","status","error","data","ex","toJsonString","release","unexposeHandler","queryPayload","ModuleStateQuerySchema","boundQuery","bindQuery","response","toString","errors","message","rootModule","resolveHandler","at","constructor","name","rootNode","asAttachableNodeInstance","id","downResolver","addResolver","AxiosJson","configSchemas","HttpBridgeConfigSchema","defaultConfigSchema","creatableModule","HttpBridge","HttpBridgeBase","_app","_exposedModules","_server","app","express","use","json","post","req","res","handlePost","exposeChild","mod","options","maxDepth","console","log","address","id","assertEx","config","host","push","WeakRef","children","publicChildren","logger","toJsonString","map","child","exposedChildren","Promise","all","required","flat","filter","exists","allExposed","exposedMod","exposeHandler","resolveAddressToInstanceUp","Error","exposedHandler","ref","deref","startHandler","startHttpServer","stopHandler","_timeout","stopHttpServer","unexposeHandler","find","callLocalModule","query","payloads","allPayloads","body","isQueryBoundWitness","payload","route","then","result","status","error","envelope","data","catch","ex","message","listen","port","server","close","undefined","creatableModule"]}
|
|
1
|
+
{"version":3,"sources":["../../src/HttpBridgeConfig.ts","../../src/HttpBridgeFull.ts","../../src/HttpBridgeBase.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\nexport const HttpBridgeConfigSchema: HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\n\nexport type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: BridgeConfig['client'] & {\n url: string\n }\n failureRetryTime?: number\n failureTimeCacheMax?: number\n host?: {\n port: number\n }\n maxConnections?: number\n maxPayloadSizeWarning?: number\n /** @deprecated use client.url instead */\n nodeUrl?: string\n schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : HttpBridgeConfigSchema\n>\n","import { Server } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { ApiEnvelopeSuccess } from '@xyo-network/api-models'\nimport { isQueryBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleQueryResult, resolveAddressToInstanceUp } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport express, { Application, Request, Response } from 'express'\n\nimport { HttpBridgeBase } from './HttpBridgeBase'\nimport { HttpBridgeConfig } from './HttpBridgeConfig'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {\n protected _app?: Application\n protected _exposedModules: WeakRef<ModuleInstance>[] = []\n protected _server?: Server\n\n get app() {\n this._app =\n this._app ??\n (() => {\n const app = express()\n app.use(express.json())\n\n app.post<Payload[]>('/', (req, res) => {\n this.handlePost(req, res)\n })\n\n return app\n })()\n return this._app\n }\n\n async exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 5 } = options ?? {}\n console.log(`exposeChild: ${mod.address} ${mod?.id} ${maxDepth}`)\n assertEx(this.config.host, () => 'Not configured as a host')\n this._exposedModules.push(new WeakRef(mod))\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n this.logger.log(`childrenToExpose [${mod.id}][${mod.address}]: ${toJsonString(children.map((child) => child.id))}`)\n const exposedChildren = (await Promise.all(children.map((child) => this.exposeChild(child, { maxDepth: maxDepth - 1, required: false }))))\n .flat()\n .filter(exists)\n const allExposed = [mod, ...exposedChildren]\n\n for (const exposedMod of allExposed) this.logger?.log(`exposed: ${exposedMod.address} [${mod.id}]`)\n\n return allExposed\n }\n\n override async exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { required = true } = options ?? {}\n const mod = await resolveAddressToInstanceUp(this, address)\n console.log(`exposeHandler: ${address} ${mod?.id}`)\n if (required && !mod) {\n throw new Error(`Unable to find required module: ${address}`)\n }\n if (mod) {\n return this.exposeChild(mod, options)\n }\n return []\n }\n\n override exposedHandler(): Address[] {\n return this._exposedModules.map((ref) => ref.deref()?.address).filter(exists)\n }\n\n override async startHandler(): Promise<boolean> {\n return (await super.startHandler()) && this.startHttpServer()\n }\n\n override async stopHandler(_timeout?: number | undefined): Promise<boolean> {\n return (await super.stopHandler()) && this.stopHttpServer()\n }\n\n override async unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 2, required = true } = options ?? {}\n assertEx(this.config.host, () => 'Not configured as a host')\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n assertEx(!required || mod, () => `Module not exposed: ${address}`)\n this._exposedModules = this._exposedModules.filter((ref) => ref.deref()?.address !== address)\n if (mod) {\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n const exposedChildren = (\n await Promise.all(children.map((child) => this.unexposeHandler(child.address, { maxDepth: maxDepth - 1, required: false })))\n )\n .flat()\n .filter(exists)\n return [mod, ...exposedChildren]\n }\n return []\n }\n\n protected async callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null> {\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n if (mod) {\n return await mod.query(query, payloads)\n }\n return null\n }\n\n protected handlePost(req: Request<Payload[]>, res: Response) {\n const allPayloads = req.body as Payload[]\n const query = allPayloads.find(isQueryBoundWitness) as QueryBoundWitness\n const payloads = allPayloads.filter((payload) => !isQueryBoundWitness(payload))\n this.callLocalModule(req.route, query, payloads)\n .then((result) => {\n if (result === null) {\n res.status(404).json({ error: 'Module not found' })\n } else {\n const envelope = {\n data: result,\n } as ApiEnvelopeSuccess<ModuleQueryResult>\n res.json(envelope)\n }\n })\n .catch((ex) => {\n res.status(500).json({ error: (ex as Error).message })\n })\n }\n\n protected startHttpServer() {\n if (this.config.host) {\n assertEx(!this._server, () => 'Server already started')\n this._server = this.app.listen(this.config.host?.port ?? 3030)\n }\n return true\n }\n\n protected stopHttpServer() {\n const server = assertEx(this._server, () => 'Server not started')\n server.close()\n this._server = undefined\n return true\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosError, AxiosJson } from '@xylabs/axios'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport {\n BridgeExposeOptions,\n BridgeModule,\n BridgeParams,\n BridgeUnexposeOptions,\n QuerySendFinishedEventArgs,\n QuerySendStartedEventArgs,\n} from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n creatableModule,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n ModuleStateQuery,\n ModuleStateQuerySchema,\n ResolveHelper,\n} from '@xyo-network/module-model'\nimport { asAttachableNodeInstance } from '@xyo-network/node-model'\nimport { isPayloadOfSchemaType, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { HttpBridgeConfig, HttpBridgeConfigSchema } from './HttpBridgeConfig'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver'\nimport { BridgeQuerySender } from './ModuleProxy'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {\n axios?: AxiosJson\n}\n\n@creatableModule()\nexport class HttpBridgeBase<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static axios = new AxiosJson()\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _axios?: AxiosJson\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<Address, number>({ max: HttpBridgeBase.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get axios() {\n this._axios = this._axios ?? this.params.axios ?? HttpBridgeBase.axios\n return this._axios\n }\n\n get clientUrl() {\n // eslint-disable-next-line deprecation/deprecation\n return assertEx(this.config.client?.url ?? this.config.nodeUrl, () => 'No Url Set')\n }\n\n get failureRetryTime() {\n return this.config.failureRetryTime ?? HttpBridgeBase.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.config.maxConnections ?? HttpBridgeBase.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.config.maxPayloadSizeWarning ?? HttpBridgeBase.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ??\n new HttpBridgeModuleResolver({\n additionalSigners: this.additionalSigners,\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n onQuerySendFinished: (args: Omit<QuerySendFinishedEventArgs, 'module'>) => {\n forget(this.emit('querySendFinished', { module: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'module'>) => {\n forget(this.emit('querySendStarted', { module: this, ...args }))\n },\n querySender: this,\n root: this,\n rootUrl: this.clientUrl,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n async connect(id: ModuleIdentifier): Promise<Address | undefined> {\n const transformedId = assertEx(await ResolveHelper.transformModuleIdentifier(id), () => `Unable to transform module identifier: ${id}`)\n //check if already connected\n const existingInstance = await this.resolve<ModuleInstance>(transformedId)\n if (existingInstance) {\n return existingInstance.address\n }\n\n //use the resolver to create the proxy instance\n const [instance] = await this.resolver.resolveHandler<ModuleInstance>(id)\n return this.connectInstance(instance)\n }\n\n async disconnect(id: ModuleIdentifier): Promise<Address | undefined> {\n const transformedId = assertEx(await ResolveHelper.transformModuleIdentifier(id), () => `Unable to transform module identifier: ${id}`)\n const instance = await this.resolve<ModuleInstance>(transformedId)\n if (instance) {\n this.downResolver.remove(instance.address)\n return instance.address\n }\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(force?: boolean): Promise<ModuleInstance[]> {\n return await this._discoverRootsMutex.runExclusive(async () => {\n if (this._roots === undefined || force) {\n const state = await this.getRootState()\n this.logger?.debug(`HttpBridge:discoverRoots.state [${state?.length}]`)\n const nodeManifest = state?.find(isPayloadOfSchemaType<WithMeta<NodeManifestPayload>>(NodeManifestPayloadSchema))\n if (nodeManifest) {\n const mods = (await this.resolveRootNode(nodeManifest)).filter(exists)\n this.logger?.debug(`HttpBridge:discoverRoots [${mods.length}]`)\n this._roots = mods\n } else {\n this._roots = []\n }\n }\n return this._roots\n })\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.clientUrl)\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n const payloadSize = JSON.stringify([query, payloads]).length\n if (payloadSize > this.maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n const moduleUrl = this.moduleUrl(targetAddress).href\n const result = await this.axios.post<ApiEnvelope<ModuleQueryResult<TOut>>>(moduleUrl, [query, payloads])\n if (result.status === 404) {\n throw `target module not found [${moduleUrl}] [${result.status}]`\n }\n if (result.status >= 400) {\n this.logger?.error(`targetQuery failed [${moduleUrl}]`)\n throw `targetQuery failed [${moduleUrl}] [${result.status}]`\n }\n return result.data?.data\n } catch (ex) {\n const error = ex as AxiosError\n this.logger?.error(`Error: ${toJsonString(error)}`)\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n protected connectInstance(instance?: ModuleInstance): Address | undefined {\n if (instance) {\n this.downResolver.add(instance)\n /*if (maxDepth > 0) {\n const node = asNodeInstance(instance)\n if (node) {\n const state = await node.state()\n const children = (state?.filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema)).map((s) => s.address) ?? []).filter(\n (a) => a !== instance.address,\n )\n await Promise.all(children.map((child) => this.connect(child, maxDepth - 1)))\n }\n }*/\n this.logger?.log(`Connect: ${instance.id}`)\n return instance.address\n }\n }\n\n private async getRootState() {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const boundQuery = await this.bindQuery(queryPayload)\n try {\n const response = await this.axios.post<ApiEnvelope<ModuleQueryResult>>(this.clientUrl.toString(), boundQuery)\n if (response.status === 404) {\n return []\n }\n const [, payloads, errors] = response.data.data\n if (errors.length > 0) {\n throw new Error(`getRootState failed: ${JSON.stringify(errors, null, 2)}`)\n }\n return payloads\n } catch (ex) {\n const error = ex as Error\n this.logger?.warn(`Unable to connect to remote node: ${error.message} [${this.clientUrl}]`)\n }\n }\n\n private async resolveRootNode(nodeManifest: ModuleManifestPayload): Promise<ModuleInstance[]> {\n const rootModule = assertEx(\n (\n await this.resolver.resolveHandler(\n assertEx(nodeManifest.status?.address, () => 'Root has no address'),\n undefined,\n { manifest: nodeManifest },\n )\n ).at(0),\n () => `Root not found [${nodeManifest.status?.address}]`,\n )\n assertEx(rootModule.constructor.name !== 'HttpModuleProxy', () => 'rootModule is not a Wrapper')\n const rootNode = asAttachableNodeInstance(rootModule, 'Root modules is not a node')\n if (rootNode) {\n this.logger.debug(`rootNode: ${rootNode.id}`)\n this.connectInstance(rootNode)\n return [rootNode]\n }\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { BridgeQuerySender, HttpModuleProxy, HttpModuleProxyParams } from './ModuleProxy'\n\nexport interface HttpBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: BridgeQuerySender\n rootUrl: string\n}\n\nexport class HttpBridgeModuleResolver<\n T extends HttpBridgeModuleResolverParams = HttpBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n protected _resolvedCache = new LRUCache<Address, ModuleInstance>({ max: 1000 })\n protected _resolvedCacheMutex = new Mutex()\n\n get querySender() {\n return this.params.querySender\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.params.rootUrl)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n params?: Partial<HttpModuleProxyParams>,\n ): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult.length > 0) {\n return parentResult\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => 'Missing module identifier')\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const instance: T = await this._resolvedCacheMutex.runExclusive(async () => {\n const cachedMod = this._resolvedCache.get(firstPart as Address)\n if (cachedMod) {\n const result = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 })\n return result as T\n }\n const account = Account.randomSync()\n const finalParams: HttpModuleProxyParams = {\n account,\n archiving: this.params.archiving,\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress: firstPart as Address,\n onQuerySendFinished: this.params.onQuerySendFinished,\n onQuerySendStarted: this.params.onQuerySendStarted,\n querySender: this.params.querySender,\n ...params,\n }\n\n this.logger?.debug(`creating HttpProxy [${firstPart}] ${id}`)\n console.log(`creating HttpProxy [${firstPart}] ${id}`)\n\n const proxy = new HttpModuleProxy<T, HttpModuleProxyParams>(finalParams)\n\n const state = await proxy.state()\n if (state) {\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n }\n\n console.log(`created HttpProxy [${firstPart}] ${proxy.id}`)\n\n await proxy.start?.()\n const wrapped = wrapModuleWithType(proxy, account) as unknown as T\n assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n this._resolvedCache.set(wrapped.address, wrapped)\n return wrapped as ModuleInstance as T\n })\n const result = remainderParts.length > 0 ? await instance.resolve(remainderParts, options) : instance\n return result ? [result] : []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport {\n AttachableModuleInstance,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n ResolveHelper,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface BridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type HttpModuleProxyParams = ModuleProxyParams & {\n querySender: BridgeQuerySender\n}\n\nexport class HttpModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<HttpModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<HttpModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements AttachableModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n HttpModuleProxy.createCount = HttpModuleProxy.createCount + 1\n if (Math.floor(HttpModuleProxy.createCount / 10) === HttpModuleProxy.createCount / 10) {\n console.log(`HttpModuleProxy.createCount: ${HttpModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n const result = await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n\n override async publicChildren(): Promise<ModuleInstance[]> {\n return (\n await Promise.all(\n Object.values(await this.childAddressMap())\n .filter(exists)\n .map((address) => this.resolve(address)),\n )\n ).filter(exists)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const config: ResolveHelperConfig = {\n address: this.address,\n dead: this.dead,\n downResolver: this.downResolver,\n logger: this.logger,\n module: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n if (idOrFilter === '*') {\n return (await this.publicChildren()) as T[]\n }\n switch (typeof idOrFilter) {\n case 'string': {\n const parts = idOrFilter.split(':')\n const first = assertEx(parts.shift(), () => 'Missing first')\n const remainingPath = parts.join(':')\n const address =\n isAddress(first) ? first\n : this.id === first ? this.address\n : this.childAddressByName(first)\n if (!address) return undefined\n const firstInstance = (await this.params.host.resolve(address)) as ModuleInstance | undefined\n return (remainingPath ? await firstInstance?.resolve(remainingPath) : firstInstance) as T | undefined\n }\n case 'object': {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n}\n"],"mappings":"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","names":["HttpBridgeConfigSchema","assertEx","exists","toJsonString","isQueryBoundWitness","creatableModule","resolveAddressToInstanceUp","express","assertEx","AxiosJson","exists","forget","toJsonString","AbstractBridge","NodeManifestPayloadSchema","creatableModule","ModuleStateQuerySchema","ResolveHelper","asAttachableNodeInstance","isPayloadOfSchemaType","Mutex","Semaphore","LRUCache","assertEx","isAddress","Account","AbstractBridgeModuleResolver","wrapModuleWithType","ConfigSchema","asModuleInstance","ModuleConfigSchema","ResolveHelper","Mutex","LRUCache","assertEx","exists","forget","isAddress","AbstractModuleProxy","ResolveHelper","HttpModuleProxy","AbstractModuleProxy","constructor","params","createCount","Math","floor","console","log","proxyQueryHandler","query","payloads","archiving","isAllowedArchivingQuery","schema","forget","storeToArchivists","result","querySender","sendBridgeQuery","moduleAddress","flat","publicChildren","Promise","all","Object","values","childAddressMap","filter","exists","map","address","resolve","idOrFilter","options","config","dead","downResolver","logger","module","transformers","moduleIdentifierTransformers","upResolver","parts","split","first","assertEx","shift","remainingPath","join","isAddress","id","childAddressByName","undefined","firstInstance","host","ResolveHelper","mod","HttpBridgeModuleResolver","AbstractBridgeModuleResolver","_resolvedCache","LRUCache","max","_resolvedCacheMutex","Mutex","querySender","params","moduleUrl","address","URL","rootUrl","resolveHandler","id","options","parentResult","length","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","isAddress","remainderParts","join","instance","runExclusive","cachedMod","get","result","resolve","maxDepth","account","Account","randomSync","finalParams","archiving","config","schema","ModuleConfigSchema","host","moduleAddress","onQuerySendFinished","onQuerySendStarted","logger","debug","console","log","proxy","HttpModuleProxy","state","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","asModuleInstance","set","HttpBridgeBase","AbstractBridge","_axios","_discoverRootsMutex","Mutex","_failureTimeCache","LRUCache","max","maxFailureCacheSize","_querySemaphore","_resolver","axios","params","clientUrl","assertEx","config","client","url","nodeUrl","failureRetryTime","defaultFailureRetryTime","maxConnections","defaultMaxConnections","maxPayloadSizeWarning","defaultMaxPayloadSizeWarning","querySemaphore","Semaphore","resolver","HttpBridgeModuleResolver","additionalSigners","archiving","resolveArchivists","resolveArchivingArchivists","bind","bridge","onQuerySendFinished","args","forget","emit","module","onQuerySendStarted","querySender","root","rootUrl","wrapperAccount","account","connect","id","transformedId","ResolveHelper","transformModuleIdentifier","existingInstance","resolve","address","instance","resolveHandler","connectInstance","disconnect","downResolver","remove","exposeHandler","_id","_options","Error","exposedHandler","getRoots","force","runExclusive","_roots","undefined","state","getRootState","logger","debug","length","nodeManifest","find","isPayloadOfSchemaType","NodeManifestPayloadSchema","mods","resolveRootNode","filter","exists","moduleUrl","URL","sendBridgeQuery","targetAddress","query","payloads","lastFailureTime","get","now","Date","timeSincePreviousFailure","delete","acquire","payloadSize","JSON","stringify","warn","moduleAddress","schema","href","result","post","status","error","data","ex","toJsonString","release","unexposeHandler","add","log","queryPayload","ModuleStateQuerySchema","boundQuery","bindQuery","response","toString","errors","message","rootModule","manifest","at","constructor","name","rootNode","asAttachableNodeInstance","AxiosJson","configSchemas","HttpBridgeConfigSchema","defaultConfigSchema","creatableModule","HttpBridge","HttpBridgeBase","_app","_exposedModules","_server","app","express","use","json","post","req","res","handlePost","exposeChild","mod","options","maxDepth","console","log","address","id","assertEx","config","host","push","WeakRef","children","publicChildren","logger","toJsonString","map","child","exposedChildren","Promise","all","required","flat","filter","exists","allExposed","exposedMod","exposeHandler","resolveAddressToInstanceUp","Error","exposedHandler","ref","deref","startHandler","startHttpServer","stopHandler","_timeout","stopHttpServer","unexposeHandler","find","callLocalModule","query","payloads","allPayloads","body","isQueryBoundWitness","payload","route","then","result","status","error","envelope","data","catch","ex","message","listen","port","server","close","undefined","creatableModule"]}
|
package/package.json
CHANGED
|
@@ -17,16 +17,16 @@
|
|
|
17
17
|
"@xylabs/hex": "^3.5.1",
|
|
18
18
|
"@xylabs/object": "^3.5.1",
|
|
19
19
|
"@xylabs/promise": "^3.5.1",
|
|
20
|
-
"@xyo-network/account": "~2.
|
|
21
|
-
"@xyo-network/api-models": "~2.
|
|
22
|
-
"@xyo-network/boundwitness-model": "~2.
|
|
23
|
-
"@xyo-network/bridge-abstract": "~2.
|
|
24
|
-
"@xyo-network/bridge-model": "~2.
|
|
25
|
-
"@xyo-network/config-payload-plugin": "~2.
|
|
26
|
-
"@xyo-network/manifest-model": "~2.
|
|
27
|
-
"@xyo-network/module-model": "~2.
|
|
28
|
-
"@xyo-network/node-model": "~2.
|
|
29
|
-
"@xyo-network/payload-model": "~2.
|
|
20
|
+
"@xyo-network/account": "~2.106.0-rc.2",
|
|
21
|
+
"@xyo-network/api-models": "~2.106.0-rc.2",
|
|
22
|
+
"@xyo-network/boundwitness-model": "~2.106.0-rc.2",
|
|
23
|
+
"@xyo-network/bridge-abstract": "~2.106.0-rc.2",
|
|
24
|
+
"@xyo-network/bridge-model": "~2.106.0-rc.2",
|
|
25
|
+
"@xyo-network/config-payload-plugin": "~2.106.0-rc.2",
|
|
26
|
+
"@xyo-network/manifest-model": "~2.106.0-rc.2",
|
|
27
|
+
"@xyo-network/module-model": "~2.106.0-rc.2",
|
|
28
|
+
"@xyo-network/node-model": "~2.106.0-rc.2",
|
|
29
|
+
"@xyo-network/payload-model": "~2.106.0-rc.2",
|
|
30
30
|
"async-mutex": "^0.5.0",
|
|
31
31
|
"lru-cache": "^10.2.2"
|
|
32
32
|
},
|
|
@@ -34,17 +34,20 @@
|
|
|
34
34
|
"@types/express": "^4.17.21",
|
|
35
35
|
"@xylabs/ts-scripts-yarn3": "^3.11.2",
|
|
36
36
|
"@xylabs/tsconfig": "^3.11.2",
|
|
37
|
-
"@xyo-network/account": "~2.
|
|
38
|
-
"@xyo-network/archivist-model": "~2.
|
|
39
|
-
"@xyo-network/diviner-model": "~2.
|
|
40
|
-
"@xyo-network/module-resolver": "~2.
|
|
41
|
-
"@xyo-network/node-memory": "~2.
|
|
42
|
-
"@xyo-network/node-model": "~2.
|
|
43
|
-
"@xyo-network/payload-builder": "~2.
|
|
44
|
-
"@xyo-network/payload-wrapper": "~2.
|
|
37
|
+
"@xyo-network/account": "~2.106.0-rc.2",
|
|
38
|
+
"@xyo-network/archivist-model": "~2.106.0-rc.2",
|
|
39
|
+
"@xyo-network/diviner-model": "~2.106.0-rc.2",
|
|
40
|
+
"@xyo-network/module-resolver": "~2.106.0-rc.2",
|
|
41
|
+
"@xyo-network/node-memory": "~2.106.0-rc.2",
|
|
42
|
+
"@xyo-network/node-model": "~2.106.0-rc.2",
|
|
43
|
+
"@xyo-network/payload-builder": "~2.106.0-rc.2",
|
|
44
|
+
"@xyo-network/payload-wrapper": "~2.106.0-rc.2",
|
|
45
45
|
"express": "^4.19.2",
|
|
46
46
|
"typescript": "^5.4.5"
|
|
47
47
|
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"express": "^4.19.2"
|
|
50
|
+
},
|
|
48
51
|
"optionalDependencies": {
|
|
49
52
|
"express": "^4.19.2"
|
|
50
53
|
},
|
|
@@ -87,6 +90,7 @@
|
|
|
87
90
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
88
91
|
},
|
|
89
92
|
"sideEffects": false,
|
|
90
|
-
"version": "2.
|
|
91
|
-
"type": "module"
|
|
93
|
+
"version": "2.106.0-rc.2",
|
|
94
|
+
"type": "module",
|
|
95
|
+
"stableVersion": "2.105.1"
|
|
92
96
|
}
|