@xyo-network/node 2.31.3 → 2.32.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/MemoryNode.d.ts +16 -0
- package/dist/cjs/MemoryNode.d.ts.map +1 -0
- package/dist/cjs/MemoryNode.js +41 -0
- package/dist/cjs/MemoryNode.js.map +1 -0
- package/dist/cjs/Node.d.ts +9 -7
- package/dist/cjs/Node.d.ts.map +1 -1
- package/dist/cjs/Queries/Attach.d.ts +8 -0
- package/dist/cjs/Queries/Attach.d.ts.map +1 -0
- package/dist/cjs/Queries/Attach.js +5 -0
- package/dist/cjs/Queries/Attach.js.map +1 -0
- package/dist/cjs/Queries/Attached.d.ts +7 -0
- package/dist/cjs/Queries/Attached.d.ts.map +1 -0
- package/dist/cjs/Queries/Attached.js +5 -0
- package/dist/cjs/Queries/Attached.js.map +1 -0
- package/dist/cjs/Queries/Available.d.ts +7 -0
- package/dist/cjs/Queries/Available.d.ts.map +1 -0
- package/dist/cjs/Queries/Available.js +5 -0
- package/dist/cjs/Queries/Available.js.map +1 -0
- package/dist/cjs/Queries/Detatch.d.ts +8 -0
- package/dist/cjs/Queries/Detatch.d.ts.map +1 -0
- package/dist/cjs/Queries/Detatch.js +5 -0
- package/dist/cjs/Queries/Detatch.js.map +1 -0
- package/dist/cjs/Queries/index.d.ts +11 -0
- package/dist/cjs/Queries/index.d.ts.map +1 -0
- package/dist/cjs/Queries/index.js +8 -0
- package/dist/cjs/Queries/index.js.map +1 -0
- package/dist/cjs/XyoNode.d.ts +13 -8
- package/dist/cjs/XyoNode.d.ts.map +1 -1
- package/dist/cjs/XyoNode.js +28 -10
- package/dist/cjs/XyoNode.js.map +1 -1
- package/dist/cjs/XyoNodeWrapper.d.ts +9 -0
- package/dist/cjs/XyoNodeWrapper.d.ts.map +1 -0
- package/dist/cjs/XyoNodeWrapper.js +37 -0
- package/dist/cjs/XyoNodeWrapper.js.map +1 -0
- package/dist/docs.json +3055 -727
- package/dist/esm/MemoryNode.d.ts +16 -0
- package/dist/esm/MemoryNode.d.ts.map +1 -0
- package/dist/esm/MemoryNode.js +34 -0
- package/dist/esm/MemoryNode.js.map +1 -0
- package/dist/esm/Node.d.ts +9 -7
- package/dist/esm/Node.d.ts.map +1 -1
- package/dist/esm/Queries/Attach.d.ts +8 -0
- package/dist/esm/Queries/Attach.d.ts.map +1 -0
- package/dist/esm/Queries/Attach.js +2 -0
- package/dist/esm/Queries/Attach.js.map +1 -0
- package/dist/esm/Queries/Attached.d.ts +7 -0
- package/dist/esm/Queries/Attached.d.ts.map +1 -0
- package/dist/esm/Queries/Attached.js +2 -0
- package/dist/esm/Queries/Attached.js.map +1 -0
- package/dist/esm/Queries/Available.d.ts +7 -0
- package/dist/esm/Queries/Available.d.ts.map +1 -0
- package/dist/esm/Queries/Available.js +2 -0
- package/dist/esm/Queries/Available.js.map +1 -0
- package/dist/esm/Queries/Detatch.d.ts +8 -0
- package/dist/esm/Queries/Detatch.d.ts.map +1 -0
- package/dist/esm/Queries/Detatch.js +2 -0
- package/dist/esm/Queries/Detatch.js.map +1 -0
- package/dist/esm/Queries/index.d.ts +11 -0
- package/dist/esm/Queries/index.d.ts.map +1 -0
- package/dist/esm/Queries/index.js +5 -0
- package/dist/esm/Queries/index.js.map +1 -0
- package/dist/esm/XyoNode.d.ts +13 -8
- package/dist/esm/XyoNode.d.ts.map +1 -1
- package/dist/esm/XyoNode.js +28 -10
- package/dist/esm/XyoNode.js.map +1 -1
- package/dist/esm/XyoNodeWrapper.d.ts +9 -0
- package/dist/esm/XyoNodeWrapper.d.ts.map +1 -0
- package/dist/esm/XyoNodeWrapper.js +24 -0
- package/dist/esm/XyoNodeWrapper.js.map +1 -0
- package/package.json +7 -4
- package/src/MemoryNode.spec.ts +54 -0
- package/src/MemoryNode.ts +49 -0
- package/src/Node.ts +11 -7
- package/src/Queries/Attach.ts +9 -0
- package/src/Queries/Attached.ts +8 -0
- package/src/Queries/Available.ts +8 -0
- package/src/Queries/Detatch.ts +9 -0
- package/src/Queries/index.ts +13 -0
- package/src/XyoNode.ts +45 -13
- package/src/XyoNodeWrapper.ts +35 -0
- package/dist/cjs/Simple.d.ts +0 -16
- package/dist/cjs/Simple.d.ts.map +0 -1
- package/dist/cjs/Simple.js +0 -33
- package/dist/cjs/Simple.js.map +0 -1
- package/dist/esm/Simple.d.ts +0 -16
- package/dist/esm/Simple.d.ts.map +0 -1
- package/dist/esm/Simple.js +0 -22
- package/dist/esm/Simple.js.map +0 -1
- package/src/Simple.spec.ts +0 -59
- package/src/Simple.ts +0 -29
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { XyoModule, XyoModuleConfig } from '@xyo-network/module';
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload';
|
|
3
|
+
import { XyoNodeQuery } from './Queries';
|
|
4
|
+
import { XyoNode } from './XyoNode';
|
|
5
|
+
export declare class XyoMemoryNode<TConfig extends XyoModuleConfig = XyoModuleConfig, TQuery extends XyoNodeQuery = XyoNodeQuery, TQueryResult extends XyoPayload = XyoPayload, TModule extends XyoModule = XyoModule> extends XyoNode<TConfig, TQuery, TQueryResult, TModule> {
|
|
6
|
+
private registeredModules;
|
|
7
|
+
private attachedModules;
|
|
8
|
+
get queries(): TQuery['schema'][];
|
|
9
|
+
attached(): string[];
|
|
10
|
+
available(): string[];
|
|
11
|
+
register(module: TModule): void;
|
|
12
|
+
attach(address: string): void;
|
|
13
|
+
detatch(address: string): void;
|
|
14
|
+
get(address: string): TModule | undefined;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=MemoryNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAA4B,YAAY,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,qBAAa,aAAa,CACxB,OAAO,SAAS,eAAe,GAAG,eAAe,EACjD,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,OAAO,SAAS,SAAS,GAAG,SAAS,CACrC,SAAQ,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC;IACvD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,eAAe,CAA6B;IAEpD,IAAW,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAEvC;IAEQ,QAAQ;IAMR,SAAS;IAMT,QAAQ,CAAC,MAAM,EAAE,OAAO;IAIxB,MAAM,CAAC,OAAO,EAAE,MAAM;IAKtB,OAAO,CAAC,OAAO,EAAE,MAAM;IAIvB,GAAG,CAAC,OAAO,EAAE,MAAM;CAG7B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { XyoNodeAttachQuerySchema } from './Queries';
|
|
3
|
+
import { XyoNode } from './XyoNode';
|
|
4
|
+
export class XyoMemoryNode extends XyoNode {
|
|
5
|
+
registeredModules = new Map();
|
|
6
|
+
attachedModules = new Map();
|
|
7
|
+
get queries() {
|
|
8
|
+
return [XyoNodeAttachQuerySchema];
|
|
9
|
+
}
|
|
10
|
+
attached() {
|
|
11
|
+
return Array.from(this.attachedModules.keys()).map(([key]) => {
|
|
12
|
+
return key;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
available() {
|
|
16
|
+
return Array.from(this.registeredModules.keys()).map(([key]) => {
|
|
17
|
+
return key;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
register(module) {
|
|
21
|
+
this.registeredModules.set(module.address, module);
|
|
22
|
+
}
|
|
23
|
+
attach(address) {
|
|
24
|
+
const module = assertEx(this.registeredModules.get(address), 'No module found at that address');
|
|
25
|
+
this.attachedModules.set(address, module);
|
|
26
|
+
}
|
|
27
|
+
detatch(address) {
|
|
28
|
+
this.attachedModules.delete(address);
|
|
29
|
+
}
|
|
30
|
+
get(address) {
|
|
31
|
+
return this.attachedModules.get(address);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=MemoryNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAIzC,OAAO,EAAE,wBAAwB,EAAgB,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,OAAO,aAKX,SAAQ,OAA+C;IAC/C,iBAAiB,GAAG,IAAI,GAAG,EAAmB,CAAA;IAC9C,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAA;IAEpD,IAAW,OAAO;QAChB,OAAO,CAAC,wBAAwB,CAAC,CAAA;IACnC,CAAC;IAEQ,QAAQ;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAC3D,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEQ,SAAS;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAC7D,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEQ,QAAQ,CAAC,MAAe;QAC/B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IAEQ,MAAM,CAAC,OAAe;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,iCAAiC,CAAC,CAAA;QAC/F,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAEQ,OAAO,CAAC,OAAe;QAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAEQ,GAAG,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;CACF"}
|
package/dist/esm/Node.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Module, XyoQuery } from '@xyo-network/module';
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload';
|
|
2
3
|
import { Promisable } from '@xyo-network/promisable';
|
|
3
|
-
export interface Node
|
|
4
|
-
attach(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export interface Node {
|
|
5
|
+
attach(address: string): void;
|
|
6
|
+
detatch(address: string): void;
|
|
7
|
+
available(): Promisable<string[]>;
|
|
8
|
+
attached(): Promisable<string[]>;
|
|
9
|
+
}
|
|
10
|
+
export interface NodeModule<TQuery extends XyoQuery = XyoQuery, TQueryResult extends XyoPayload = XyoPayload> extends Node, Module<TQuery, TQueryResult> {
|
|
9
11
|
}
|
|
10
12
|
//# sourceMappingURL=Node.d.ts.map
|
package/dist/esm/Node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/Node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/Node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,MAAM,WAAW,IAAI;IACnB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IACjC,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ,EAAE,YAAY,SAAS,UAAU,GAAG,UAAU,CAC1G,SAAQ,IAAI,EACV,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module';
|
|
2
|
+
export declare type XyoNodeAttachQuerySchema = 'network.xyo.query.node.attach';
|
|
3
|
+
export declare const XyoNodeAttachQuerySchema: XyoNodeAttachQuerySchema;
|
|
4
|
+
export declare type XyoNodeAttachQuery = XyoQuery<{
|
|
5
|
+
schema: XyoNodeAttachQuerySchema;
|
|
6
|
+
address: string;
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=Attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Attach.d.ts","sourceRoot":"","sources":["../../../src/Queries/Attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,oBAAY,wBAAwB,GAAG,+BAA+B,CAAA;AACtE,eAAO,MAAM,wBAAwB,EAAE,wBAA0D,CAAA;AAEjG,oBAAY,kBAAkB,GAAG,QAAQ,CAAC;IACxC,MAAM,EAAE,wBAAwB,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Attach.js","sourceRoot":"","sources":["../../../src/Queries/Attach.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,wBAAwB,GAA6B,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module';
|
|
2
|
+
export declare type XyoNodeAttachedQuerySchema = 'network.xyo.query.node.attached';
|
|
3
|
+
export declare const XyoNodeAttachedQuerySchema: XyoNodeAttachedQuerySchema;
|
|
4
|
+
export declare type XyoNodeAttachedQuery = XyoQuery<{
|
|
5
|
+
schema: XyoNodeAttachedQuerySchema;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=Attached.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Attached.d.ts","sourceRoot":"","sources":["../../../src/Queries/Attached.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,oBAAY,0BAA0B,GAAG,iCAAiC,CAAA;AAC1E,eAAO,MAAM,0BAA0B,EAAE,0BAA8D,CAAA;AAEvG,oBAAY,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,MAAM,EAAE,0BAA0B,CAAA;CACnC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Attached.js","sourceRoot":"","sources":["../../../src/Queries/Attached.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,0BAA0B,GAA+B,iCAAiC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module';
|
|
2
|
+
export declare type XyoNodeAvailableQuerySchema = 'network.xyo.query.node.available';
|
|
3
|
+
export declare const XyoNodeAvailableQuerySchema: XyoNodeAvailableQuerySchema;
|
|
4
|
+
export declare type XyoNodeAvailableQuery = XyoQuery<{
|
|
5
|
+
schema: XyoNodeAvailableQuerySchema;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=Available.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Available.d.ts","sourceRoot":"","sources":["../../../src/Queries/Available.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,oBAAY,2BAA2B,GAAG,kCAAkC,CAAA;AAC5E,eAAO,MAAM,2BAA2B,EAAE,2BAAgE,CAAA;AAE1G,oBAAY,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,MAAM,EAAE,2BAA2B,CAAA;CACpC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Available.js","sourceRoot":"","sources":["../../../src/Queries/Available.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,2BAA2B,GAAgC,kCAAkC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module';
|
|
2
|
+
export declare type XyoNodeDetatchQuerySchema = 'network.xyo.query.node.detatch';
|
|
3
|
+
export declare const XyoNodeDetatchQuerySchema: XyoNodeDetatchQuerySchema;
|
|
4
|
+
export declare type XyoNodeDetatchQuery = XyoQuery<{
|
|
5
|
+
schema: XyoNodeDetatchQuerySchema;
|
|
6
|
+
address: string;
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=Detatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Detatch.d.ts","sourceRoot":"","sources":["../../../src/Queries/Detatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,oBAAY,yBAAyB,GAAG,gCAAgC,CAAA;AACxE,eAAO,MAAM,yBAAyB,EAAE,yBAA4D,CAAA;AAEpG,oBAAY,mBAAmB,GAAG,QAAQ,CAAC;IACzC,MAAM,EAAE,yBAAyB,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Detatch.js","sourceRoot":"","sources":["../../../src/Queries/Detatch.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,yBAAyB,GAA8B,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { XyoNodeAttachQuery, XyoNodeAttachQuerySchema } from './Attach';
|
|
2
|
+
import { XyoNodeAttachedQuery, XyoNodeAttachedQuerySchema } from './Attached';
|
|
3
|
+
import { XyoNodeAvailableQuery, XyoNodeAvailableQuerySchema } from './Available';
|
|
4
|
+
import { XyoNodeDetatchQuery, XyoNodeDetatchQuerySchema } from './Detatch';
|
|
5
|
+
export * from './Attach';
|
|
6
|
+
export * from './Attached';
|
|
7
|
+
export * from './Available';
|
|
8
|
+
export * from './Detatch';
|
|
9
|
+
export declare type XyoNodeQuerySchema = XyoNodeAttachQuerySchema | XyoNodeDetatchQuerySchema | XyoNodeAttachedQuerySchema | XyoNodeAvailableQuerySchema;
|
|
10
|
+
export declare type XyoNodeQuery = XyoNodeAttachQuery | XyoNodeDetatchQuery | XyoNodeAttachedQuery | XyoNodeAvailableQuery;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACvE,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAE1E,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AAEzB,oBAAY,kBAAkB,GAAG,wBAAwB,GAAG,yBAAyB,GAAG,0BAA0B,GAAG,2BAA2B,CAAA;AAEhJ,oBAAY,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAKA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
|
package/dist/esm/XyoNode.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { XyoModule,
|
|
1
|
+
import { XyoModule, XyoModuleConfig, XyoModuleQueryResult } from '@xyo-network/module';
|
|
2
2
|
import { XyoPayload } from '@xyo-network/payload';
|
|
3
3
|
import { Promisable } from '@xyo-network/promisable';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
import { NodeModule } from './Node';
|
|
5
|
+
import { XyoNodeQuery } from './Queries';
|
|
6
|
+
export declare abstract class XyoNode<TConfig extends XyoModuleConfig = XyoModuleConfig, TQuery extends XyoNodeQuery = XyoNodeQuery, TQueryResult extends XyoPayload = XyoPayload, TModule extends XyoModule = XyoModule> extends XyoModule<TConfig, TQuery, TQueryResult> implements NodeModule<TQuery, TQueryResult> {
|
|
7
|
+
/** Query Functions - Start */
|
|
8
|
+
abstract attach(_address: string): void;
|
|
9
|
+
abstract detatch(_address: string): void;
|
|
10
|
+
available(): string[];
|
|
11
|
+
attached(): string[];
|
|
12
|
+
/** Query Functions - End */
|
|
13
|
+
query(query: TQuery): Promisable<XyoModuleQueryResult<TQueryResult>>;
|
|
14
|
+
register(_module: TModule): void;
|
|
15
|
+
abstract get(_address: string): TModule | undefined;
|
|
11
16
|
}
|
|
12
17
|
//# sourceMappingURL=XyoNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAgH,YAAY,EAAE,MAAM,WAAW,CAAA;AAEtJ,8BAAsB,OAAO,CACzB,OAAO,SAAS,eAAe,GAAG,eAAe,EACjD,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,YAAY,SAAS,UAAU,GAAG,UAAU,EAC5C,OAAO,SAAS,SAAS,GAAG,SAAS,CAEvC,SAAQ,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAC/C,YAAW,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC;IAE3C,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAExC,SAAS,IAAI,MAAM,EAAE;IAGrB,QAAQ,IAAI,MAAM,EAAE;IAGpB,4BAA4B;IAE5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAuBpE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;CACpD"}
|
package/dist/esm/XyoNode.js
CHANGED
|
@@ -1,18 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { XyoModule } from '@xyo-network/module';
|
|
2
|
+
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeAvailableQuerySchema, XyoNodeDetatchQuerySchema } from './Queries';
|
|
3
|
+
export class XyoNode extends XyoModule {
|
|
4
|
+
available() {
|
|
4
5
|
throw new Error('Method not implemented.');
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
+
attached() {
|
|
7
8
|
throw new Error('Method not implemented.');
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/** Query Functions - End */
|
|
11
|
+
query(query) {
|
|
12
|
+
const payloads = [];
|
|
13
|
+
switch (query.schema) {
|
|
14
|
+
case XyoNodeAttachQuerySchema: {
|
|
15
|
+
this.attach(query.address);
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
case XyoNodeDetatchQuerySchema: {
|
|
19
|
+
this.detatch(query.address);
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
case XyoNodeAttachedQuerySchema: {
|
|
23
|
+
this.attached();
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
case XyoNodeAvailableQuerySchema: {
|
|
27
|
+
this.available();
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return [this.bindPayloads(payloads), payloads];
|
|
14
32
|
}
|
|
15
|
-
|
|
33
|
+
register(_module) {
|
|
16
34
|
throw new Error('Method not implemented.');
|
|
17
35
|
}
|
|
18
36
|
}
|
package/dist/esm/XyoNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyC,MAAM,qBAAqB,CAAA;AAKtF,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,yBAAyB,EAAgB,MAAM,WAAW,CAAA;AAEtJ,MAAM,OAAgB,OAMpB,SAAQ,SAAwC;IAOhD,SAAS;QACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,QAAQ;QACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,4BAA4B;IAE5B,KAAK,CAAC,KAAa;QACjB,MAAM,QAAQ,GAA4B,EAAE,CAAA;QAC5C,QAAQ,KAAK,CAAC,MAAM,EAAE;YACpB,KAAK,wBAAwB,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1B,MAAK;aACN;YACD,KAAK,yBAAyB,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC3B,MAAK;aACN;YACD,KAAK,0BAA0B,CAAC,CAAC;gBAC/B,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACf,MAAK;aACN;YACD,KAAK,2BAA2B,CAAC,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,MAAK;aACN;SACF;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;IAED,QAAQ,CAAC,OAAgB;QACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;CAGF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XyoModuleWrapper } from '@xyo-network/module';
|
|
2
|
+
import { Node } from './Node';
|
|
3
|
+
export declare class XyoNodeWrapper extends XyoModuleWrapper implements Node {
|
|
4
|
+
available(): Promise<string[]>;
|
|
5
|
+
attached(): Promise<string[]>;
|
|
6
|
+
attach(address: string): Promise<void>;
|
|
7
|
+
detatch(address: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=XyoNodeWrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoNodeWrapper.d.ts","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAY7B,qBAAa,cAAe,SAAQ,gBAAiB,YAAW,IAAI;IAC5D,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9B,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { XyoModuleWrapper } from '@xyo-network/module';
|
|
2
|
+
import compact from 'lodash/compact';
|
|
3
|
+
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeAvailableQuerySchema, XyoNodeDetatchQuerySchema, } from './Queries';
|
|
4
|
+
export class XyoNodeWrapper extends XyoModuleWrapper {
|
|
5
|
+
async available() {
|
|
6
|
+
const query = { schema: XyoNodeAvailableQuerySchema };
|
|
7
|
+
return compact((await this.module.query(query))[1].map((payload) => payload?.schema));
|
|
8
|
+
}
|
|
9
|
+
async attached() {
|
|
10
|
+
const query = { schema: XyoNodeAttachedQuerySchema };
|
|
11
|
+
return compact((await this.module.query(query))[1].map((payload) => payload?.schema));
|
|
12
|
+
}
|
|
13
|
+
async attach(address) {
|
|
14
|
+
const query = { address, schema: XyoNodeAttachQuerySchema };
|
|
15
|
+
await this.module.query(query);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
async detatch(address) {
|
|
19
|
+
const query = { address, schema: XyoNodeDetatchQuerySchema };
|
|
20
|
+
await this.module.query(query);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=XyoNodeWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoNodeWrapper.js","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAGpC,OAAO,EAEL,0BAA0B,EAE1B,wBAAwB,EAExB,2BAA2B,EAE3B,yBAAyB,GAC1B,MAAM,WAAW,CAAA;AAElB,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,KAAK,CAAC,SAAS;QACb,MAAM,KAAK,GAA0B,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAA;QAC5E,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACvF,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAyB,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAA;QAC1E,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACvF,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,KAAK,GAAuB,EAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAA;QAC/E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC9B,OAAM;IACR,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,MAAM,KAAK,GAAwB,EAAE,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAA;QACjF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC9B,OAAM;IACR,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@
|
|
14
|
-
"@xyo-network/
|
|
15
|
-
"@xyo-network/
|
|
13
|
+
"@xylabs/assert": "^2.6.7",
|
|
14
|
+
"@xyo-network/module": "^2.32.0-rc.1",
|
|
15
|
+
"@xyo-network/payload": "^2.32.0-rc.1",
|
|
16
|
+
"@xyo-network/promisable": "^2.32.0-rc.1",
|
|
17
|
+
"lodash": "^4.17.21",
|
|
16
18
|
"tslib": "^2.4.0"
|
|
17
19
|
},
|
|
18
20
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
@@ -48,5 +50,6 @@
|
|
|
48
50
|
},
|
|
49
51
|
"sideEffects": false,
|
|
50
52
|
"types": "dist/esm/index.d.ts",
|
|
51
|
-
"version": "2.
|
|
53
|
+
"version": "2.32.0-rc.1",
|
|
54
|
+
"stableVersion": "2.31.5"
|
|
52
55
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
XyoArchivistAllQuery,
|
|
3
|
+
XyoArchivistAllQuerySchema,
|
|
4
|
+
XyoArchivistInsertQuery,
|
|
5
|
+
XyoArchivistInsertQuerySchema,
|
|
6
|
+
XyoMemoryArchivist,
|
|
7
|
+
} from '@xyo-network/archivist'
|
|
8
|
+
import { XyoArchivistPayloadDiviner, XyoDivinerDivineQuery, XyoDivinerDivineQuerySchema, XyoHuriPayload, XyoHuriSchema } from '@xyo-network/diviner'
|
|
9
|
+
import { XyoModule } from '@xyo-network/module'
|
|
10
|
+
import { XyoPayloadBuilder, XyoPayloadSchema, XyoPayloadWrapper } from '@xyo-network/sdk'
|
|
11
|
+
|
|
12
|
+
import { XyoMemoryNode } from './MemoryNode'
|
|
13
|
+
|
|
14
|
+
test('Create Node', async () => {
|
|
15
|
+
const node = new XyoMemoryNode()
|
|
16
|
+
const archivist = new XyoMemoryArchivist()
|
|
17
|
+
const diviner: XyoModule = new XyoArchivistPayloadDiviner({}, archivist)
|
|
18
|
+
node.register(archivist)
|
|
19
|
+
node.attach(archivist.address)
|
|
20
|
+
node.register(diviner)
|
|
21
|
+
node.attach(diviner.address)
|
|
22
|
+
expect(node.available().length).toBe(2)
|
|
23
|
+
expect(node.attached().length).toBe(2)
|
|
24
|
+
const foundArchivist = node.get(archivist.address)
|
|
25
|
+
expect(foundArchivist).toBeDefined()
|
|
26
|
+
expect(foundArchivist?.address).toBe(archivist.address)
|
|
27
|
+
const testPayload = new XyoPayloadBuilder({ schema: XyoPayloadSchema }).fields({ test: true }).build()
|
|
28
|
+
|
|
29
|
+
const insertQuery: XyoArchivistInsertQuery = { payloads: [testPayload], schema: XyoArchivistInsertQuerySchema }
|
|
30
|
+
await foundArchivist?.query(insertQuery)
|
|
31
|
+
|
|
32
|
+
/*const subscribeQuery: XyoModuleSubscribeQuery = { payloads: [testPayload], schema: XyoModuleSubscribeQuerySchema }
|
|
33
|
+
await foundArchivist?.query(subscribeQuery)*/
|
|
34
|
+
|
|
35
|
+
const allQuery: XyoArchivistAllQuery = { schema: XyoArchivistAllQuerySchema }
|
|
36
|
+
const [, payloads] = (await foundArchivist?.query(allQuery)) ?? []
|
|
37
|
+
expect(payloads?.length).toBe(1)
|
|
38
|
+
|
|
39
|
+
if (payloads && payloads[0]) {
|
|
40
|
+
const huri = new XyoPayloadWrapper(payloads[0]).hash
|
|
41
|
+
const huriPayload: XyoHuriPayload = { huri, schema: XyoHuriSchema }
|
|
42
|
+
const divineQuery: XyoDivinerDivineQuery = { payloads: [huriPayload], schema: XyoDivinerDivineQuerySchema }
|
|
43
|
+
const foundDiviner = node.get(diviner.address)
|
|
44
|
+
expect(foundDiviner).toBeDefined()
|
|
45
|
+
if (foundDiviner) {
|
|
46
|
+
const [, payloads] = await foundDiviner.query(divineQuery)
|
|
47
|
+
expect(payloads?.length).toBe(1)
|
|
48
|
+
expect(payloads[0]).toBeDefined()
|
|
49
|
+
if (payloads?.length === 1 && payloads[0]) {
|
|
50
|
+
expect(new XyoPayloadWrapper(payloads[0]).hash).toBe(huri)
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
})
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { XyoModule, XyoModuleConfig } from '@xyo-network/module'
|
|
3
|
+
import { XyoPayload } from '@xyo-network/payload'
|
|
4
|
+
|
|
5
|
+
import { XyoNodeAttachQuerySchema, XyoNodeQuery } from './Queries'
|
|
6
|
+
import { XyoNode } from './XyoNode'
|
|
7
|
+
|
|
8
|
+
export class XyoMemoryNode<
|
|
9
|
+
TConfig extends XyoModuleConfig = XyoModuleConfig,
|
|
10
|
+
TQuery extends XyoNodeQuery = XyoNodeQuery,
|
|
11
|
+
TQueryResult extends XyoPayload = XyoPayload,
|
|
12
|
+
TModule extends XyoModule = XyoModule,
|
|
13
|
+
> extends XyoNode<TConfig, TQuery, TQueryResult, TModule> {
|
|
14
|
+
private registeredModules = new Map<string, TModule>()
|
|
15
|
+
private attachedModules = new Map<string, TModule>()
|
|
16
|
+
|
|
17
|
+
public get queries(): TQuery['schema'][] {
|
|
18
|
+
return [XyoNodeAttachQuerySchema]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override attached() {
|
|
22
|
+
return Array.from(this.attachedModules.keys()).map(([key]) => {
|
|
23
|
+
return key
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override available() {
|
|
28
|
+
return Array.from(this.registeredModules.keys()).map(([key]) => {
|
|
29
|
+
return key
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override register(module: TModule) {
|
|
34
|
+
this.registeredModules.set(module.address, module)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override attach(address: string) {
|
|
38
|
+
const module = assertEx(this.registeredModules.get(address), 'No module found at that address')
|
|
39
|
+
this.attachedModules.set(address, module)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
override detatch(address: string) {
|
|
43
|
+
this.attachedModules.delete(address)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
override get(address: string) {
|
|
47
|
+
return this.attachedModules.get(address)
|
|
48
|
+
}
|
|
49
|
+
}
|
package/src/Node.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Module, XyoQuery } from '@xyo-network/module'
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload'
|
|
2
3
|
import { Promisable } from '@xyo-network/promisable'
|
|
3
4
|
|
|
4
|
-
export interface Node
|
|
5
|
-
attach(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
query(address: string, query: XyoQueryPayload): Promisable<XyoModuleQueryResult | undefined>
|
|
5
|
+
export interface Node {
|
|
6
|
+
attach(address: string): void
|
|
7
|
+
detatch(address: string): void
|
|
8
|
+
available(): Promisable<string[]>
|
|
9
|
+
attached(): Promisable<string[]>
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
export interface NodeModule<TQuery extends XyoQuery = XyoQuery, TQueryResult extends XyoPayload = XyoPayload>
|
|
13
|
+
extends Node,
|
|
14
|
+
Module<TQuery, TQueryResult> {}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoNodeAttachQuerySchema = 'network.xyo.query.node.attach'
|
|
4
|
+
export const XyoNodeAttachQuerySchema: XyoNodeAttachQuerySchema = 'network.xyo.query.node.attach'
|
|
5
|
+
|
|
6
|
+
export type XyoNodeAttachQuery = XyoQuery<{
|
|
7
|
+
schema: XyoNodeAttachQuerySchema
|
|
8
|
+
address: string
|
|
9
|
+
}>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoNodeAttachedQuerySchema = 'network.xyo.query.node.attached'
|
|
4
|
+
export const XyoNodeAttachedQuerySchema: XyoNodeAttachedQuerySchema = 'network.xyo.query.node.attached'
|
|
5
|
+
|
|
6
|
+
export type XyoNodeAttachedQuery = XyoQuery<{
|
|
7
|
+
schema: XyoNodeAttachedQuerySchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoNodeAvailableQuerySchema = 'network.xyo.query.node.available'
|
|
4
|
+
export const XyoNodeAvailableQuerySchema: XyoNodeAvailableQuerySchema = 'network.xyo.query.node.available'
|
|
5
|
+
|
|
6
|
+
export type XyoNodeAvailableQuery = XyoQuery<{
|
|
7
|
+
schema: XyoNodeAvailableQuerySchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module'
|
|
2
|
+
|
|
3
|
+
export type XyoNodeDetatchQuerySchema = 'network.xyo.query.node.detatch'
|
|
4
|
+
export const XyoNodeDetatchQuerySchema: XyoNodeDetatchQuerySchema = 'network.xyo.query.node.detatch'
|
|
5
|
+
|
|
6
|
+
export type XyoNodeDetatchQuery = XyoQuery<{
|
|
7
|
+
schema: XyoNodeDetatchQuerySchema
|
|
8
|
+
address: string
|
|
9
|
+
}>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { XyoNodeAttachQuery, XyoNodeAttachQuerySchema } from './Attach'
|
|
2
|
+
import { XyoNodeAttachedQuery, XyoNodeAttachedQuerySchema } from './Attached'
|
|
3
|
+
import { XyoNodeAvailableQuery, XyoNodeAvailableQuerySchema } from './Available'
|
|
4
|
+
import { XyoNodeDetatchQuery, XyoNodeDetatchQuerySchema } from './Detatch'
|
|
5
|
+
|
|
6
|
+
export * from './Attach'
|
|
7
|
+
export * from './Attached'
|
|
8
|
+
export * from './Available'
|
|
9
|
+
export * from './Detatch'
|
|
10
|
+
|
|
11
|
+
export type XyoNodeQuerySchema = XyoNodeAttachQuerySchema | XyoNodeDetatchQuerySchema | XyoNodeAttachedQuerySchema | XyoNodeAvailableQuerySchema
|
|
12
|
+
|
|
13
|
+
export type XyoNodeQuery = XyoNodeAttachQuery | XyoNodeDetatchQuery | XyoNodeAttachedQuery | XyoNodeAvailableQuery
|
package/src/XyoNode.ts
CHANGED
|
@@ -1,25 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { XyoModule, XyoModuleQueryResult, XyoQueryPayload } from '@xyo-network/module'
|
|
1
|
+
import { XyoModule, XyoModuleConfig, XyoModuleQueryResult } from '@xyo-network/module'
|
|
4
2
|
import { XyoPayload } from '@xyo-network/payload'
|
|
5
3
|
import { Promisable } from '@xyo-network/promisable'
|
|
6
4
|
|
|
7
|
-
import {
|
|
5
|
+
import { NodeModule } from './Node'
|
|
6
|
+
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeAvailableQuerySchema, XyoNodeDetatchQuerySchema, XyoNodeQuery } from './Queries'
|
|
8
7
|
|
|
9
|
-
export abstract class XyoNode<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
export abstract class XyoNode<
|
|
9
|
+
TConfig extends XyoModuleConfig = XyoModuleConfig,
|
|
10
|
+
TQuery extends XyoNodeQuery = XyoNodeQuery,
|
|
11
|
+
TQueryResult extends XyoPayload = XyoPayload,
|
|
12
|
+
TModule extends XyoModule = XyoModule,
|
|
13
|
+
>
|
|
14
|
+
extends XyoModule<TConfig, TQuery, TQueryResult>
|
|
15
|
+
implements NodeModule<TQuery, TQueryResult>
|
|
16
|
+
{
|
|
17
|
+
/** Query Functions - Start */
|
|
18
|
+
abstract attach(_address: string): void
|
|
19
|
+
abstract detatch(_address: string): void
|
|
20
|
+
|
|
21
|
+
available(): string[] {
|
|
14
22
|
throw new Error('Method not implemented.')
|
|
15
23
|
}
|
|
16
|
-
|
|
24
|
+
attached(): string[] {
|
|
17
25
|
throw new Error('Method not implemented.')
|
|
18
26
|
}
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
/** Query Functions - End */
|
|
28
|
+
|
|
29
|
+
query(query: TQuery): Promisable<XyoModuleQueryResult<TQueryResult>> {
|
|
30
|
+
const payloads: (TQueryResult | null)[] = []
|
|
31
|
+
switch (query.schema) {
|
|
32
|
+
case XyoNodeAttachQuerySchema: {
|
|
33
|
+
this.attach(query.address)
|
|
34
|
+
break
|
|
35
|
+
}
|
|
36
|
+
case XyoNodeDetatchQuerySchema: {
|
|
37
|
+
this.detatch(query.address)
|
|
38
|
+
break
|
|
39
|
+
}
|
|
40
|
+
case XyoNodeAttachedQuerySchema: {
|
|
41
|
+
this.attached()
|
|
42
|
+
break
|
|
43
|
+
}
|
|
44
|
+
case XyoNodeAvailableQuerySchema: {
|
|
45
|
+
this.available()
|
|
46
|
+
break
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return [this.bindPayloads(payloads), payloads]
|
|
21
50
|
}
|
|
22
|
-
|
|
51
|
+
|
|
52
|
+
register(_module: TModule): void {
|
|
23
53
|
throw new Error('Method not implemented.')
|
|
24
54
|
}
|
|
55
|
+
|
|
56
|
+
abstract get(_address: string): TModule | undefined
|
|
25
57
|
}
|