@xyo-network/bridge-http 5.3.29 → 5.4.1

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,33 +1,33 @@
1
- import { Address, Promisable } from '@xylabs/sdk-js';
2
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
1
+ import type { Address, Promisable } from '@xylabs/sdk-js';
2
+ import { FetchJsonClient } from '@xylabs/sdk-js';
3
+ import type { QueryBoundWitness } from '@xyo-network/boundwitness-model';
3
4
  import { AbstractBridge } from '@xyo-network/bridge-abstract';
4
- import { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
5
- import { AnyConfigSchema, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
6
- import { Payload, Schema } from '@xyo-network/payload-model';
5
+ import type { BridgeExposeOptions, BridgeModule, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model';
6
+ import type { AnyConfigSchema, ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model';
7
+ import type { Payload, Schema } from '@xyo-network/payload-model';
7
8
  import { Semaphore } from 'async-mutex';
8
- import { Axios } from 'axios';
9
- import { HttpBridgeConfig } from './HttpBridgeConfig.ts';
9
+ import type { HttpBridgeConfig } from './HttpBridgeConfig.ts';
10
10
  import { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver.ts';
11
- import { BridgeQuerySender } from './ModuleProxy/index.ts';
11
+ import type { BridgeQuerySender } from './ModuleProxy/index.ts';
12
12
  export interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {
13
- axios?: Axios;
13
+ fetchClient?: FetchJsonClient;
14
14
  }
15
15
  export declare class HttpBridge<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {
16
- static readonly axios: Axios;
17
16
  static readonly configSchemas: Schema[];
18
17
  static readonly defaultConfigSchema: Schema;
19
18
  static readonly defaultFailureRetryTime: number;
20
19
  static readonly defaultMaxConnections = 4;
21
20
  static readonly defaultMaxPayloadSizeWarning: number;
21
+ static readonly fetchClient: FetchJsonClient;
22
22
  static readonly maxFailureCacheSize = 1000;
23
- private _axios?;
24
23
  private _discoverRootsMutex;
25
24
  private _failureTimeCache;
25
+ private _fetchClient?;
26
26
  private _querySemaphore?;
27
27
  private _resolver?;
28
- get axios(): Axios;
29
28
  get clientUrl(): string;
30
29
  get failureRetryTime(): number;
30
+ get fetchClient(): FetchJsonClient;
31
31
  get maxConnections(): number;
32
32
  get maxPayloadSizeWarning(): number;
33
33
  get querySemaphore(): Semaphore;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBridge.d.ts","sourceRoot":"","sources":["../../src/HttpBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAIP,UAAU,EACX,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EAGtB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EACL,eAAe,EAEf,cAAc,EACd,iBAAiB,EAIlB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACkB,OAAO,EAAE,MAAM,EACvC,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAS,SAAS,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAc,MAAM,OAAO,CAAA;AAGzC,OAAO,EAAE,gBAAgB,EAA0B,MAAM,uBAAuB,CAAA;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACvF,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAC3I,MAAM,CAAC,QAAQ,CAAC,KAAK,QAA+B;IACpD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAC7E,MAAM,CAAC,QAAQ,CAAC,uBAAuB,SAAY;IACnD,MAAM,CAAC,QAAQ,CAAC,qBAAqB,KAAI;IACzC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,SAAY;IACxD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,QAAO;IAE1C,OAAO,CAAC,MAAM,CAAC,CAAO;IACtB,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,iBAAiB,CAAyE;IAClG,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,SAAS,CAAC,CAA0B;IAE5C,IAAI,KAAK,UAGR;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,qGAmBpB;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkB1D,SAAS,CAAC,OAAO,EAAE,OAAO;IAIpB,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,GACf,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqC1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;YAInG,YAAY;YAmBZ,eAAe;CAoB9B"}
1
+ {"version":3,"file":"HttpBridge.d.ts","sourceRoot":"","sources":["../../src/HttpBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACX,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAIL,eAAe,EAGhB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EAGtB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,EAGlB,MAAM,2BAA2B,CAAA;AAMlC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAS,SAAS,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACvF,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B;AAED,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAC3I,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAC7E,MAAM,CAAC,QAAQ,CAAC,uBAAuB,SAAY;IACnD,MAAM,CAAC,QAAQ,CAAC,qBAAqB,KAAI;IACzC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,SAAY;IACxD,MAAM,CAAC,QAAQ,CAAC,WAAW,kBAAwB;IACnD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,QAAO;IAE1C,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,iBAAiB,CAAyE;IAClG,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,SAAS,CAAC,CAA0B;IAE5C,IAAI,SAAS,WAEZ;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,WAAW,oBAGd;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,qGAmBpB;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkB1D,SAAS,CAAC,OAAO,EAAE,OAAO;IAIpB,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,GACf,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqC1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;YAInG,YAAY;YAmBZ,eAAe;CAoB9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAK7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EAElB,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACnI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,KACb,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IACtD,WAAW,EAAE,iBAAiB,CAAA;CAC/B,CAAA;AAED,qBACa,eAAe,CAC1B,cAAc,SAAS,cAAc,GAAG,cAAc,EACtD,OAAO,SAAS,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG;IACrI,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACjC,CAED,SAAQ,mBAAmB,CAAC,cAAc,EAAE,OAAO,CACnD,YAAW,wBAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACnE,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAWzH,cAAc,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAU1D,yEAAyE;IAC1D,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CAwClJ"}
1
+ {"version":3,"file":"ModuleProxy.d.ts","sourceRoot":"","sources":["../../../src/ModuleProxy/ModuleProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAK7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACnI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,KACb,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IACtD,WAAW,EAAE,iBAAiB,CAAA;CAC/B,CAAA;AAED,qBACa,eAAe,CAC1B,cAAc,SAAS,cAAc,GAAG,cAAc,EACtD,OAAO,SAAS,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG;IACrI,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CACjC,CAED,SAAQ,mBAAmB,CAAC,cAAc,EAAE,OAAO,CACnD,YAAW,wBAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACnE,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAWzH,cAAc,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAU1D,yEAAyE;IAC1D,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CAwClJ"}
@@ -17,25 +17,21 @@ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
17
17
  // src/HttpBridge.ts
18
18
  import {
19
19
  assertEx as assertEx2,
20
- axiosJsonConfig,
21
20
  exists as exists2,
21
+ FetchClientError,
22
+ FetchJsonClient,
22
23
  forget as forget2,
23
24
  toSafeJsonString
24
25
  } from "@xylabs/sdk-js";
25
26
  import { AbstractBridge } from "@xyo-network/bridge-abstract";
26
- import {
27
- NodeManifestPayloadSchema
28
- } from "@xyo-network/manifest-model";
27
+ import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
29
28
  import {
30
29
  creatableModule as creatableModule2,
31
30
  ModuleStateQuerySchema
32
31
  } from "@xyo-network/module-model";
33
32
  import { asAttachableNodeInstance } from "@xyo-network/node-model";
34
- import {
35
- isPayloadOfSchemaType
36
- } from "@xyo-network/payload-model";
33
+ import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
37
34
  import { Mutex as Mutex2, Semaphore } from "async-mutex";
38
- import { Axios } from "axios";
39
35
  import { LRUCache as LRUCache2 } from "lru-cache";
40
36
 
41
37
  // src/HttpBridgeConfig.ts
@@ -54,9 +50,9 @@ import { ConfigSchema } from "@xyo-network/config-payload-plugin";
54
50
  import {
55
51
  asModuleInstance,
56
52
  isModuleInstance,
57
- ModuleConfigSchema,
58
- ResolveHelper as ResolveHelper2
53
+ ModuleConfigSchema
59
54
  } from "@xyo-network/module-model";
55
+ import { ResolveHelper as ResolveHelper2 } from "@xyo-network/module-resolver";
60
56
  import { Mutex } from "async-mutex";
61
57
  import { LRUCache } from "lru-cache";
62
58
 
@@ -68,7 +64,8 @@ import {
68
64
  isString
69
65
  } from "@xylabs/sdk-js";
70
66
  import { AbstractModuleProxy } from "@xyo-network/bridge-abstract";
71
- import { creatableModule, ResolveHelper } from "@xyo-network/module-model";
67
+ import { creatableModule } from "@xyo-network/module-model";
68
+ import { ResolveHelper } from "@xyo-network/module-resolver";
72
69
  var HttpModuleProxy = class extends AbstractModuleProxy {
73
70
  async proxyQueryHandler(query, payloads = []) {
74
71
  if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {
@@ -201,21 +198,21 @@ var HttpBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
201
198
 
202
199
  // src/HttpBridge.ts
203
200
  var HttpBridge = class extends AbstractBridge {
204
- _axios;
205
201
  _discoverRootsMutex = new Mutex2();
206
202
  _failureTimeCache = new LRUCache2({ max: HttpBridge.maxFailureCacheSize });
203
+ _fetchClient;
207
204
  _querySemaphore;
208
205
  _resolver;
209
- get axios() {
210
- this._axios = this._axios ?? this.params.axios ?? HttpBridge.axios;
211
- return this._axios;
212
- }
213
206
  get clientUrl() {
214
207
  return assertEx2(this.config.client?.url, () => "No Url Set");
215
208
  }
216
209
  get failureRetryTime() {
217
210
  return this.config.failureRetryTime ?? HttpBridge.defaultFailureRetryTime;
218
211
  }
212
+ get fetchClient() {
213
+ this._fetchClient = this._fetchClient ?? this.params.fetchClient ?? HttpBridge.fetchClient;
214
+ return this._fetchClient;
215
+ }
219
216
  get maxConnections() {
220
217
  return this.config.maxConnections ?? HttpBridge.defaultMaxConnections;
221
218
  }
@@ -289,7 +286,7 @@ var HttpBridge = class extends AbstractBridge {
289
286
  );
290
287
  }
291
288
  const moduleUrl = this.moduleUrl(targetAddress).href;
292
- const result = await this.axios.post(moduleUrl, [query, payloads]);
289
+ const result = await this.fetchClient.post(moduleUrl, [query, payloads]);
293
290
  if (result.status === 404) {
294
291
  throw `target module not found [${moduleUrl}] [${result.status}]`;
295
292
  }
@@ -297,9 +294,9 @@ var HttpBridge = class extends AbstractBridge {
297
294
  this.logger?.error(`targetQuery failed [${moduleUrl}]`);
298
295
  throw `targetQuery failed [${moduleUrl}] [${result.status}]`;
299
296
  }
300
- return result.data?.data;
297
+ return assertEx2(result.data?.data, () => `targetQuery returned no data [${moduleUrl}]`);
301
298
  } catch (ex) {
302
- const error = ex;
299
+ const error = ex instanceof FetchClientError ? ex : ex;
303
300
  this.logger?.error(`Error: ${toSafeJsonString(error)}`);
304
301
  throw error;
305
302
  } finally {
@@ -313,11 +310,11 @@ var HttpBridge = class extends AbstractBridge {
313
310
  const queryPayload = { schema: ModuleStateQuerySchema };
314
311
  const boundQuery = await this.bindQuery(queryPayload);
315
312
  try {
316
- const response = await this.axios.post(this.clientUrl.toString(), boundQuery);
313
+ const response = await this.fetchClient.post(this.clientUrl.toString(), boundQuery);
317
314
  if (response.status === 404) {
318
315
  return [];
319
316
  }
320
- const [, payloads, errors] = response.data.data;
317
+ const [, payloads, errors] = response.data?.data ?? [void 0, [], []];
321
318
  if (errors.length > 0) {
322
319
  throw new Error(`getRootState failed: ${JSON.stringify(errors, null, 2)}`);
323
320
  }
@@ -346,12 +343,12 @@ var HttpBridge = class extends AbstractBridge {
346
343
  return [];
347
344
  }
348
345
  };
349
- __publicField(HttpBridge, "axios", new Axios(axiosJsonConfig()));
350
346
  __publicField(HttpBridge, "configSchemas", [...__superGet(HttpBridge, HttpBridge, "configSchemas"), HttpBridgeConfigSchema]);
351
347
  __publicField(HttpBridge, "defaultConfigSchema", HttpBridgeConfigSchema);
352
348
  __publicField(HttpBridge, "defaultFailureRetryTime", 1e3 * 60);
353
349
  __publicField(HttpBridge, "defaultMaxConnections", 4);
354
350
  __publicField(HttpBridge, "defaultMaxPayloadSizeWarning", 256 * 256);
351
+ __publicField(HttpBridge, "fetchClient", new FetchJsonClient());
355
352
  __publicField(HttpBridge, "maxFailureCacheSize", 1e3);
356
353
  HttpBridge = __decorateClass([
357
354
  creatableModule2()
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/HttpBridge.ts","../../src/HttpBridgeConfig.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import {\n Address, assertEx,\n axiosJsonConfig,\n exists,\n forget,\n Promisable, toSafeJsonString,\n} from '@xylabs/sdk-js'\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 { Axios, 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?: Axios\n}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static readonly axios = new Axios(axiosJsonConfig())\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static readonly defaultFailureRetryTime = 1000 * 60\n static readonly defaultMaxConnections = 4\n static readonly defaultMaxPayloadSizeWarning = 256 * 256\n static readonly maxFailureCacheSize = 1000\n\n private _axios?: Axios\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<Address, number>({ max: HttpBridge.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get axios() {\n this._axios = this._axios ?? this.params.axios ?? HttpBridge.axios\n return this._axios\n }\n\n get clientUrl() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n get failureRetryTime() {\n return this.config.failureRetryTime ?? HttpBridge.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.config.maxConnections ?? HttpBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.config.maxPayloadSizeWarning ?? HttpBridge.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: ${toSafeJsonString(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/sdk-js'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { asSchema } from '@xyo-network/payload-model'\n\nexport const HttpBridgeConfigSchema = asSchema('network.xyo.bridge.http.config', true)\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 schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends Schema ? TSchema : HttpBridgeConfigSchema\n>\n","import type { Address, CreatableName } from '@xylabs/sdk-js'\nimport {\n assertEx, isAddress, isDefined,\n} from '@xylabs/sdk-js'\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 name: 'HttpBridgeModuleResolver' as CreatableName,\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 let proxy: HttpModuleProxy | undefined\n\n let state: Payload[] | undefined\n\n try {\n proxy = await HttpModuleProxy.create(finalParams)\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.error(error.message)\n }\n\n if (isDefined(proxy)) {\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 })\n const result = remainderParts.length > 0 ? await instance?.resolve(remainderParts, options) : instance\n return result ? [result] : []\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport {\n exists, forget,\n isAddress, isString,\n} from '@xylabs/sdk-js'\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 ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport { creatableModule, 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\n@creatableModule()\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 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>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: 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 (id === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] as T[]\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = parts.shift()\n if (isString(first)) {\n const remainingPath = parts.length > 0 ? parts.join(':') : undefined\n const address\n = isAddress(first)\n ? first\n : this.id === first\n ? this.address\n : this.childAddressByName(first)\n if (!isAddress(address)) return undefined\n const firstInstance = (await this.params.host.resolve(address)) as ModuleInstance | undefined\n return (isString(remainingPath) ? await firstInstance?.resolve(remainingPath) : firstInstance) as T | undefined\n }\n return undefined\n }\n default: {\n return (await ResolveHelper.resolve(config, id, options)).filter(mod => mod.address !== this.address)\n }\n }\n }\n}\n"],"mappings":"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","names":["assertEx","exists","forget","creatableModule","Mutex","LRUCache","isAddress","ResolveHelper","ResolveHelper","isAddress","result","Mutex","LRUCache","assertEx","forget","exists","creatableModule"]}
1
+ {"version":3,"sources":["../../src/HttpBridge.ts","../../src/HttpBridgeConfig.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["import type {\n Address,\n Promisable,\n} from '@xylabs/sdk-js'\nimport {\n assertEx,\n exists,\n FetchClientError,\n FetchJsonClient,\n forget,\n toSafeJsonString,\n} from '@xylabs/sdk-js'\nimport type { ApiEnvelope } from '@xyo-network/api-models'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport type {\n BridgeExposeOptions,\n BridgeModule,\n BridgeParams,\n BridgeUnexposeOptions,\n QuerySendFinishedEventArgs,\n QuerySendStartedEventArgs,\n} from '@xyo-network/bridge-model'\nimport type { ModuleManifestPayload, NodeManifestPayload } from '@xyo-network/manifest-model'\nimport { NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport type {\n AnyConfigSchema,\n ModuleInstance,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n} from '@xyo-network/module-model'\nimport {\n creatableModule,\n ModuleStateQuerySchema,\n} from '@xyo-network/module-model'\nimport { asAttachableNodeInstance } from '@xyo-network/node-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport type { HttpBridgeConfig } from './HttpBridgeConfig.ts'\nimport { HttpBridgeConfigSchema } from './HttpBridgeConfig.ts'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver.ts'\nimport type { BridgeQuerySender } from './ModuleProxy/index.ts'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {\n fetchClient?: FetchJsonClient\n}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static readonly defaultFailureRetryTime = 1000 * 60\n static readonly defaultMaxConnections = 4\n static readonly defaultMaxPayloadSizeWarning = 256 * 256\n static readonly fetchClient = new FetchJsonClient()\n static readonly maxFailureCacheSize = 1000\n\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<Address, number>({ max: HttpBridge.maxFailureCacheSize })\n private _fetchClient?: FetchJsonClient\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get clientUrl() {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n get failureRetryTime() {\n return this.config.failureRetryTime ?? HttpBridge.defaultFailureRetryTime\n }\n\n get fetchClient() {\n this._fetchClient = this._fetchClient ?? this.params.fetchClient ?? HttpBridge.fetchClient\n return this._fetchClient\n }\n\n get maxConnections() {\n return this.config.maxConnections ?? HttpBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.config.maxPayloadSizeWarning ?? HttpBridge.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.fetchClient.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 assertEx(result.data?.data, () => `targetQuery returned no data [${moduleUrl}]`)\n } catch (ex) {\n const error = ex instanceof FetchClientError ? ex : (ex as Error)\n this.logger?.error(`Error: ${toSafeJsonString(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.fetchClient.post<ApiEnvelope<ModuleQueryResult>>(this.clientUrl.toString(), boundQuery)\n if (response.status === 404) {\n return []\n }\n const [, payloads, errors] = response.data?.data ?? [undefined, [], []]\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/sdk-js'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { asSchema } from '@xyo-network/payload-model'\n\nexport const HttpBridgeConfigSchema = asSchema('network.xyo.bridge.http.config', true)\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 schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends Schema ? TSchema : HttpBridgeConfigSchema\n>\n","import type { Address, CreatableName } from '@xylabs/sdk-js'\nimport {\n assertEx, isAddress, isDefined,\n} from '@xylabs/sdk-js'\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} from '@xyo-network/module-model'\nimport { ResolveHelper } from '@xyo-network/module-resolver'\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 name: 'HttpBridgeModuleResolver' as CreatableName,\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 let proxy: HttpModuleProxy | undefined\n\n let state: Payload[] | undefined\n\n try {\n proxy = await HttpModuleProxy.create(finalParams)\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.error(error.message)\n }\n\n if (isDefined(proxy)) {\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 })\n const result = remainderParts.length > 0 ? await instance?.resolve(remainderParts, options) : instance\n return result ? [result] : []\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport {\n exists, forget,\n isAddress, isString,\n} from '@xylabs/sdk-js'\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 ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { creatableModule } from '@xyo-network/module-model'\nimport type { ResolveHelperConfig } from '@xyo-network/module-resolver'\nimport { ResolveHelper } from '@xyo-network/module-resolver'\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\n@creatableModule()\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 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>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: 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 (id === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] as T[]\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = parts.shift()\n if (isString(first)) {\n const remainingPath = parts.length > 0 ? parts.join(':') : undefined\n const address\n = isAddress(first)\n ? first\n : this.id === first\n ? this.address\n : this.childAddressByName(first)\n if (!isAddress(address)) return undefined\n const firstInstance = (await this.params.host.resolve(address)) as ModuleInstance | undefined\n return (isString(remainingPath) ? await firstInstance?.resolve(remainingPath) : firstInstance) as T | undefined\n }\n return undefined\n }\n default: {\n return (await ResolveHelper.resolve(config, id, options)).filter(mod => mod.address !== this.address)\n }\n }\n }\n}\n"],"mappings":"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","names":["assertEx","exists","forget","creatableModule","Mutex","LRUCache","isAddress","ResolveHelper","ResolveHelper","isAddress","result","Mutex","LRUCache","assertEx","forget","exists","creatableModule"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/bridge-http",
3
- "version": "5.3.29",
3
+ "version": "5.4.1",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -22,12 +22,10 @@
22
22
  "exports": {
23
23
  ".": {
24
24
  "types": "./dist/neutral/index.d.ts",
25
- "import": "./dist/neutral/index.mjs",
26
25
  "default": "./dist/neutral/index.mjs"
27
26
  },
28
27
  "./package.json": "./package.json"
29
28
  },
30
- "types": "dist/neutral/index.d.ts",
31
29
  "files": [
32
30
  "dist",
33
31
  "README.md",
@@ -36,76 +34,74 @@
36
34
  ],
37
35
  "dependencies": {
38
36
  "async-mutex": "~0.5.0",
39
- "lru-cache": "~11.3.1",
40
- "@xyo-network/account": "~5.3.29",
41
- "@xyo-network/boundwitness-model": "~5.3.29",
42
- "@xyo-network/payload-model": "~5.3.29"
37
+ "lru-cache": "~11.3.5",
38
+ "@xyo-network/account": "~5.4.1",
39
+ "@xyo-network/boundwitness-model": "~5.4.1",
40
+ "@xyo-network/payload-model": "~5.4.1"
43
41
  },
44
42
  "devDependencies": {
45
43
  "@opentelemetry/api": "^1.9.1",
46
- "@types/node": "^25.5.2",
47
- "@xylabs/sdk-js": "^5.0.95",
48
- "@xylabs/ts-scripts-common": "~7.8.4",
49
- "@xylabs/ts-scripts-pnpm": "~7.8.4",
50
- "@xylabs/tsconfig": "~7.8.4",
51
- "@xylabs/vitest-extended": "~5.0.95",
52
- "@xylabs/vitest-matchers": "~5.0.95",
53
- "axios": "^1.14.0",
44
+ "@types/node": "^25.6.0",
45
+ "@xylabs/sdk-js": "^5.0.97",
46
+ "@xylabs/toolchain": "~7.10.8",
47
+ "@xylabs/tsconfig": "~7.10.8",
48
+ "@xylabs/vitest-extended": "~5.0.97",
49
+ "@xylabs/vitest-matchers": "~5.0.97",
54
50
  "esbuild": "^0.28.0",
55
51
  "ethers": "^6.16.0",
56
52
  "pako": "~2.1.0",
57
53
  "tslib": "^2.8.1",
58
54
  "typescript": "~5.9.3",
59
- "vite": "^8.0.5",
60
- "vitest": "~4.1.2",
55
+ "vite": "^8.0.8",
56
+ "vitest": "~4.1.4",
61
57
  "zod": "^4.3.6",
62
- "@xyo-network/account-model": "~5.3.29",
63
- "@xyo-network/archivist-model": "~5.3.29",
64
- "@xyo-network/archivist-wrapper": "~5.3.29",
65
- "@xyo-network/api-models": "~5.3.29",
66
- "@xyo-network/bridge-model": "~5.3.29",
67
- "@xyo-network/bridge-abstract": "~5.3.29",
68
- "@xyo-network/config-payload-plugin": "~5.3.29",
69
- "@xyo-network/data": "~5.3.29",
70
- "@xyo-network/boundwitness-builder": "~5.3.29",
71
- "@xyo-network/diviner-wrapper": "~5.3.29",
72
- "@xyo-network/diviner-payload-model": "~5.3.29",
73
- "@xyo-network/diviner-model": "~5.3.29",
74
- "@xyo-network/elliptic": "~5.3.29",
75
- "@xyo-network/boundwitness-validator": "~5.3.29",
76
- "@xyo-network/hash": "~5.3.29",
77
- "@xyo-network/manifest-model": "~5.3.29",
78
- "@xyo-network/module-model": "~5.3.29",
79
- "@xyo-network/module-resolver": "~5.3.29",
80
- "@xyo-network/module-wrapper": "~5.3.29",
81
- "@xyo-network/node-abstract": "~5.3.29",
82
- "@xyo-network/module-abstract": "~5.3.29",
83
- "@xyo-network/node-model": "~5.3.29",
84
- "@xyo-network/node-wrapper": "~5.3.29",
85
- "@xyo-network/payload-builder": "~5.3.29",
86
- "@xyo-network/node-memory": "~5.3.29",
87
- "@xyo-network/payload-validator": "~5.3.29",
88
- "@xyo-network/sentinel-model": "~5.3.29",
89
- "@xyo-network/previous-hash-store-model": "~5.3.29",
90
- "@xyo-network/wallet": "~5.3.29",
91
- "@xyo-network/payload-wrapper": "~5.3.29",
92
- "@xyo-network/wallet-model": "~5.3.29",
93
- "@xyo-network/wasm": "~5.3.29",
94
- "@xyo-network/witness-model": "~5.3.29"
58
+ "@xyo-network/archivist-model": "~5.4.1",
59
+ "@xyo-network/archivist-wrapper": "~5.4.1",
60
+ "@xyo-network/account-model": "~5.4.1",
61
+ "@xyo-network/boundwitness-builder": "~5.4.1",
62
+ "@xyo-network/api-models": "~5.4.1",
63
+ "@xyo-network/boundwitness-validator": "~5.4.1",
64
+ "@xyo-network/bridge-model": "~5.4.1",
65
+ "@xyo-network/diviner-model": "~5.4.1",
66
+ "@xyo-network/config-payload-plugin": "~5.4.1",
67
+ "@xyo-network/data": "~5.4.1",
68
+ "@xyo-network/bridge-abstract": "~5.4.1",
69
+ "@xyo-network/diviner-payload-model": "~5.4.1",
70
+ "@xyo-network/diviner-wrapper": "~5.4.1",
71
+ "@xyo-network/hash": "~5.4.1",
72
+ "@xyo-network/elliptic": "~5.4.1",
73
+ "@xyo-network/manifest-model": "~5.4.1",
74
+ "@xyo-network/module-abstract": "~5.4.1",
75
+ "@xyo-network/module-resolver": "~5.4.1",
76
+ "@xyo-network/module-model": "~5.4.1",
77
+ "@xyo-network/module-wrapper": "~5.4.1",
78
+ "@xyo-network/node-abstract": "~5.4.1",
79
+ "@xyo-network/node-memory": "~5.4.1",
80
+ "@xyo-network/node-wrapper": "~5.4.1",
81
+ "@xyo-network/payload-builder": "~5.4.1",
82
+ "@xyo-network/node-model": "~5.4.1",
83
+ "@xyo-network/payload-validator": "~5.4.1",
84
+ "@xyo-network/payload-wrapper": "~5.4.1",
85
+ "@xyo-network/previous-hash-store-model": "~5.4.1",
86
+ "@xyo-network/wallet": "~5.4.1",
87
+ "@xyo-network/wallet-model": "~5.4.1",
88
+ "@xyo-network/sentinel-model": "~5.4.1",
89
+ "@xyo-network/wasm": "~5.4.1",
90
+ "@xyo-network/witness-model": "~5.4.1"
95
91
  },
96
92
  "peerDependencies": {
97
- "@xylabs/sdk-js": "^5",
98
- "axios": "^1",
99
- "@xyo-network/account-model": "~5.3.29",
100
- "@xyo-network/bridge-abstract": "~5.3.29",
101
- "@xyo-network/bridge-model": "~5.3.29",
102
- "@xyo-network/data": "~5.3.29",
103
- "@xyo-network/config-payload-plugin": "~5.3.29",
104
- "@xyo-network/elliptic": "~5.3.29",
105
- "@xyo-network/manifest-model": "~5.3.29",
106
- "@xyo-network/module-model": "~5.3.29",
107
- "@xyo-network/node-model": "~5.3.29",
108
- "@xyo-network/previous-hash-store-model": "~5.3.29"
93
+ "@xylabs/sdk-js": "^5.0.97",
94
+ "@xyo-network/account-model": "~5.4",
95
+ "@xyo-network/bridge-abstract": "~5.4",
96
+ "@xyo-network/bridge-model": "~5.4",
97
+ "@xyo-network/config-payload-plugin": "~5.4",
98
+ "@xyo-network/data": "~5.4",
99
+ "@xyo-network/elliptic": "~5.4",
100
+ "@xyo-network/manifest-model": "~5.4",
101
+ "@xyo-network/module-model": "~5.4",
102
+ "@xyo-network/module-resolver": "~5.4",
103
+ "@xyo-network/node-model": "~5.4",
104
+ "@xyo-network/previous-hash-store-model": "~5.4"
109
105
  },
110
106
  "publishConfig": {
111
107
  "access": "public"