@xyo-network/bridge 2.32.0-rc.2 → 2.32.0

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.
Files changed (65) hide show
  1. package/dist/cjs/AxiosJson.d.ts +10 -0
  2. package/dist/cjs/AxiosJson.d.ts.map +1 -0
  3. package/dist/cjs/AxiosJson.js +36 -0
  4. package/dist/cjs/AxiosJson.js.map +1 -0
  5. package/dist/cjs/Bridge.d.ts +2 -2
  6. package/dist/cjs/Bridge.d.ts.map +1 -1
  7. package/dist/cjs/Config.d.ts +4 -1
  8. package/dist/cjs/Config.d.ts.map +1 -1
  9. package/dist/cjs/PartialConfig.d.ts +4 -0
  10. package/dist/cjs/PartialConfig.d.ts.map +1 -0
  11. package/dist/cjs/PartialConfig.js +3 -0
  12. package/dist/cjs/PartialConfig.js.map +1 -0
  13. package/dist/cjs/Queries/index.d.ts +3 -2
  14. package/dist/cjs/Queries/index.d.ts.map +1 -1
  15. package/dist/cjs/Queries/index.js.map +1 -1
  16. package/dist/cjs/XyoBridge.d.ts +4 -3
  17. package/dist/cjs/XyoBridge.d.ts.map +1 -1
  18. package/dist/cjs/XyoBridge.js +11 -5
  19. package/dist/cjs/XyoBridge.js.map +1 -1
  20. package/dist/cjs/XyoHttpBridge.d.ts +29 -0
  21. package/dist/cjs/XyoHttpBridge.d.ts.map +1 -0
  22. package/dist/cjs/XyoHttpBridge.js +81 -0
  23. package/dist/cjs/XyoHttpBridge.js.map +1 -0
  24. package/dist/cjs/index.d.ts +2 -0
  25. package/dist/cjs/index.d.ts.map +1 -1
  26. package/dist/cjs/index.js +2 -0
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/docs.json +3059 -968
  29. package/dist/esm/AxiosJson.d.ts +10 -0
  30. package/dist/esm/AxiosJson.d.ts.map +1 -0
  31. package/dist/esm/AxiosJson.js +39 -0
  32. package/dist/esm/AxiosJson.js.map +1 -0
  33. package/dist/esm/Bridge.d.ts +2 -2
  34. package/dist/esm/Bridge.d.ts.map +1 -1
  35. package/dist/esm/Config.d.ts +4 -1
  36. package/dist/esm/Config.d.ts.map +1 -1
  37. package/dist/esm/PartialConfig.d.ts +4 -0
  38. package/dist/esm/PartialConfig.d.ts.map +1 -0
  39. package/dist/esm/PartialConfig.js +2 -0
  40. package/dist/esm/PartialConfig.js.map +1 -0
  41. package/dist/esm/Queries/index.d.ts +3 -2
  42. package/dist/esm/Queries/index.d.ts.map +1 -1
  43. package/dist/esm/Queries/index.js.map +1 -1
  44. package/dist/esm/XyoBridge.d.ts +4 -3
  45. package/dist/esm/XyoBridge.d.ts.map +1 -1
  46. package/dist/esm/XyoBridge.js +10 -5
  47. package/dist/esm/XyoBridge.js.map +1 -1
  48. package/dist/esm/XyoHttpBridge.d.ts +29 -0
  49. package/dist/esm/XyoHttpBridge.d.ts.map +1 -0
  50. package/dist/esm/XyoHttpBridge.js +65 -0
  51. package/dist/esm/XyoHttpBridge.js.map +1 -0
  52. package/dist/esm/index.d.ts +2 -0
  53. package/dist/esm/index.d.ts.map +1 -1
  54. package/dist/esm/index.js +2 -0
  55. package/dist/esm/index.js.map +1 -1
  56. package/package.json +10 -6
  57. package/src/AxiosJson.ts +43 -0
  58. package/src/Bridge.ts +2 -2
  59. package/src/Config.ts +6 -1
  60. package/src/PartialConfig.ts +5 -0
  61. package/src/Queries/index.ts +4 -2
  62. package/src/XyoBridge.ts +13 -7
  63. package/src/XyoHttpBridge.spec.ts +21 -0
  64. package/src/XyoHttpBridge.ts +90 -0
  65. package/src/index.ts +2 -0
