@xyo-network/bridge-http 3.6.8 → 3.6.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.
@@ -1,7 +1,7 @@
1
1
  import type { EmptyObject } from '@xylabs/object';
2
2
  import type { BridgeConfig } from '@xyo-network/bridge-model';
3
- export type HttpBridgeConfigSchema = 'network.xyo.bridge.http.config';
4
- export declare const HttpBridgeConfigSchema: HttpBridgeConfigSchema;
3
+ export declare const HttpBridgeConfigSchema: "network.xyo.bridge.http.config";
4
+ export type HttpBridgeConfigSchema = typeof HttpBridgeConfigSchema;
5
5
  export type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
6
6
  client?: BridgeConfig['client'] & {
7
7
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBridgeConfig.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,MAAM,MAAM,sBAAsB,GAAG,gCAAgC,CAAA;AACrE,eAAO,MAAM,sBAAsB,EAAE,sBAAyD,CAAA;AAE9F,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC1H;IACE,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG;QAChC,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,sBAAsB,CAC1D,CAAA"}
1
+ {"version":3,"file":"HttpBridgeConfig.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,eAAO,MAAM,sBAAsB,EAAG,gCAAyC,CAAA;AAC/E,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC1H;IACE,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG;QAChC,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,sBAAsB,CAC1D,CAAA"}
@@ -33,7 +33,7 @@ export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBr
33
33
  protected callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null>;
34
34
  protected handleGet(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<void>;
35
35
  protected handlePost(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<express.Response<any, Record<string, any>> | undefined>;
36
- protected initializeApp(): import(".store/@types-express-serve-static-core-npm-5.0.2-e18b79cc1b/package").Express;
36
+ protected initializeApp(): import(".store/@types-express-serve-static-core-npm-5.0.3-ad46fc762c/package").Express;
37
37
  protected startHttpServer(): Promise<boolean>;
38
38
  protected stopHttpServer(): Promise<boolean>;
39
39
  }
@@ -1,5 +1,18 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __reflectGet = Reflect.get;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
11
+ if (kind && result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
15
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
3
16
 
4
17
  // src/HttpBridgeClientOnly.ts
5
18
  import { creatableModule as creatableModule2 } from "@xyo-network/module-model";
@@ -11,10 +24,17 @@ import { exists as exists2 } from "@xylabs/exists";
11
24
  import { forget as forget2 } from "@xylabs/forget";
12
25
  import { toJsonString } from "@xylabs/object";
13
26
  import { AbstractBridge } from "@xyo-network/bridge-abstract";
14
- import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
15
- import { creatableModule, ModuleStateQuerySchema } from "@xyo-network/module-model";
27
+ import {
28
+ NodeManifestPayloadSchema
29
+ } from "@xyo-network/manifest-model";
30
+ import {
31
+ creatableModule,
32
+ ModuleStateQuerySchema
33
+ } from "@xyo-network/module-model";
16
34
  import { asAttachableNodeInstance } from "@xyo-network/node-model";
17
- import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
35
+ import {
36
+ isPayloadOfSchemaType
37
+ } from "@xyo-network/payload-model";
18
38
  import { Mutex as Mutex2, Semaphore } from "async-mutex";
19
39
  import { LRUCache as LRUCache2 } from "lru-cache";
20
40
 
@@ -27,7 +47,12 @@ import { isAddress as isAddress2 } from "@xylabs/hex";
27
47
  import { Account } from "@xyo-network/account";
28
48
  import { AbstractBridgeModuleResolver, wrapModuleWithType } from "@xyo-network/bridge-abstract";
29
49
  import { ConfigSchema } from "@xyo-network/config-payload-plugin";
30
- import { asModuleInstance, isModuleInstance, ModuleConfigSchema, ResolveHelper as ResolveHelper2 } from "@xyo-network/module-model";
50
+ import {
51
+ asModuleInstance,
52
+ isModuleInstance,
53
+ ModuleConfigSchema,
54
+ ResolveHelper as ResolveHelper2
55
+ } from "@xyo-network/module-model";
31
56
  import { Mutex } from "async-mutex";
32
57
  import { LRUCache } from "lru-cache";
33
58
 
@@ -39,9 +64,6 @@ import { isAddress } from "@xylabs/hex";
39
64
  import { AbstractModuleProxy } from "@xyo-network/bridge-abstract";
40
65
  import { ResolveHelper } from "@xyo-network/module-model";
41
66
  var HttpModuleProxy = class _HttpModuleProxy extends AbstractModuleProxy {
42
- static {
43
- __name(this, "HttpModuleProxy");
44
- }
45
67
  static createCount = 0;
46
68
  constructor(params) {
47
69
  _HttpModuleProxy.createCount = _HttpModuleProxy.createCount + 1;
@@ -52,10 +74,7 @@ var HttpModuleProxy = class _HttpModuleProxy extends AbstractModuleProxy {
52
74
  }
53
75
  async proxyQueryHandler(query, payloads = []) {
54
76
  if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {
55
- forget(this.storeToArchivists([
56
- query,
57
- ...payloads ?? []
58
- ]));
77
+ forget(this.storeToArchivists([query, ...payloads ?? []]));
59
78
  }
60
79
  const result = await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads);
61
80
  if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {
@@ -64,7 +83,9 @@ var HttpModuleProxy = class _HttpModuleProxy extends AbstractModuleProxy {
64
83
  return result;
65
84
  }
66
85
  async publicChildren() {
67
- return (await Promise.all(Object.values(await this.childAddressMap()).filter(exists).map((address) => this.resolve(address)))).filter(exists);
86
+ return (await Promise.all(
87
+ Object.values(await this.childAddressMap()).filter(exists).map((address) => this.resolve(address))
88
+ )).filter(exists);
68
89
  }
69
90
  async resolve(idOrFilter = "*", options = {}) {
70
91
  const config = {
@@ -77,10 +98,7 @@ var HttpModuleProxy = class _HttpModuleProxy extends AbstractModuleProxy {
77
98
  upResolver: this.upResolver
78
99
  };
79
100
  if (idOrFilter === "*") {
80
- return [
81
- ...await this.publicChildren(),
82
- await this.params.host.resolve(this.address)
83
- ];
101
+ return [...await this.publicChildren(), await this.params.host.resolve(this.address)];
84
102
  }
85
103
  switch (typeof idOrFilter) {
86
104
  case "string": {
@@ -103,16 +121,9 @@ var HttpModuleProxy = class _HttpModuleProxy extends AbstractModuleProxy {
103
121
  };
104
122
 
105
123
  // src/HttpBridgeModuleResolver.ts
106
- var NotFoundModule = {
107
- notFound: true
108
- };
124
+ var NotFoundModule = { notFound: true };
109
125
  var HttpBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
110
- static {
111
- __name(this, "HttpBridgeModuleResolver");
112
- }
113
- _resolvedCache = new LRUCache({
114
- max: 1e3
115
- });
126
+ _resolvedCache = new LRUCache({ max: 1e3 });
116
127
  _resolvedCacheMutex = new Mutex();
117
128
  get querySender() {
118
129
  return this.params.querySender;
@@ -134,10 +145,7 @@ var HttpBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
134
145
  const cachedMod = this._resolvedCache.get(firstPart);
135
146
  if (cachedMod) {
136
147
  if (isModuleInstance(cachedMod)) {
137
- const result2 = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, {
138
- ...options,
139
- maxDepth: (options?.maxDepth ?? 5) - 1
140
- });
148
+ const result2 = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 });
141
149
  return result2;
142
150
  } else {
143
151
  return;
@@ -147,9 +155,7 @@ var HttpBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
147
155
  const finalParams = {
148
156
  account,
149
157
  archiving: this.params.archiving,
150
- config: {
151
- schema: ModuleConfigSchema
152
- },
158
+ config: { schema: ModuleConfigSchema },
153
159
  host: this,
154
160
  moduleAddress: firstPart,
155
161
  onQuerySendFinished: this.params.onQuerySendFinished,
@@ -171,7 +177,10 @@ var HttpBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
171
177
  return;
172
178
  }
173
179
  const configSchema = state.find((payload) => payload.schema === ConfigSchema)?.config;
174
- const config = assertEx2(state.find((payload) => payload.schema === configSchema), () => "Unable to locate config");
180
+ const config = assertEx2(
181
+ state.find((payload) => payload.schema === configSchema),
182
+ () => "Unable to locate config"
183
+ );
175
184
  proxy.setConfig(config);
176
185
  this.logger?.log(`created HttpProxy [${firstPart}] ${proxy.id}`);
177
186
  await proxy.start?.();
@@ -181,56 +190,32 @@ var HttpBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
181
190
  return wrapped;
182
191
  });
183
192
  const result = remainderParts.length > 0 ? await instance?.resolve(remainderParts, options) : instance;
184
- return result ? [
185
- result
186
- ] : [];
193
+ return result ? [result] : [];
187
194
  }
188
195
  };
189
196
 
190
197
  // src/HttpBridgeBase.ts
191
- function _ts_decorate(decorators, target, key, desc) {
192
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
193
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
194
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
195
- return c > 3 && r && Object.defineProperty(target, key, r), r;
196
- }
197
- __name(_ts_decorate, "_ts_decorate");
198
- var HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
199
- static {
200
- __name(this, "HttpBridgeBase");
201
- }
202
- static axios = new AxiosJson();
203
- static configSchemas = [
204
- ...super.configSchemas,
205
- HttpBridgeConfigSchema
206
- ];
207
- static defaultConfigSchema = HttpBridgeConfigSchema;
208
- static defaultFailureRetryTime = 1e3 * 60;
209
- static defaultMaxConnections = 4;
210
- static defaultMaxPayloadSizeWarning = 256 * 256;
211
- static maxFailureCacheSize = 1e3;
198
+ var HttpBridgeBase = class extends AbstractBridge {
212
199
  _axios;
213
200
  _discoverRootsMutex = new Mutex2();
214
- _failureTimeCache = new LRUCache2({
215
- max: _HttpBridgeBase.maxFailureCacheSize
216
- });
201
+ _failureTimeCache = new LRUCache2({ max: HttpBridgeBase.maxFailureCacheSize });
217
202
  _querySemaphore;
218
203
  _resolver;
219
204
  get axios() {
220
- this._axios = this._axios ?? this.params.axios ?? _HttpBridgeBase.axios;
205
+ this._axios = this._axios ?? this.params.axios ?? HttpBridgeBase.axios;
221
206
  return this._axios;
222
207
  }
223
208
  get clientUrl() {
224
209
  return assertEx3(this.config.client?.url ?? this.config.nodeUrl, () => "No Url Set");
225
210
  }
226
211
  get failureRetryTime() {
227
- return this.config.failureRetryTime ?? _HttpBridgeBase.defaultFailureRetryTime;
212
+ return this.config.failureRetryTime ?? HttpBridgeBase.defaultFailureRetryTime;
228
213
  }
229
214
  get maxConnections() {
230
- return this.config.maxConnections ?? _HttpBridgeBase.defaultMaxConnections;
215
+ return this.config.maxConnections ?? HttpBridgeBase.defaultMaxConnections;
231
216
  }
232
217
  get maxPayloadSizeWarning() {
233
- return this.config.maxPayloadSizeWarning ?? _HttpBridgeBase.defaultMaxPayloadSizeWarning;
218
+ return this.config.maxPayloadSizeWarning ?? HttpBridgeBase.defaultMaxPayloadSizeWarning;
234
219
  }
235
220
  get querySemaphore() {
236
221
  this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections);
@@ -239,23 +224,14 @@ var HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
239
224
  get resolver() {
240
225
  this._resolver = this._resolver ?? new HttpBridgeModuleResolver({
241
226
  additionalSigners: this.additionalSigners,
242
- archiving: {
243
- ...this.archiving,
244
- resolveArchivists: this.resolveArchivingArchivists.bind(this)
245
- },
227
+ archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },
246
228
  bridge: this,
247
- onQuerySendFinished: /* @__PURE__ */ __name((args) => {
248
- forget2(this.emit("querySendFinished", {
249
- mod: this,
250
- ...args
251
- }));
252
- }, "onQuerySendFinished"),
253
- onQuerySendStarted: /* @__PURE__ */ __name((args) => {
254
- forget2(this.emit("querySendStarted", {
255
- mod: this,
256
- ...args
257
- }));
258
- }, "onQuerySendStarted"),
229
+ onQuerySendFinished: (args) => {
230
+ forget2(this.emit("querySendFinished", { mod: this, ...args }));
231
+ },
232
+ onQuerySendStarted: (args) => {
233
+ forget2(this.emit("querySendStarted", { mod: this, ...args }));
234
+ },
259
235
  querySender: this,
260
236
  root: this,
261
237
  rootUrl: this.clientUrl,
@@ -301,18 +277,14 @@ var HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
301
277
  }
302
278
  try {
303
279
  await this.querySemaphore.acquire();
304
- const payloadSize = JSON.stringify([
305
- query,
306
- payloads
307
- ]).length;
280
+ const payloadSize = JSON.stringify([query, payloads]).length;
308
281
  if (payloadSize > this.maxPayloadSizeWarning) {
309
- this.logger?.warn(`Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`);
282
+ this.logger?.warn(
283
+ `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`
284
+ );
310
285
  }
311
286
  const moduleUrl = this.moduleUrl(targetAddress).href;
312
- const result = await this.axios.post(moduleUrl, [
313
- query,
314
- payloads
315
- ]);
287
+ const result = await this.axios.post(moduleUrl, [query, payloads]);
316
288
  if (result.status === 404) {
317
289
  throw `target module not found [${moduleUrl}] [${result.status}]`;
318
290
  }
@@ -333,9 +305,7 @@ var HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
333
305
  throw new Error("Unsupported");
334
306
  }
335
307
  async getRootState() {
336
- const queryPayload = {
337
- schema: ModuleStateQuerySchema
338
- };
308
+ const queryPayload = { schema: ModuleStateQuerySchema };
339
309
  const boundQuery = await this.bindQuery(queryPayload);
340
310
  try {
341
311
  const response = await this.axios.post(this.clientUrl.toString(), boundQuery);
@@ -353,39 +323,39 @@ var HttpBridgeBase = class _HttpBridgeBase extends AbstractBridge {
353
323
  }
354
324
  }
355
325
  async resolveRootNode(nodeManifest) {
356
- const rootModule = assertEx3((await this.resolver.resolveHandler(assertEx3(nodeManifest.status?.address, () => "Root has no address"), void 0, {
357
- manifest: nodeManifest
358
- })).at(0), () => `Root not found [${nodeManifest.status?.address}]`);
326
+ const rootModule = assertEx3(
327
+ (await this.resolver.resolveHandler(
328
+ assertEx3(nodeManifest.status?.address, () => "Root has no address"),
329
+ void 0,
330
+ { manifest: nodeManifest }
331
+ )).at(0),
332
+ () => `Root not found [${nodeManifest.status?.address}]`
333
+ );
359
334
  assertEx3(rootModule.constructor.name !== "HttpModuleProxy", () => "rootModule is not a Wrapper");
360
335
  const rootNode = asAttachableNodeInstance(rootModule, "Root modules is not a node");
361
336
  if (rootNode) {
362
337
  this.logger.debug(`rootNode: ${rootNode.id}`);
363
338
  this.downResolver.addResolver(rootNode);
364
- return [
365
- rootNode
366
- ];
339
+ return [rootNode];
367
340
  }
368
341
  return [];
369
342
  }
370
343
  };
371
- HttpBridgeBase = _ts_decorate([
344
+ __publicField(HttpBridgeBase, "axios", new AxiosJson());
345
+ __publicField(HttpBridgeBase, "configSchemas", [...__superGet(HttpBridgeBase, HttpBridgeBase, "configSchemas"), HttpBridgeConfigSchema]);
346
+ __publicField(HttpBridgeBase, "defaultConfigSchema", HttpBridgeConfigSchema);
347
+ __publicField(HttpBridgeBase, "defaultFailureRetryTime", 1e3 * 60);
348
+ __publicField(HttpBridgeBase, "defaultMaxConnections", 4);
349
+ __publicField(HttpBridgeBase, "defaultMaxPayloadSizeWarning", 256 * 256);
350
+ __publicField(HttpBridgeBase, "maxFailureCacheSize", 1e3);
351
+ HttpBridgeBase = __decorateClass([
372
352
  creatableModule()
373
353
  ], HttpBridgeBase);
374
354
 
375
355
  // src/HttpBridgeClientOnly.ts
376
- function _ts_decorate2(decorators, target, key, desc) {
377
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
378
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
379
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
380
- return c > 3 && r && Object.defineProperty(target, key, r), r;
381
- }
382
- __name(_ts_decorate2, "_ts_decorate");
383
356
  var HttpBridge = class extends HttpBridgeBase {
384
- static {
385
- __name(this, "HttpBridge");
386
- }
387
357
  };
388
- HttpBridge = _ts_decorate2([
358
+ HttpBridge = __decorateClass([
389
359
  creatableModule2()
390
360
  ], HttpBridge);
391
361
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/HttpBridgeClientOnly.ts","../../src/HttpBridgeBase.ts","../../src/HttpBridgeConfig.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { BridgeParams } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\n\nimport { HttpBridgeBase } from './HttpBridgeBase.ts'\nimport { HttpBridgeConfig } from './HttpBridgeConfig.ts'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {}\n","import { assertEx } from '@xylabs/assert'\nimport { 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 {\n ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema,\n} 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 {\n isPayloadOfSchemaType, Payload, Schema,\n} from '@xyo-network/payload-model'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport type { AxiosError } from 'axios'\nimport { LRUCache } from 'lru-cache'\n\nimport { HttpBridgeConfig, HttpBridgeConfigSchema } from './HttpBridgeConfig.ts'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver.ts'\nimport { BridgeQuerySender } from './ModuleProxy/index.ts'\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 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, 'mod'>) => {\n forget(this.emit('querySendFinished', { mod: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => {\n forget(this.emit('querySendStarted', { mod: 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<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: 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.downResolver.addResolver(rootNode as unknown as ModuleResolverInstance)\n return [rootNode]\n }\n return []\n }\n}\n","import type { EmptyObject } from '@xylabs/object'\nimport type { 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 { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport type { BridgeModuleResolverParams } from '@xyo-network/bridge-abstract'\nimport { AbstractBridgeModuleResolver, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport type { ConfigPayload } from '@xyo-network/config-payload-plugin'\nimport { ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport type {\n ModuleConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '@xyo-network/module-model'\nimport {\n asModuleInstance,\n isModuleInstance,\n ModuleConfigSchema,\n ResolveHelper,\n} from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport type { BridgeQuerySender, HttpModuleProxyParams } from './ModuleProxy/index.ts'\nimport { HttpModuleProxy } from './ModuleProxy/index.ts'\n\nconst NotFoundModule = { notFound: true }\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 | typeof NotFoundModule>({ 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 | undefined = await this._resolvedCacheMutex.runExclusive(async () => {\n const cachedMod = this._resolvedCache.get(firstPart as Address)\n if (cachedMod) {\n if (isModuleInstance(cachedMod)) {\n const result = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 })\n return result as T\n } else {\n // return cached 404\n return\n }\n }\n const account = await Account.random()\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\n const proxy = new HttpModuleProxy<T, HttpModuleProxyParams>(finalParams)\n\n let state: Payload[] | undefined\n\n try {\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.log(error.message)\n }\n\n if (!state) {\n // cache the fact that it was not found\n this._resolvedCache.set(firstPart as Address, NotFoundModule)\n return\n }\n\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 this.logger?.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 type { Address } from '@xylabs/hex'\nimport { isAddress } from '@xylabs/hex'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport { AbstractModuleProxy } from '@xyo-network/bridge-abstract'\nimport type {\n AttachableModuleInstance,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport { ResolveHelper } from '@xyo-network/module-model'\nimport type { 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 static createCount = 0\n\n constructor(params: TParams) {\n HttpModuleProxy.createCount = HttpModuleProxy.createCount + 1\n super(params)\n if (Math.floor(HttpModuleProxy.createCount / 10) === HttpModuleProxy.createCount / 10) {\n console.log(`HttpModuleProxy.createCount: ${HttpModuleProxy.createCount}`)\n }\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 mod: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n if (idOrFilter === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] 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)\n ? first\n : this.id === first\n ? 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":["creatableModule","assertEx","AxiosJson","exists","forget","toJsonString","AbstractBridge","NodeManifestPayloadSchema","creatableModule","ModuleStateQuerySchema","asAttachableNodeInstance","isPayloadOfSchemaType","Mutex","Semaphore","LRUCache","HttpBridgeConfigSchema","assertEx","isAddress","Account","AbstractBridgeModuleResolver","wrapModuleWithType","ConfigSchema","asModuleInstance","isModuleInstance","ModuleConfigSchema","ResolveHelper","Mutex","LRUCache","assertEx","exists","forget","isAddress","AbstractModuleProxy","ResolveHelper","HttpModuleProxy","AbstractModuleProxy","createCount","constructor","params","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","mod","transformers","moduleIdentifierTransformers","upResolver","host","parts","split","first","assertEx","shift","remainingPath","join","isAddress","id","childAddressByName","undefined","firstInstance","ResolveHelper","NotFoundModule","notFound","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","isModuleInstance","result","resolve","maxDepth","account","Account","random","finalParams","archiving","config","schema","ModuleConfigSchema","host","moduleAddress","onQuerySendFinished","onQuerySendStarted","logger","debug","proxy","HttpModuleProxy","state","ex","error","log","message","set","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","asModuleInstance","HttpBridgeBase","AbstractBridge","axios","AxiosJson","configSchemas","HttpBridgeConfigSchema","defaultConfigSchema","defaultFailureRetryTime","defaultMaxConnections","defaultMaxPayloadSizeWarning","maxFailureCacheSize","_axios","_discoverRootsMutex","Mutex","_failureTimeCache","LRUCache","max","_querySemaphore","_resolver","params","clientUrl","assertEx","config","client","url","nodeUrl","failureRetryTime","maxConnections","maxPayloadSizeWarning","querySemaphore","Semaphore","resolver","HttpBridgeModuleResolver","additionalSigners","archiving","resolveArchivists","resolveArchivingArchivists","bind","bridge","onQuerySendFinished","args","forget","emit","mod","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","manifest","at","constructor","name","rootNode","asAttachableNodeInstance","id","downResolver","addResolver","HttpBridge","HttpBridgeBase"]}
1
+ {"version":3,"sources":["../../src/HttpBridgeClientOnly.ts","../../src/HttpBridgeBase.ts","../../src/HttpBridgeConfig.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import { BridgeParams } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule } from '@xyo-network/module-model'\n\nimport { HttpBridgeBase } from './HttpBridgeBase.ts'\nimport { HttpBridgeConfig } from './HttpBridgeConfig.ts'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {}\n","import { assertEx } from '@xylabs/assert'\nimport { 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 {\n ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema,\n} 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 {\n isPayloadOfSchemaType, Payload, Schema,\n} from '@xyo-network/payload-model'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport type { AxiosError } from 'axios'\nimport { LRUCache } from 'lru-cache'\n\nimport { HttpBridgeConfig, HttpBridgeConfigSchema } from './HttpBridgeConfig.ts'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver.ts'\nimport { BridgeQuerySender } from './ModuleProxy/index.ts'\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 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, 'mod'>) => {\n forget(this.emit('querySendFinished', { mod: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => {\n forget(this.emit('querySendStarted', { mod: 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<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: 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.downResolver.addResolver(rootNode as unknown as ModuleResolverInstance)\n return [rootNode]\n }\n return []\n }\n}\n","import type { EmptyObject } from '@xylabs/object'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const HttpBridgeConfigSchema = 'network.xyo.bridge.http.config' as const\nexport type HttpBridgeConfigSchema = typeof HttpBridgeConfigSchema\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 { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport type { BridgeModuleResolverParams } from '@xyo-network/bridge-abstract'\nimport { AbstractBridgeModuleResolver, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport type { ConfigPayload } from '@xyo-network/config-payload-plugin'\nimport { ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport type {\n ModuleConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '@xyo-network/module-model'\nimport {\n asModuleInstance,\n isModuleInstance,\n ModuleConfigSchema,\n ResolveHelper,\n} from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport type { BridgeQuerySender, HttpModuleProxyParams } from './ModuleProxy/index.ts'\nimport { HttpModuleProxy } from './ModuleProxy/index.ts'\n\nconst NotFoundModule = { notFound: true }\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 | typeof NotFoundModule>({ 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 | undefined = await this._resolvedCacheMutex.runExclusive(async () => {\n const cachedMod = this._resolvedCache.get(firstPart as Address)\n if (cachedMod) {\n if (isModuleInstance(cachedMod)) {\n const result = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 })\n return result as T\n } else {\n // return cached 404\n return\n }\n }\n const account = await Account.random()\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\n const proxy = new HttpModuleProxy<T, HttpModuleProxyParams>(finalParams)\n\n let state: Payload[] | undefined\n\n try {\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.log(error.message)\n }\n\n if (!state) {\n // cache the fact that it was not found\n this._resolvedCache.set(firstPart as Address, NotFoundModule)\n return\n }\n\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 this.logger?.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 type { Address } from '@xylabs/hex'\nimport { isAddress } from '@xylabs/hex'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport type { ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport { AbstractModuleProxy } from '@xyo-network/bridge-abstract'\nimport type {\n AttachableModuleInstance,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport { ResolveHelper } from '@xyo-network/module-model'\nimport type { 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 static createCount = 0\n\n constructor(params: TParams) {\n HttpModuleProxy.createCount = HttpModuleProxy.createCount + 1\n super(params)\n if (Math.floor(HttpModuleProxy.createCount / 10) === HttpModuleProxy.createCount / 10) {\n console.log(`HttpModuleProxy.createCount: ${HttpModuleProxy.createCount}`)\n }\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 mod: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n if (idOrFilter === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] 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)\n ? first\n : this.id === first\n ? 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":["creatableModule","assertEx","exists","forget","Mutex","LRUCache","assertEx","isAddress","ResolveHelper","assertEx","ResolveHelper","isAddress","result","Mutex","LRUCache","assertEx","forget","exists","creatableModule"]}
@@ -1,7 +1,7 @@
1
1
  import type { EmptyObject } from '@xylabs/object';
2
2
  import type { BridgeConfig } from '@xyo-network/bridge-model';
3
- export type HttpBridgeConfigSchema = 'network.xyo.bridge.http.config';
4
- export declare const HttpBridgeConfigSchema: HttpBridgeConfigSchema;
3
+ export declare const HttpBridgeConfigSchema: "network.xyo.bridge.http.config";
4
+ export type HttpBridgeConfigSchema = typeof HttpBridgeConfigSchema;
5
5
  export type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<{
6
6
  client?: BridgeConfig['client'] & {
7
7
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBridgeConfig.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,MAAM,MAAM,sBAAsB,GAAG,gCAAgC,CAAA;AACrE,eAAO,MAAM,sBAAsB,EAAE,sBAAyD,CAAA;AAE9F,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC1H;IACE,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG;QAChC,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,sBAAsB,CAC1D,CAAA"}
1
+ {"version":3,"file":"HttpBridgeConfig.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,eAAO,MAAM,sBAAsB,EAAG,gCAAyC,CAAA;AAC/E,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,EAAE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,YAAY,CAC1H;IACE,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG;QAChC,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GAAG,OAAO,EACX,OAAO,SAAS,MAAM,GAAG,OAAO,GAAG,sBAAsB,CAC1D,CAAA"}
@@ -33,7 +33,7 @@ export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBr
33
33
  protected callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null>;
34
34
  protected handleGet(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<void>;
35
35
  protected handlePost(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<express.Response<any, Record<string, any>> | undefined>;
36
- protected initializeApp(): import(".store/@types-express-serve-static-core-npm-5.0.2-e18b79cc1b/package").Express;
36
+ protected initializeApp(): import(".store/@types-express-serve-static-core-npm-5.0.3-ad46fc762c/package").Express;
37
37
  protected startHttpServer(): Promise<boolean>;
38
38
  protected stopHttpServer(): Promise<boolean>;
39
39
  }