@xyo-network/bridge 2.32.0-rc.2 → 2.32.0-rc.3
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/Bridge.d.ts +2 -2
- package/dist/cjs/Bridge.d.ts.map +1 -1
- package/dist/cjs/Config.d.ts +3 -1
- package/dist/cjs/Config.d.ts.map +1 -1
- package/dist/cjs/PartialBridgeConfig.d.ts +5 -0
- package/dist/cjs/PartialBridgeConfig.d.ts.map +1 -0
- package/dist/cjs/PartialBridgeConfig.js +3 -0
- package/dist/cjs/PartialBridgeConfig.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 +28 -0
- package/dist/cjs/XyoHttpBridge.d.ts.map +1 -0
- package/dist/cjs/XyoHttpBridge.js +100 -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 +3775 -1633
- package/dist/esm/Bridge.d.ts +2 -2
- package/dist/esm/Bridge.d.ts.map +1 -1
- package/dist/esm/Config.d.ts +3 -1
- package/dist/esm/Config.d.ts.map +1 -1
- package/dist/esm/PartialBridgeConfig.d.ts +5 -0
- package/dist/esm/PartialBridgeConfig.d.ts.map +1 -0
- package/dist/esm/PartialBridgeConfig.js +2 -0
- package/dist/esm/PartialBridgeConfig.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 +28 -0
- package/dist/esm/XyoHttpBridge.d.ts.map +1 -0
- package/dist/esm/XyoHttpBridge.js +89 -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 +9 -5
- package/src/Bridge.ts +2 -2
- package/src/Config.ts +5 -1
- package/src/PartialBridgeConfig.ts +5 -0
- package/src/Queries/index.ts +4 -2
- package/src/XyoBridge.ts +13 -7
- package/src/XyoHttpBridge.spec.ts +20 -0
- package/src/XyoHttpBridge.ts +112 -0
- package/src/index.ts +2 -0
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,7 @@ 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
|
+
uri: string;
|
|
7
|
+
} & TConfig>;
|
|
6
8
|
//# 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,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CACZ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartialBridgeConfig.d.ts","sourceRoot":"","sources":["../../src/PartialBridgeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,oBAAY,mBAAmB,CAAC,CAAC,SAAS,eAAe,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG;IAC/E,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;CACrB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartialBridgeConfig.js","sourceRoot":"","sources":["../../src/PartialBridgeConfig.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 super.query(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,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;iBAC1B;SACJ;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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 { AxiosRequestConfig, AxiosRequestHeaders } from 'axios';
|
|
6
|
+
import { BridgeModule } from './Bridge';
|
|
7
|
+
import { XyoBridgeConfig } from './Config';
|
|
8
|
+
import { PartialBridgeConfig } from './PartialBridgeConfig';
|
|
9
|
+
import { XyoBridgeQuery } from './Queries';
|
|
10
|
+
export declare type XyoHttpBridgeConfigSchema = 'network.xyo.bridge.http.config';
|
|
11
|
+
export declare const XyoHttpBridgeConfigSchema: XyoHttpBridgeConfigSchema;
|
|
12
|
+
export declare type XyoHttpBridgeConfig = XyoBridgeConfig<{
|
|
13
|
+
schema: XyoHttpBridgeConfigSchema;
|
|
14
|
+
headers?: AxiosRequestHeaders;
|
|
15
|
+
axios?: AxiosRequestConfig;
|
|
16
|
+
}>;
|
|
17
|
+
export declare class XyoHttpBridge<TQuery extends XyoBridgeQuery = XyoBridgeQuery> extends XyoModule<XyoHttpBridgeConfig, TQuery> implements BridgeModule<TQuery> {
|
|
18
|
+
private axios;
|
|
19
|
+
constructor(config: PartialBridgeConfig<XyoHttpBridgeConfig>);
|
|
20
|
+
get uri(): string;
|
|
21
|
+
private get axiosHeaders();
|
|
22
|
+
private get axiosConfig();
|
|
23
|
+
connect(): Promisable<boolean>;
|
|
24
|
+
disconnect(): Promisable<boolean>;
|
|
25
|
+
forward(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]>;
|
|
26
|
+
query(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]>;
|
|
27
|
+
}
|
|
28
|
+
//# 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,EAAqB,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAGlF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,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,kBAAkB,CAAA;CAC3B,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,CAAA;gBAED,MAAM,EAAE,mBAAmB,CAAC,mBAAmB,CAAC;IAK5D,IAAW,GAAG,WAEb;IAED,OAAO,KAAK,YAAY,GAMvB;IAED,OAAO,KAAK,WAAW,GAqBtB;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;IActD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;CAqB7E"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { XyoModule } from '@xyo-network/module';
|
|
3
|
+
import { Axios } from 'axios';
|
|
4
|
+
import { gzip } from 'pako';
|
|
5
|
+
import { XyoBridgeConnectQuerySchema, XyoBridgeDisconnectQuerySchema } from './Queries';
|
|
6
|
+
export const XyoHttpBridgeConfigSchema = 'network.xyo.bridge.http.config';
|
|
7
|
+
export class XyoHttpBridge extends XyoModule {
|
|
8
|
+
axios;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
super({ schema: XyoHttpBridgeConfigSchema, ...config });
|
|
11
|
+
this.axios = new Axios(this.axiosConfig);
|
|
12
|
+
}
|
|
13
|
+
get uri() {
|
|
14
|
+
return assertEx(this.config?.uri, 'Missing URI');
|
|
15
|
+
}
|
|
16
|
+
get axiosHeaders() {
|
|
17
|
+
return {
|
|
18
|
+
...this.config?.headers,
|
|
19
|
+
Accept: 'application/json, text/plain, *.*',
|
|
20
|
+
'Content-Type': 'application/json',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
get axiosConfig() {
|
|
24
|
+
return {
|
|
25
|
+
headers: this.axiosHeaders,
|
|
26
|
+
transformRequest: (data, headers) => {
|
|
27
|
+
const json = JSON.stringify(data);
|
|
28
|
+
if (headers && data) {
|
|
29
|
+
if (json.length > (this.config?.axios ?? 1024)) {
|
|
30
|
+
headers['Content-Encoding'] = 'gzip';
|
|
31
|
+
return gzip(JSON.stringify(data)).buffer;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return JSON.stringify(data);
|
|
35
|
+
},
|
|
36
|
+
transformResponse: (data) => {
|
|
37
|
+
try {
|
|
38
|
+
return JSON.parse(data);
|
|
39
|
+
}
|
|
40
|
+
catch (ex) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
connect() {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
disconnect() {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
async forward(query) {
|
|
53
|
+
try {
|
|
54
|
+
const result = await this.axios.post(this.uri, query);
|
|
55
|
+
console.log(`Status: ${result.status}`);
|
|
56
|
+
console.log(`Data: ${JSON.stringify(result.data, null, 2)}`);
|
|
57
|
+
return result.data;
|
|
58
|
+
}
|
|
59
|
+
catch (ex) {
|
|
60
|
+
const error = ex;
|
|
61
|
+
console.log(`Error Status: ${error.status}`);
|
|
62
|
+
console.log(`Error Cause: ${JSON.stringify(error.cause, null, 2)}`);
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async query(query) {
|
|
67
|
+
console.log(`Query: ${query.schema}`);
|
|
68
|
+
const payloads = [];
|
|
69
|
+
switch (query.schema) {
|
|
70
|
+
case XyoBridgeConnectQuerySchema: {
|
|
71
|
+
await this.connect();
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case XyoBridgeDisconnectQuerySchema: {
|
|
75
|
+
await this.disconnect();
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
default:
|
|
79
|
+
if (super.queries().find((schema) => schema === query.schema)) {
|
|
80
|
+
return super.query(query);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
return this.forward(query);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return [this.bindPayloads(payloads), payloads];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# 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,uBAAuB,CAAA;AACrC,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,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,12 +10,16 @@
|
|
|
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.
|
|
14
|
-
"@xyo-network/module": "^2.32.0-rc.
|
|
15
|
-
"@xyo-network/payload": "^2.32.0-rc.
|
|
16
|
-
"@xyo-network/promisable": "^2.32.0-rc.
|
|
13
|
+
"@xyo-network/boundwitness": "^2.32.0-rc.3",
|
|
14
|
+
"@xyo-network/module": "^2.32.0-rc.3",
|
|
15
|
+
"@xyo-network/payload": "^2.32.0-rc.3",
|
|
16
|
+
"@xyo-network/promisable": "^2.32.0-rc.3",
|
|
17
|
+
"pako": "^2.0.4",
|
|
17
18
|
"tslib": "^2.4.0"
|
|
18
19
|
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"axios": "^0.27.2"
|
|
22
|
+
},
|
|
19
23
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
20
24
|
"browser": "dist/esm/index.js",
|
|
21
25
|
"docs": "dist/docs.json",
|
|
@@ -49,6 +53,6 @@
|
|
|
49
53
|
},
|
|
50
54
|
"sideEffects": false,
|
|
51
55
|
"types": "dist/esm/index.d.ts",
|
|
52
|
-
"version": "2.32.0-rc.
|
|
56
|
+
"version": "2.32.0-rc.3",
|
|
53
57
|
"stableVersion": "2.31.5"
|
|
54
58
|
}
|
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,8 @@ 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
|
+
uri: string
|
|
10
|
+
} & TConfig
|
|
11
|
+
>
|
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 super.query(query)
|
|
39
|
+
}
|
|
34
40
|
}
|
|
35
41
|
return [this.bindPayloads(payloads), payloads]
|
|
36
42
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { XyoArchivistWrapper } from '@xyo-network/archivist'
|
|
2
|
+
import { XyoPayloadWrapper } from '@xyo-network/payload'
|
|
3
|
+
import { XyoIdPayload, XyoIdSchema } from '@xyo-network/payload-plugins'
|
|
4
|
+
|
|
5
|
+
import { XyoHttpBridge } from './XyoHttpBridge'
|
|
6
|
+
|
|
7
|
+
test('XyoHttpBridge', async () => {
|
|
8
|
+
const bridge = new XyoHttpBridge({ uri: `${process.env.API_DOMAIN}` ?? 'https://beta.api.archivist.xyo.network' })
|
|
9
|
+
const wrapper = new XyoArchivistWrapper(bridge)
|
|
10
|
+
const idPayload: XyoIdPayload = {
|
|
11
|
+
salt: 'test',
|
|
12
|
+
schema: XyoIdSchema,
|
|
13
|
+
}
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
15
|
+
const result = await wrapper.insert([idPayload])
|
|
16
|
+
//expect(result).toBeDefined()
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
18
|
+
const result2 = await wrapper.get([new XyoPayloadWrapper(idPayload).hash])
|
|
19
|
+
//expect(result2).toBeDefined()
|
|
20
|
+
})
|
|
@@ -0,0 +1,112 @@
|
|
|
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 { Axios, AxiosError, AxiosRequestConfig, AxiosRequestHeaders } from 'axios'
|
|
7
|
+
import { gzip } from 'pako'
|
|
8
|
+
|
|
9
|
+
import { BridgeModule } from './Bridge'
|
|
10
|
+
import { XyoBridgeConfig } from './Config'
|
|
11
|
+
import { PartialBridgeConfig } from './PartialBridgeConfig'
|
|
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?: AxiosRequestConfig
|
|
21
|
+
}>
|
|
22
|
+
|
|
23
|
+
export class XyoHttpBridge<TQuery extends XyoBridgeQuery = XyoBridgeQuery>
|
|
24
|
+
extends XyoModule<XyoHttpBridgeConfig, TQuery>
|
|
25
|
+
implements BridgeModule<TQuery>
|
|
26
|
+
{
|
|
27
|
+
private axios
|
|
28
|
+
|
|
29
|
+
constructor(config: PartialBridgeConfig<XyoHttpBridgeConfig>) {
|
|
30
|
+
super({ schema: XyoHttpBridgeConfigSchema, ...config })
|
|
31
|
+
this.axios = new Axios(this.axiosConfig)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public get uri() {
|
|
35
|
+
return assertEx(this.config?.uri, 'Missing URI')
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private get axiosHeaders(): AxiosRequestHeaders {
|
|
39
|
+
return {
|
|
40
|
+
...this.config?.headers,
|
|
41
|
+
Accept: 'application/json, text/plain, *.*',
|
|
42
|
+
'Content-Type': 'application/json',
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private get axiosConfig(): AxiosRequestConfig {
|
|
47
|
+
return {
|
|
48
|
+
headers: this.axiosHeaders,
|
|
49
|
+
transformRequest: (data, headers) => {
|
|
50
|
+
const json = JSON.stringify(data)
|
|
51
|
+
if (headers && data) {
|
|
52
|
+
if (json.length > (this.config?.axios ?? 1024)) {
|
|
53
|
+
headers['Content-Encoding'] = 'gzip'
|
|
54
|
+
return gzip(JSON.stringify(data)).buffer
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return JSON.stringify(data)
|
|
58
|
+
},
|
|
59
|
+
transformResponse: (data) => {
|
|
60
|
+
try {
|
|
61
|
+
return JSON.parse(data)
|
|
62
|
+
} catch (ex) {
|
|
63
|
+
return null
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
connect(): Promisable<boolean> {
|
|
70
|
+
return true
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
disconnect(): Promisable<boolean> {
|
|
74
|
+
return true
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async forward(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]> {
|
|
78
|
+
try {
|
|
79
|
+
const result = await this.axios.post<[XyoBoundWitness, XyoPayloads]>(this.uri, query)
|
|
80
|
+
console.log(`Status: ${result.status}`)
|
|
81
|
+
console.log(`Data: ${JSON.stringify(result.data, null, 2)}`)
|
|
82
|
+
return result.data
|
|
83
|
+
} catch (ex) {
|
|
84
|
+
const error = ex as AxiosError
|
|
85
|
+
console.log(`Error Status: ${error.status}`)
|
|
86
|
+
console.log(`Error Cause: ${JSON.stringify(error.cause, null, 2)}`)
|
|
87
|
+
throw error
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
override async query(query: TQuery): Promise<[XyoBoundWitness, XyoPayloads]> {
|
|
92
|
+
console.log(`Query: ${query.schema}`)
|
|
93
|
+
const payloads: (XyoPayload | null)[] = []
|
|
94
|
+
switch (query.schema) {
|
|
95
|
+
case XyoBridgeConnectQuerySchema: {
|
|
96
|
+
await this.connect()
|
|
97
|
+
break
|
|
98
|
+
}
|
|
99
|
+
case XyoBridgeDisconnectQuerySchema: {
|
|
100
|
+
await this.disconnect()
|
|
101
|
+
break
|
|
102
|
+
}
|
|
103
|
+
default:
|
|
104
|
+
if (super.queries().find((schema) => schema === query.schema)) {
|
|
105
|
+
return super.query(query)
|
|
106
|
+
} else {
|
|
107
|
+
return this.forward(query)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return [this.bindPayloads(payloads), payloads]
|
|
111
|
+
}
|
|
112
|
+
}
|