@@ -0,0 +1,10 @@
1
+ import { Axios, AxiosRequestConfig } from 'axios';
2
+ export declare type AxiosJsonRequestConfig<D = any> = AxiosRequestConfig<D> & {
3
+ compressLength?: number;
4
+ };
5
+ export declare class AxiosJson extends Axios {
6
+ constructor(config?: AxiosJsonRequestConfig);
7
+ private static axiosHeaders;
8
+ private static axiosConfig;
9
+ }
10
+ //# sourceMappingURL=AxiosJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AxiosJson.d.ts","sourceRoot":"","sources":["../../src/AxiosJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAuB,MAAM,OAAO,CAAA;AAItE,oBAAY,sBAAsB,CAAC,CAAC,GAAG,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjG,qBAAa,SAAU,SAAQ,KAAK;gBACtB,MAAM,CAAC,EAAE,sBAAsB;IAI3C,OAAO,CAAC,MAAM,CAAC,YAAY;IAQ3B,OAAO,CAAC,MAAM,CAAC,WAAW;CAuB3B"}
@@ -0,0 +1,39 @@
1
+ import { Axios } from 'axios';
2
+ import { gzip } from 'pako';
3
+ export class AxiosJson extends Axios {
4
+ constructor(config) {
5
+ super(AxiosJson.axiosConfig(config));
6
+ }
7
+ static axiosHeaders(headers) {
8
+ return {
9
+ Accept: 'application/json, text/plain, *.*',
10
+ 'Content-Type': 'application/json',
11
+ ...headers,
12
+ };
13
+ }
14
+ static axiosConfig({ compressLength, headers, ...config } = {}) {
15
+ return {
16
+ headers: this.axiosHeaders(headers),
17
+ transformRequest: (data, headers) => {
18
+ const json = JSON.stringify(data);
19
+ if (headers && data) {
20
+ if (json.length > (compressLength ?? 1024)) {
21
+ headers['Content-Encoding'] = 'gzip';
22
+ return gzip(JSON.stringify(data)).buffer;
23
+ }
24
+ }
25
+ return JSON.stringify(data);
26
+ },
27
+ transformResponse: (data) => {
28
+ try {
29
+ return JSON.parse(data);
30
+ }
31
+ catch (ex) {
32
+ return null;
33
+ }
34
+ },
35
+ ...config,
36
+ };
37
+ }
38
+ }
39
+ //# sourceMappingURL=AxiosJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AxiosJson.js","sourceRoot":"","sources":["../../src/AxiosJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA2C,MAAM,OAAO,CAAA;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,MAA+B;QACzC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;IACtC,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,OAA6B;QACvD,OAAO;YACL,MAAM,EAAE,mCAAmC;YAC3C,cAAc,EAAE,kBAAkB;YAClC,GAAG,OAAO;SACX,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,KAA6B,EAAE;QAC5F,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACjC,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE;wBAC1C,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAA;wBACpC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;qBACzC;iBACF;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC7B,CAAC;YACD,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC1B,IAAI;oBACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;iBACxB;gBAAC,OAAO,EAAE,EAAE;oBACX,OAAO,IAAI,CAAA;iBACZ;YACH,CAAC;YACD,GAAG,MAAM;SACV,CAAA;IACH,CAAC;CACF"}
@@ -2,8 +2,8 @@ import { Module } from '@xyo-network/module';
2
2
  import { Promisable } from '@xyo-network/promisable';
3
3
  import { XyoBridgeQuery } from './Queries';
4
4
  export interface Bridge {
5
- connect: (uri?: string) => Promisable<boolean>;
6
- disconnect: (uri?: string) => Promisable<boolean>;
5
+ connect: () => Promisable<boolean>;
6
+ disconnect: () => Promisable<boolean>;
7
7
  }
