@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.
- package/dist/cjs/AxiosJson.d.ts +10 -0
- package/dist/cjs/AxiosJson.d.ts.map +1 -0
- package/dist/cjs/AxiosJson.js +36 -0
- package/dist/cjs/AxiosJson.js.map +1 -0
- package/dist/cjs/Bridge.d.ts +2 -2
- package/dist/cjs/Bridge.d.ts.map +1 -1
- package/dist/cjs/Config.d.ts +4 -1
- package/dist/cjs/Config.d.ts.map +1 -1
- package/dist/cjs/PartialConfig.d.ts +4 -0
- package/dist/cjs/PartialConfig.d.ts.map +1 -0
- package/dist/cjs/PartialConfig.js +3 -0
- package/dist/cjs/PartialConfig.js.map +1 -0
- package/dist/cjs/Queries/index.d.ts +3 -2
- package/dist/cjs/Queries/index.d.ts.map +1 -1
- package/dist/cjs/Queries/index.js.map +1 -1
- package/dist/cjs/XyoBridge.d.ts +4 -3
- package/dist/cjs/XyoBridge.d.ts.map +1 -1
- package/dist/cjs/XyoBridge.js +11 -5
- package/dist/cjs/XyoBridge.js.map +1 -1
- package/dist/cjs/XyoHttpBridge.d.ts +29 -0
- package/dist/cjs/XyoHttpBridge.d.ts.map +1 -0
- package/dist/cjs/XyoHttpBridge.js +81 -0
- package/dist/cjs/XyoHttpBridge.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +3059 -968
- package/dist/esm/AxiosJson.d.ts +10 -0
- package/dist/esm/AxiosJson.d.ts.map +1 -0
- package/dist/esm/AxiosJson.js +39 -0
- package/dist/esm/AxiosJson.js.map +1 -0
- package/dist/esm/Bridge.d.ts +2 -2
- package/dist/esm/Bridge.d.ts.map +1 -1
- package/dist/esm/Config.d.ts +4 -1
- package/dist/esm/Config.d.ts.map +1 -1
- package/dist/esm/PartialConfig.d.ts +4 -0
- package/dist/esm/PartialConfig.d.ts.map +1 -0
- package/dist/esm/PartialConfig.js +2 -0
- package/dist/esm/PartialConfig.js.map +1 -0
- package/dist/esm/Queries/index.d.ts +3 -2
- package/dist/esm/Queries/index.d.ts.map +1 -1
- package/dist/esm/Queries/index.js.map +1 -1
- package/dist/esm/XyoBridge.d.ts +4 -3
- package/dist/esm/XyoBridge.d.ts.map +1 -1
- package/dist/esm/XyoBridge.js +10 -5
- package/dist/esm/XyoBridge.js.map +1 -1
- package/dist/esm/XyoHttpBridge.d.ts +29 -0
- package/dist/esm/XyoHttpBridge.d.ts.map +1 -0
- package/dist/esm/XyoHttpBridge.js +65 -0
- package/dist/esm/XyoHttpBridge.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +10 -6
- package/src/AxiosJson.ts +43 -0
- package/src/Bridge.ts +2 -2
- package/src/Config.ts +6 -1
- package/src/PartialConfig.ts +5 -0
- package/src/Queries/index.ts +4 -2
- package/src/XyoBridge.ts +13 -7
- package/src/XyoHttpBridge.spec.ts +21 -0
- package/src/XyoHttpBridge.ts +90 -0
- 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"}
|
package/dist/esm/Bridge.d.ts
CHANGED
|
@@ -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: (
|
|
6
|
-
disconnect: (
|
|
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
|
}
|
package/dist/esm/Bridge.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/esm/Config.d.ts
CHANGED
|
@@ -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<
|
|
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
|
package/dist/esm/Config.d.ts.map
CHANGED
|
@@ -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,
|
|
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 @@
|
|
|
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 @@
|
|
|
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;
|
|
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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAKA,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
|
package/dist/esm/XyoBridge.d.ts
CHANGED
|
@@ -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
|
-
|
|
10
|
-
abstract connect(
|
|
11
|
-
abstract disconnect(
|
|
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;
|
|
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"}
|
package/dist/esm/XyoBridge.js
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
11
|
+
await this.connect();
|
|
12
12
|
break;
|
|
13
13
|
}
|
|
14
14
|
case XyoBridgeDisconnectQuerySchema: {
|
|
15
|
-
await this.disconnect(
|
|
15
|
+
await this.disconnect();
|
|
16
16
|
break;
|
|
17
17
|
}
|
|
18
18
|
default:
|
|
19
|
-
|
|
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;
|
|
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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"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -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
package/dist/esm/index.js.map
CHANGED
|
@@ -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
|
-
"@
|
|
14
|
-
"@xyo-network/
|
|
15
|
-
"@xyo-network/
|
|
16
|
-
"@xyo-network/
|
|
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
|
|
53
|
-
"stableVersion": "2.31.5"
|
|
57
|
+
"version": "2.32.0"
|
|
54
58
|
}
|
package/src/AxiosJson.ts
ADDED
|
@@ -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: (
|
|
8
|
-
disconnect: (
|
|
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<
|
|
7
|
+
export type XyoBridgeConfig<TConfig extends XyoPayload = XyoPayload> = XyoModuleConfig<
|
|
8
|
+
{
|
|
9
|
+
nodeUri: string
|
|
10
|
+
targetAddress?: string
|
|
11
|
+
} & TConfig
|
|
12
|
+
>
|
package/src/Queries/index.ts
CHANGED
|
@@ -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
|
|
15
|
-
return [XyoBridgeConnectQuerySchema]
|
|
14
|
+
override queries() {
|
|
15
|
+
return [XyoBridgeConnectQuerySchema, XyoBridgeDisconnectQuerySchema, ...super.queries()]
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
abstract connect(
|
|
19
|
-
abstract disconnect(
|
|
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(
|
|
27
|
+
await this.connect()
|
|
26
28
|
break
|
|
27
29
|
}
|
|
28
30
|
case XyoBridgeDisconnectQuerySchema: {
|
|
29
|
-
await this.disconnect(
|
|
31
|
+
await this.disconnect()
|
|
30
32
|
break
|
|
31
33
|
}
|
|
32
34
|
default:
|
|
33
|
-
|
|
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
|
+
}
|