8
8
  export interface BridgeModule<TQuery extends XyoBridgeQuery = XyoBridgeQuery> extends Bridge, Module<TQuery> {
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9C,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,YAAY,CAAC,MAAM,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;CAAG"}
1
+ {"version":3,"file":"Bridge.d.ts","sourceRoot":"","sources":["../../src/Bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,EAAE,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,YAAY,CAAC,MAAM,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;CAAG"}
@@ -2,5 +2,8 @@ import { XyoModuleConfig } from '@xyo-network/module';
2
2
  import { XyoPayload } from '@xyo-network/payload';
3
3
  export declare type XyoBridgeConfigSchema = 'network.xyo.bridge.config';
4
4
  export declare const XyoBridgeConfigSchema: XyoBridgeConfigSchema;
5
- export declare type XyoBridgeConfig<TConfig extends XyoPayload = XyoPayload> = XyoModuleConfig<TConfig>;
5
+ export declare type XyoBridgeConfig<TConfig extends XyoPayload = XyoPayload> = XyoModuleConfig<{
6
+ nodeUri: string;
7
+ targetAddress?: string;
8
+ } & TConfig>;
6
9
  //# sourceMappingURL=Config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,oBAAY,qBAAqB,GAAG,2BAA2B,CAAA;AAC/D,eAAO,MAAM,qBAAqB,EAAE,qBAAmD,CAAA;AAEvF,oBAAY,eAAe,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,oBAAY,qBAAqB,GAAG,2BAA2B,CAAA;AAC/D,eAAO,MAAM,qBAAqB,EAAE,qBAAmD,CAAA;AAEvF,oBAAY,eAAe,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI,eAAe,CACpF;IACE,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,OAAO,CACZ,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { PartialModuleConfig } from '@xyo-network/module';
2
+ import { XyoBridgeConfig } from './Config';
3
+ export declare type PartialBridgeConfig<T extends XyoBridgeConfig> = PartialModuleConfig<T>;
4
+ //# sourceMappingURL=PartialConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PartialConfig.d.ts","sourceRoot":"","sources":["../../src/PartialConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,oBAAY,mBAAmB,CAAC,CAAC,SAAS,eAAe,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PartialConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PartialConfig.js","sourceRoot":"","sources":["../../src/PartialConfig.ts"],"names":[],"mappings":""}
@@ -1,7 +1,8 @@
1
+ import { XyoModuleQuery, XyoModuleQuerySchema } from '@xyo-network/module';
1
2
  import { XyoBridgeConnectQuery, XyoBridgeConnectQuerySchema } from './Connect';
2
3
  import { XyoBridgeDisconnectQuery, XyoBridgeDisconnectQuerySchema } from './Disconnect';
3
4
  export * from './Connect';
4
5
  export * from './Disconnect';
5
- export declare type XyoBridgeQuery = XyoBridgeConnectQuery | XyoBridgeDisconnectQuery;
6
- export declare type XyoBridgeQuerySchema = XyoBridgeConnectQuerySchema | XyoBridgeDisconnectQuerySchema;
6
+ export declare type XyoBridgeQuery = XyoBridgeConnectQuery | XyoBridgeDisconnectQuery | XyoModuleQuery;
7
+ export declare type XyoBridgeQuerySchema = XyoBridgeConnectQuerySchema | XyoBridgeDisconnectQuerySchema | XyoModuleQuerySchema;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAA;AAC9E,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAEvF,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAE5B,oBAAY,cAAc,GAAG,qBAAqB,GAAG,wBAAwB,CAAA;AAE7E,oBAAY,oBAAoB,GAAG,2BAA2B,GAAG,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1E,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAA;AAC9E,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAEvF,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAE5B,oBAAY,cAAc,GAAG,qBAAqB,GAAG,wBAAwB,GAAG,cAAc,CAAA;AAE9F,oBAAY,oBAAoB,GAAG,2BAA2B,GAAG,8BAA8B,GAAG,oBAAoB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAGA,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAKA,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
@@ -6,9 +6,10 @@ import { BridgeModule } from './Bridge';
6
6
  import { XyoBridgeConfig } from './Config';
7
7
  import { XyoBridgeQuery } from './Queries';
8
8
  export declare abstract class XyoBridge<TConfig extends XyoBridgeConfig = XyoBridgeConfig, TQuery extends XyoBridgeQuery = XyoBridgeQuery> extends XyoModule<TConfig, TQuery> implements BridgeModule<TQuery> {
9
- get queries(): "network.xyo.query.bridge.connect"[];
10
- abstract connect(uri?: string): Promisable<boolean>;
11
- abstract disconnect(uri?: string): Promisable<boolean>;
9
+ queries(): ("network.xyo.query.bridge.connect" | "network.xyo.query.bridge.disconnect" | TQuery["schema"])[];
10
+ abstract connect(): Promisable<boolean>;
11
+ abstract disconnect(): Promisable<boolean>;
12
+ abstract forward(query: TQuery): Promise<[XyoBoundWitness, (XyoPayload | null)[]]>;
12
13
  query(query: TQuery): Promise<[XyoBoundWitness, (XyoPayload | null)[]]>;
13
14
  }
14
15
  //# sourceMappingURL=XyoBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoBridge.d.ts","sourceRoot":"","sources":["../../src/XyoBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAA+D,cAAc,EAAE,MAAM,WAAW,CAAA;AAEvG,8BAAsB,SAAS,CAAC,OAAO,SAAS,eAAe,GAAG,eAAe,EAAE,MAAM,SAAS,cAAc,GAAG,cAAc,CAC/H,SAAQ,SAAS,CAAC,OAAO,EAAE,MAAM,CACjC,YAAW,YAAY,CAAC,MAAM,CAAC;IAE/B,IAAa,OAAO,yCAEnB;IAED,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;IACnD,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;IAEvC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;CAgBvF"}
1
+ {"version":3,"file":"XyoBridge.d.ts","sourceRoot":"","sources":["../../src/XyoBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAA+D,cAAc,EAAE,MAAM,WAAW,CAAA;AAEvG,8BAAsB,SAAS,CAAC,OAAO,SAAS,eAAe,GAAG,eAAe,EAAE,MAAM,SAAS,cAAc,GAAG,cAAc,CAC/H,SAAQ,SAAS,CAAC,OAAO,EAAE,MAAM,CACjC,YAAW,YAAY,CAAC,MAAM,CAAC;IAEtB,OAAO;IAIhB,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;IACvC,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC;IAE1C,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAEnE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;CAoBvF"}
@@ -1,22 +1,27 @@
1
1
  import { XyoModule } from '@xyo-network/module';
2
2
  import { XyoBridgeConnectQuerySchema, XyoBridgeDisconnectQuerySchema } from './Queries';
3
3
  export class XyoBridge extends XyoModule {
4
- get queries() {
5
- return [XyoBridgeConnectQuerySchema];
4
+ queries() {
5
+ return [XyoBridgeConnectQuerySchema, XyoBridgeDisconnectQuerySchema, ...super.queries()];
6
6
  }
7
7
  async query(query) {
8
8
  const payloads = [];
9
9
  switch (query.schema) {
10
10
  case XyoBridgeConnectQuerySchema: {
11
- await this.connect(query?.uri);
11
+ await this.connect();
12
12
  break;
13
13
  }
14
14
  case XyoBridgeDisconnectQuerySchema: {
15
- await this.disconnect(query?.uri);
15
+ await this.disconnect();
16
16
  break;
17
17
  }
18
18
  default:
19
- return super.query(query);
19
+ if (super.queries().find((schema) => schema === query.schema)) {
20
+ return super.query(query);
21
+ }
22
+ else {
23
+ return this.forward(query);
24
+ }
20
25
  }
21
26
  return [this.bindPayloads(payloads), payloads];
22
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"XyoBridge.js","sourceRoot":"","sources":["../../src/XyoBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAM/C,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAkB,MAAM,WAAW,CAAA;AAEvG,MAAM,OAAgB,SACpB,SAAQ,SAA0B;IAGlC,IAAa,OAAO;QAClB,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACtC,CAAC;IAKQ,KAAK,CAAC,KAAK,CAAC,KAAa;QAChC,MAAM,QAAQ,GAA0B,EAAE,CAAA;QAC1C,QAAQ,KAAK,CAAC,MAAM,EAAE;YACpB,KAAK,2BAA2B,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAC9B,MAAK;aACN;YACD,KAAK,8BAA8B,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBACjC,MAAK;aACN;YACD;gBACE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SAC5B;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;CACF"}
1
+ {"version":3,"file":"XyoBridge.js","sourceRoot":"","sources":["../../src/XyoBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAM/C,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAkB,MAAM,WAAW,CAAA;AAEvG,MAAM,OAAgB,SACpB,SAAQ,SAA0B;IAGzB,OAAO;QACd,OAAO,CAAC,2BAA2B,EAAE,8BAA8B,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAC1F,CAAC;IAOQ,KAAK,CAAC,KAAK,CAAC,KAAa;QAChC,MAAM,QAAQ,GAA0B,EAAE,CAAA;QAC1C,QAAQ,KAAK,CAAC,MAAM,EAAE;YACpB,KAAK,2BAA2B,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;gBACpB,MAAK;aACN;YACD,KAAK,8BAA8B,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;gBACvB,MAAK;aACN;YACD;gBACE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE;oBAC7D,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;iBAC1B;qBAAM;oBACL,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;iBAC3B;SACJ;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import { XyoBoundWitness } from '@xyo-network/boundwitness';
2
+ import { XyoModule } from '@xyo-network/module';
3
+ import { XyoPayloads } from '@xyo-network/payload';
4
+ import { Promisable } from '@xyo-network/promisable';
5
+ import { AxiosRequestHeaders } from 'axios';
6
+ import { AxiosJsonRequestConfig } from './AxiosJson';
7
+ import { BridgeModule } from './Bridge';
8
+ import { XyoBridgeConfig } from './Config';
9
+ import { PartialBridgeConfig } from './PartialConfig';
10
+ import { XyoBridgeQuery } from './Queries';
11
+ export declare type XyoHttpBridgeConfigSchema = 'network.xyo.bridge.http.config';
12
+ export declare const XyoHttpBridgeConfigSchema: XyoHttpBridgeConfigSchema;
13
+ export declare type XyoHttpBridgeConfig = XyoBridgeConfig<{
14
+ schema: XyoHttpBridgeConfigSchema;
15
+ headers?: AxiosRequestHeaders;
16
+ axios?: AxiosJsonRequestConfig;
17
+ }>;
18
+ export declare class XyoHttpBridge<TQuery extends XyoBridgeQuery = XyoBridgeQuery> extends XyoModule<XyoHttpBridgeConfig, TQuery> implements BridgeModule<TQuery> {
19
+ private axios;
20
+ constructor(config: PartialBridgeConfig<XyoHttpBridgeConfig>);
21
+ get nodeUri(): string;
22
+ get targetAddress(): string | undefined;
23
+ get targetAddressString(): string;
24
+ connect(): Promisable<boolean>;
25
+ disconnect(): Promisable<boolean>;
26
+ forward(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]>;
27
+ query(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]>;
28
+ }
29
+ //# sourceMappingURL=XyoHttpBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoHttpBridge.d.ts","sourceRoot":"","sources":["../../src/XyoHttpBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAc,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAc,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAEvD,OAAO,EAAa,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAA+D,cAAc,EAAE,MAAM,WAAW,CAAA;AAEvG,oBAAY,yBAAyB,GAAG,gCAAgC,CAAA;AACxE,eAAO,MAAM,yBAAyB,EAAE,yBAA4D,CAAA;AAEpG,oBAAY,mBAAmB,GAAG,eAAe,CAAC;IAChD,MAAM,EAAE,yBAAyB,CAAA;IACjC,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,KAAK,CAAC,EAAE,sBAAsB,CAAA;CAC/B,CAAC,CAAA;AAEF,qBAAa,aAAa,CAAC,MAAM,SAAS,cAAc,GAAG,cAAc,CACvE,SAAQ,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAC7C,YAAW,YAAY,CAAC,MAAM,CAAC;IAE/B,OAAO,CAAC,KAAK,CAAW;gBAEZ,MAAM,EAAE,mBAAmB,CAAC,mBAAmB,CAAC;IAK5D,IAAW,OAAO,WAEjB;IAED,IAAW,aAAa,uBAEvB;IAED,IAAW,mBAAmB,WAE7B;IAED,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;IAI9B,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC;IAI3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAetD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;CAqB7E"}
@@ -0,0 +1,65 @@
1
+ import { assertEx } from '@xylabs/assert';
2
+ import { XyoModule } from '@xyo-network/module';
3
+ import { AxiosJson } from './AxiosJson';
4
+ import { XyoBridgeConnectQuerySchema, XyoBridgeDisconnectQuerySchema } from './Queries';
5
+ export const XyoHttpBridgeConfigSchema = 'network.xyo.bridge.http.config';
6
+ export class XyoHttpBridge extends XyoModule {
7
+ axios;
8
+ constructor(config) {
9
+ super({ schema: XyoHttpBridgeConfigSchema, ...config });
10
+ this.axios = new AxiosJson(this.config?.axios);
11
+ }
12
+ get nodeUri() {
13
+ return assertEx(this.config?.nodeUri, 'Missing nodeUri');
14
+ }
15
+ get targetAddress() {
16
+ return this.config?.targetAddress;
17
+ }
18
+ get targetAddressString() {
19
+ return this.targetAddress ?? '';
20
+ }
21
+ connect() {
22
+ return true;
23
+ }
24
+ disconnect() {
25
+ return true;
26
+ }
27
+ async forward(query) {
28
+ try {
29
+ const boundQuery = this.bindPayloads([query]);
30
+ const result = await this.axios.post(`${this.nodeUri}/${this.address}`, [boundQuery, ...[query]]);
31
+ console.log(`Status: ${result.status}`);
32
+ console.log(`Data: ${JSON.stringify(result.data, null, 2)}`);
33
+ return result.data;
34
+ }
35
+ catch (ex) {
36
+ const error = ex;
37
+ console.log(`Error Status: ${error.status}`);
38
+ console.log(`Error Cause: ${JSON.stringify(error.cause, null, 2)}`);
39
+ throw error;
40
+ }
41
+ }
42
+ async query(query) {
43
+ console.log(`Query: ${query.schema}`);
44
+ const payloads = [];
45
+ switch (query.schema) {
46
+ case XyoBridgeConnectQuerySchema: {
47
+ await this.connect();
48
+ break;
49
+ }
50
+ case XyoBridgeDisconnectQuerySchema: {
51
+ await this.disconnect();
52
+ break;
53
+ }
54
+ default:
55
+ if (super.queries().find((schema) => schema === query.schema)) {
56
+ return super.query(query);
57
+ }
58
+ else {
59
+ return this.forward(query);
60
+ }
61
+ }
62
+ return [this.bindPayloads(payloads), payloads];
63
+ }
64
+ }
65
+ //# sourceMappingURL=XyoHttpBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoHttpBridge.js","sourceRoot":"","sources":["../../src/XyoHttpBridge.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export * from './Config';
2
+ export * from './PartialConfig';
2
3
  export * from './Queries';
3
4
  export * from './XyoBridge';
4
5
  export * from './XyoBridgeWrapper';
6
+ export * from './XyoHttpBridge';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA"}
package/dist/esm/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from './Config';
2
+ export * from './PartialConfig';
2
3
  export * from './Queries';
3
4
  export * from './XyoBridge';
4
5
  export * from './XyoBridgeWrapper';
6
+ export * from './XyoHttpBridge';
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA"}
package/package.json CHANGED
@@ -10,12 +10,17 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xyo-network/boundwitness": "^2.32.0-rc.2",
14
- "@xyo-network/module": "^2.32.0-rc.2",
15
- "@xyo-network/payload": "^2.32.0-rc.2",
16
- "@xyo-network/promisable": "^2.32.0-rc.2",
13
+ "@xylabs/assert": "^2.6.7",
14
+ "@xyo-network/boundwitness": "^2.32.0",
15
+ "@xyo-network/module": "^2.32.0",
16
+ "@xyo-network/payload": "^2.32.0",
17
+ "@xyo-network/promisable": "^2.32.0",
18
+ "pako": "^2.0.4",
17
19
  "tslib": "^2.4.0"
18
20
  },
21
+ "peerDependencies": {
22
+ "axios": "^0.27.2"
23
+ },
19
24
  "description": "Primary SDK for using XYO Protocol 2.0",
20
25
  "browser": "dist/esm/index.js",
21
26
  "docs": "dist/docs.json",
@@ -49,6 +54,5 @@
49
54
  },
50
55
  "sideEffects": false,
51
56
  "types": "dist/esm/index.d.ts",
52
- "version": "2.32.0-rc.2",
53
- "stableVersion": "2.31.5"
57
+ "version": "2.32.0"
54
58
  }
@@ -0,0 +1,43 @@
1
+ import { Axios, AxiosRequestConfig, AxiosRequestHeaders } from 'axios'
2
+ import { gzip } from 'pako'
3
+
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ export type AxiosJsonRequestConfig<D = any> = AxiosRequestConfig<D> & { compressLength?: number }
6
+
7
+ export class AxiosJson extends Axios {
8
+ constructor(config?: AxiosJsonRequestConfig) {
9
+ super(AxiosJson.axiosConfig(config))
10
+ }
11
+
12
+ private static axiosHeaders(headers?: AxiosRequestHeaders): AxiosRequestHeaders {
13
+ return {
14
+ Accept: 'application/json, text/plain, *.*',
15
+ 'Content-Type': 'application/json',
16
+ ...headers,
17
+ }
18
+ }
19
+
20
+ private static axiosConfig({ compressLength, headers, ...config }: AxiosJsonRequestConfig = {}): AxiosRequestConfig {
21
+ return {
22
+ headers: this.axiosHeaders(headers),
23
+ transformRequest: (data, headers) => {
24
+ const json = JSON.stringify(data)
25
+ if (headers && data) {
26
+ if (json.length > (compressLength ?? 1024)) {
27
+ headers['Content-Encoding'] = 'gzip'
28
+ return gzip(JSON.stringify(data)).buffer
29
+ }
30
+ }
31
+ return JSON.stringify(data)
32
+ },
33
+ transformResponse: (data) => {
34
+ try {
35
+ return JSON.parse(data)
36
+ } catch (ex) {
37
+ return null
38
+ }
39
+ },
40
+ ...config,
41
+ }
42
+ }
43
+ }
package/src/Bridge.ts CHANGED
@@ -4,8 +4,8 @@ import { Promisable } from '@xyo-network/promisable'
4
4
  import { XyoBridgeQuery } from './Queries'
5
5
 
6
6
  export interface Bridge {
7
- connect: (uri?: string) => Promisable<boolean>
8
- disconnect: (uri?: string) => Promisable<boolean>
7
+ connect: () => Promisable<boolean>
8
+ disconnect: () => Promisable<boolean>
9
9
  }
10
10
 
11
11
  export interface BridgeModule<TQuery extends XyoBridgeQuery = XyoBridgeQuery> extends Bridge, Module<TQuery> {}
package/src/Config.ts CHANGED
@@ -4,4 +4,9 @@ import { XyoPayload } from '@xyo-network/payload'
4
4
  export type XyoBridgeConfigSchema = 'network.xyo.bridge.config'
5
5
  export const XyoBridgeConfigSchema: XyoBridgeConfigSchema = 'network.xyo.bridge.config'
6
6
 
7
- export type XyoBridgeConfig<TConfig extends XyoPayload = XyoPayload> = XyoModuleConfig<TConfig>
7
+ export type XyoBridgeConfig<TConfig extends XyoPayload = XyoPayload> = XyoModuleConfig<
8
+ {
9
+ nodeUri: string
10
+ targetAddress?: string
11
+ } & TConfig
12
+ >
@@ -0,0 +1,5 @@
1
+ import { PartialModuleConfig } from '@xyo-network/module'
2
+
3
+ import { XyoBridgeConfig } from './Config'
4
+
5
+ export type PartialBridgeConfig<T extends XyoBridgeConfig> = PartialModuleConfig<T>
@@ -1,9 +1,11 @@
1
+ import { XyoModuleQuery, XyoModuleQuerySchema } from '@xyo-network/module'
2
+
1
3
  import { XyoBridgeConnectQuery, XyoBridgeConnectQuerySchema } from './Connect'
2
4
  import { XyoBridgeDisconnectQuery, XyoBridgeDisconnectQuerySchema } from './Disconnect'
3
5
 
4
6
  export * from './Connect'
5
7
  export * from './Disconnect'
6
8
 
7
- export type XyoBridgeQuery = XyoBridgeConnectQuery | XyoBridgeDisconnectQuery
9
+ export type XyoBridgeQuery = XyoBridgeConnectQuery | XyoBridgeDisconnectQuery | XyoModuleQuery
8
10
 
9
- export type XyoBridgeQuerySchema = XyoBridgeConnectQuerySchema | XyoBridgeDisconnectQuerySchema
11
+ export type XyoBridgeQuerySchema = XyoBridgeConnectQuerySchema | XyoBridgeDisconnectQuerySchema | XyoModuleQuerySchema
package/src/XyoBridge.ts CHANGED
@@ -11,26 +11,32 @@ export abstract class XyoBridge<TConfig extends XyoBridgeConfig = XyoBridgeConfi
11
11
  extends XyoModule<TConfig, TQuery>
12
12
  implements BridgeModule<TQuery>
13
13
  {
14
- override get queries() {
15
- return [XyoBridgeConnectQuerySchema]
14
+ override queries() {
15
+ return [XyoBridgeConnectQuerySchema, XyoBridgeDisconnectQuerySchema, ...super.queries()]
16
16
  }
17
17
 
18
- abstract connect(uri?: string): Promisable<boolean>
19
- abstract disconnect(uri?: string): Promisable<boolean>
18
+ abstract connect(): Promisable<boolean>
19
+ abstract disconnect(): Promisable<boolean>
20
+
21
+ abstract forward(query: TQuery): Promise<[XyoBoundWitness, (XyoPayload | null)[]]>
20
22
 
21
23
  override async query(query: TQuery): Promise<[XyoBoundWitness, (XyoPayload | null)[]]> {
22
24
  const payloads: (XyoPayload | null)[] = []
23
25
  switch (query.schema) {
24
26
  case XyoBridgeConnectQuerySchema: {
25
- await this.connect(query?.uri)
27
+ await this.connect()
26
28
  break
27
29
  }
28
30
  case XyoBridgeDisconnectQuerySchema: {
29
- await this.disconnect(query?.uri)
31
+ await this.disconnect()
30
32
  break
31
33
  }
32
34
  default:
33
- return super.query(query)
35
+ if (super.queries().find((schema) => schema === query.schema)) {
36
+ return super.query(query)
37
+ } else {
38
+ return this.forward(query)
39
+ }
34
40
  }
35
41
  return [this.bindPayloads(payloads), payloads]
36
42
  }
@@ -0,0 +1,21 @@
1
+ import { XyoArchivistWrapper } from '@xyo-network/archivist'
2
+ import { uuid } from '@xyo-network/core'
3
+ import { XyoPayloadWrapper } from '@xyo-network/payload'
4
+
5
+ import { XyoHttpBridge } from './XyoHttpBridge'
6
+
7
+ test('XyoHttpBridge', async () => {
8
+ const nodeUri = `${process.env.API_DOMAIN}` ?? 'https://beta.api.archivist.xyo.network'
9
+ const targetAddress = 'temp'
10
+ const bridge = new XyoHttpBridge({ nodeUri, targetAddress })
11
+ const wrapper = new XyoArchivistWrapper(bridge)
12
+ const debugPayload = {
13
+ nonce: uuid(),
14
+ schema: 'network.xyo.debug',
15
+ }
16
+ const result = await wrapper.insert([debugPayload])
17
+ console.log(result)
18
+ //expect(result).toBeDefined()
19
+ await wrapper.get([new XyoPayloadWrapper(debugPayload).hash])
20
+ //expect(result2).toBeDefined()
21
+ })
@@ -0,0 +1,90 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { XyoBoundWitness } from '@xyo-network/boundwitness'
3
+ import { XyoModule } from '@xyo-network/module'
4
+ import { XyoPayload, XyoPayloads } from '@xyo-network/payload'
5
+ import { Promisable } from '@xyo-network/promisable'
6
+ import { AxiosError, AxiosRequestHeaders } from 'axios'
7
+
8
+ import { AxiosJson, AxiosJsonRequestConfig } from './AxiosJson'
9
+ import { BridgeModule } from './Bridge'
10
+ import { XyoBridgeConfig } from './Config'
11
+ import { PartialBridgeConfig } from './PartialConfig'
12
+ import { XyoBridgeConnectQuerySchema, XyoBridgeDisconnectQuerySchema, XyoBridgeQuery } from './Queries'
13
+
14
+ export type XyoHttpBridgeConfigSchema = 'network.xyo.bridge.http.config'
15
+ export const XyoHttpBridgeConfigSchema: XyoHttpBridgeConfigSchema = 'network.xyo.bridge.http.config'
16
+
17
+ export type XyoHttpBridgeConfig = XyoBridgeConfig<{
18
+ schema: XyoHttpBridgeConfigSchema
19
+ headers?: AxiosRequestHeaders
20
+ axios?: AxiosJsonRequestConfig
21
+ }>
22
+
23
+ export class XyoHttpBridge<TQuery extends XyoBridgeQuery = XyoBridgeQuery>
24
+ extends XyoModule<XyoHttpBridgeConfig, TQuery>
25
+ implements BridgeModule<TQuery>
26
+ {
27
+ private axios: AxiosJson
28
+
29
+ constructor(config: PartialBridgeConfig<XyoHttpBridgeConfig>) {
30
+ super({ schema: XyoHttpBridgeConfigSchema, ...config })
31
+ this.axios = new AxiosJson(this.config?.axios)
32
+ }
33
+
34
+ public get nodeUri() {
35
+ return assertEx(this.config?.nodeUri, 'Missing nodeUri')
36
+ }
37
+
38
+ public get targetAddress() {
39
+ return this.config?.targetAddress
40
+ }
41
+
42
+ public get targetAddressString() {
43
+ return this.targetAddress ?? ''
44
+ }
45
+
46
+ connect(): Promisable<boolean> {
47
+ return true
48
+ }
49
+
50
+ disconnect(): Promisable<boolean> {
51
+ return true
52
+ }
53
+
54
+ async forward(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]> {
55
+ try {
56
+ const boundQuery = this.bindPayloads([query])
57
+ const result = await this.axios.post<[XyoBoundWitness, XyoPayloads]>(`${this.nodeUri}/${this.address}`, [boundQuery, ...[query]])
58
+ console.log(`Status: ${result.status}`)
59
+ console.log(`Data: ${JSON.stringify(result.data, null, 2)}`)
60
+ return result.data
61
+ } catch (ex) {
62
+ const error = ex as AxiosError
63
+ console.log(`Error Status: ${error.status}`)
64
+ console.log(`Error Cause: ${JSON.stringify(error.cause, null, 2)}`)
65
+ throw error
66
+ }
67
+ }
68
+
69
+ override async query(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]> {
70
+ console.log(`Query: ${query.schema}`)
71
+ const payloads: (XyoPayload | null)[] = []
72
+ switch (query.schema) {
73
+ case XyoBridgeConnectQuerySchema: {
74
+ await this.connect()
75
+ break
76
+ }
77
+ case XyoBridgeDisconnectQuerySchema: {
78
+ await this.disconnect()
79
+ break
80
+ }
81
+ default:
82
+ if (super.queries().find((schema) => schema === query.schema)) {
83
+ return super.query(query)
84
+ } else {
85
+ return this.forward(query)
86
+ }
87
+ }
88
+ return [this.bindPayloads(payloads), payloads]
89
+ }
90
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './Config'
2
+ export * from './PartialConfig'
2
3
  export * from './Queries'
3
4
  export * from './XyoBridge'
4
5
  export * from './XyoBridgeWrapper'
6
+ export * from './XyoHttpBridge'