@xyo-network/node 2.32.0 → 2.33.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 +6 -3
- package/dist/cjs/MemoryNode.d.ts.map +1 -1
- package/dist/cjs/MemoryNode.js +30 -10
- package/dist/cjs/MemoryNode.js.map +1 -1
- package/dist/cjs/Node.d.ts +2 -2
- package/dist/cjs/Node.d.ts.map +1 -1
- package/dist/cjs/XyoNode.d.ts +7 -4
- package/dist/cjs/XyoNode.d.ts.map +1 -1
- package/dist/cjs/XyoNode.js +11 -3
- package/dist/cjs/XyoNode.js.map +1 -1
- package/dist/cjs/XyoNodeWrapper.d.ts +1 -1
- package/dist/cjs/XyoNodeWrapper.d.ts.map +1 -1
- package/dist/cjs/XyoNodeWrapper.js +1 -1
- package/dist/cjs/XyoNodeWrapper.js.map +1 -1
- package/dist/cjs/cli/index.d.ts +2 -0
- package/dist/cjs/cli/index.d.ts.map +1 -0
- package/dist/cjs/cli/index.js +56 -0
- package/dist/cjs/cli/index.js.map +1 -0
- package/dist/cjs/cli/terminal.d.ts +2 -0
- package/dist/cjs/cli/terminal.d.ts.map +1 -0
- package/dist/cjs/cli/terminal.js +37 -0
- package/dist/cjs/cli/terminal.js.map +1 -0
- package/dist/cjs/cli/xyo_logo_black.png +0 -0
- package/dist/docs.json +1833 -1128
- package/dist/esm/MemoryNode.d.ts +6 -3
- package/dist/esm/MemoryNode.d.ts.map +1 -1
- package/dist/esm/MemoryNode.js +29 -10
- package/dist/esm/MemoryNode.js.map +1 -1
- package/dist/esm/Node.d.ts +2 -2
- package/dist/esm/Node.d.ts.map +1 -1
- package/dist/esm/XyoNode.d.ts +7 -4
- package/dist/esm/XyoNode.d.ts.map +1 -1
- package/dist/esm/XyoNode.js +11 -3
- package/dist/esm/XyoNode.js.map +1 -1
- package/dist/esm/XyoNodeWrapper.d.ts +1 -1
- package/dist/esm/XyoNodeWrapper.d.ts.map +1 -1
- package/dist/esm/XyoNodeWrapper.js +1 -1
- package/dist/esm/XyoNodeWrapper.js.map +1 -1
- package/dist/esm/cli/index.d.ts +2 -0
- package/dist/esm/cli/index.d.ts.map +1 -0
- package/dist/esm/cli/index.js +53 -0
- package/dist/esm/cli/index.js.map +1 -0
- package/dist/esm/cli/terminal.d.ts +2 -0
- package/dist/esm/cli/terminal.d.ts.map +1 -0
- package/dist/esm/cli/terminal.js +32 -0
- package/dist/esm/cli/terminal.js.map +1 -0
- package/dist/esm/cli/xyo_logo_black.png +0 -0
- package/package.json +23 -5
- package/src/MemoryNode.spec.ts +3 -8
- package/src/MemoryNode.ts +32 -10
- package/src/Node.ts +2 -2
- package/src/XyoNode.ts +15 -6
- package/src/XyoNodeWrapper.ts +1 -1
- package/src/cli/index.ts +69 -0
- package/src/cli/terminal.ts +36 -0
- package/src/cli/types/images.d.ts +5 -0
- package/src/cli/xyo_logo_black.png +0 -0
package/dist/esm/MemoryNode.d.ts
CHANGED
|
@@ -3,11 +3,14 @@ import { XyoPayload } from '@xyo-network/payload';
|
|
|
3
3
|
import { XyoNodeQuery } from './Queries';
|
|
4
4
|
import { XyoNode } from './XyoNode';
|
|
5
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
|
|
7
|
-
private
|
|
6
|
+
private registeredModuleMap;
|
|
7
|
+
private attachedModuleMap;
|
|
8
8
|
queries(): TQuery['schema'][];
|
|
9
9
|
attached(): string[];
|
|
10
|
-
|
|
10
|
+
registered(): string[];
|
|
11
|
+
attachedModules(): TModule[];
|
|
12
|
+
availableModules(): TModule[];
|
|
13
|
+
resolve(address: string): TModule | null;
|
|
11
14
|
register(module: TModule): void;
|
|
12
15
|
attach(address: string): void;
|
|
13
16
|
detatch(address: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAEA,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,mBAAmB,CAA6B;IACxD,OAAO,CAAC,iBAAiB,CAA6B;IAEtC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;IAIpC,QAAQ;IAMR,UAAU;IAMV,eAAe;IAMf,gBAAgB;IAMhB,OAAO,CAAC,OAAO,EAAE,MAAM;IASvB,QAAQ,CAAC,MAAM,EAAE,OAAO;IAIxB,MAAM,CAAC,OAAO,EAAE,MAAM;IAKtB,OAAO,CAAC,OAAO,EAAE,MAAM;IAIvB,GAAG,CAAC,OAAO,EAAE,MAAM;CAG7B"}
|
package/dist/esm/MemoryNode.js
CHANGED
|
@@ -1,34 +1,53 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { XyoArchivistGetQuerySchema } from '@xyo-network/archivist';
|
|
2
3
|
import { XyoNodeAttachQuerySchema } from './Queries';
|
|
3
4
|
import { XyoNode } from './XyoNode';
|
|
4
5
|
export class XyoMemoryNode extends XyoNode {
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
registeredModuleMap = new Map();
|
|
7
|
+
attachedModuleMap = new Map();
|
|
7
8
|
queries() {
|
|
8
9
|
return [XyoNodeAttachQuerySchema];
|
|
9
10
|
}
|
|
10
11
|
attached() {
|
|
11
|
-
return Array.from(this.
|
|
12
|
+
return Array.from(this.attachedModuleMap.keys()).map((key) => {
|
|
12
13
|
return key;
|
|
13
14
|
});
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
return Array.from(this.
|
|
16
|
+
registered() {
|
|
17
|
+
return Array.from(this.registeredModuleMap.keys()).map((key) => {
|
|
17
18
|
return key;
|
|
18
19
|
});
|
|
19
20
|
}
|
|
21
|
+
attachedModules() {
|
|
22
|
+
return Array.from(this.attachedModuleMap.values()).map((value) => {
|
|
23
|
+
return value;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
availableModules() {
|
|
27
|
+
return Array.from(this.registeredModuleMap.values()).map((value) => {
|
|
28
|
+
return value;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
resolve(address) {
|
|
32
|
+
console.log(`Resolving in MemoryNode: ${address}`);
|
|
33
|
+
if (address === 'archivist') {
|
|
34
|
+
console.log(`attachedModules: ${JSON.stringify(this.attachedModules(), null, 2)}`);
|
|
35
|
+
return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null;
|
|
36
|
+
}
|
|
37
|
+
return this.attachedModuleMap?.get(address) ?? null;
|
|
38
|
+
}
|
|
20
39
|
register(module) {
|
|
21
|
-
this.
|
|
40
|
+
this.registeredModuleMap.set(module.address, module);
|
|
22
41
|
}
|
|
23
42
|
attach(address) {
|
|
24
|
-
const module = assertEx(this.
|
|
25
|
-
this.
|
|
43
|
+
const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address');
|
|
44
|
+
this.attachedModuleMap.set(address, module);
|
|
26
45
|
}
|
|
27
46
|
detatch(address) {
|
|
28
|
-
this.
|
|
47
|
+
this.attachedModuleMap.delete(address);
|
|
29
48
|
}
|
|
30
49
|
get(address) {
|
|
31
|
-
return this.
|
|
50
|
+
return this.attachedModuleMap.get(address);
|
|
32
51
|
}
|
|
33
52
|
}
|
|
34
53
|
//# sourceMappingURL=MemoryNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAInE,OAAO,EAAE,wBAAwB,EAAgB,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,OAAO,aAKX,SAAQ,OAA+C;IAC/C,mBAAmB,GAAG,IAAI,GAAG,EAAmB,CAAA;IAChD,iBAAiB,GAAG,IAAI,GAAG,EAAmB,CAAA;IAEtC,OAAO;QACrB,OAAO,CAAC,wBAAwB,CAAC,CAAA;IACnC,CAAC;IAEQ,QAAQ;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3D,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEQ,UAAU;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7D,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEQ,eAAe;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/D,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAEQ,gBAAgB;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACjE,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAEQ,OAAO,CAAC,OAAe;QAC9B,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;QAClD,IAAI,OAAO,KAAK,WAAW,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YAClF,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,IAAI,IAAI,CAAA;SACrG;QACD,OAAO,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;IACrD,CAAC;IAEQ,QAAQ,CAAC,MAAe;QAC/B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;IAEQ,MAAM,CAAC,OAAe;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,iCAAiC,CAAC,CAAA;QACjG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAEQ,OAAO,CAAC,OAAe;QAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAEQ,GAAG,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;CACF"}
|
package/dist/esm/Node.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Module, XyoQuery } from '@xyo-network/module';
|
|
2
2
|
import { XyoPayload } from '@xyo-network/payload';
|
|
3
|
-
import { Promisable } from '@xyo-network/
|
|
3
|
+
import { Promisable } from '@xyo-network/promise';
|
|
4
4
|
export interface Node {
|
|
5
5
|
attach(address: string): void;
|
|
6
6
|
detatch(address: string): void;
|
|
7
|
-
|
|
7
|
+
registered(): Promisable<string[]>;
|
|
8
8
|
attached(): Promisable<string[]>;
|
|
9
9
|
}
|
|
10
10
|
export interface NodeModule<TQuery extends XyoQuery = XyoQuery, TQueryResult extends XyoPayload = XyoPayload> extends Node, Module<TQuery, TQueryResult> {
|
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,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
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,sBAAsB,CAAA;AAEjD,MAAM,WAAW,IAAI;IACnB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IAClC,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"}
|
package/dist/esm/XyoNode.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { XyoAccount } from '@xyo-network/account';
|
|
2
|
+
import { XyoModule, XyoModuleConfig } from '@xyo-network/module';
|
|
2
3
|
import { XyoPayload } from '@xyo-network/payload';
|
|
3
|
-
import { Promisable } from '@xyo-network/promisable';
|
|
4
4
|
import { NodeModule } from './Node';
|
|
5
5
|
import { XyoNodeQuery } from './Queries';
|
|
6
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
7
|
/** Query Functions - Start */
|
|
8
8
|
abstract attach(_address: string): void;
|
|
9
9
|
abstract detatch(_address: string): void;
|
|
10
|
-
|
|
10
|
+
abstract resolve(_address: string): XyoModule | null;
|
|
11
|
+
registered(): string[];
|
|
11
12
|
attached(): string[];
|
|
13
|
+
availableModules(): XyoModule[];
|
|
14
|
+
attachedModules(): XyoModule[];
|
|
12
15
|
/** Query Functions - End */
|
|
13
|
-
query(query: TQuery):
|
|
16
|
+
query(query: TQuery): import("@xyo-network/promise").PromiseEx<import("@xyo-network/module").XyoModuleQueryResult<TQueryResult>, XyoAccount>;
|
|
14
17
|
register(_module: TModule): void;
|
|
15
18
|
abstract get(_address: string): TModule | undefined;
|
|
16
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,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;IACxC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAEpD,UAAU,IAAI,MAAM,EAAE;IAGtB,QAAQ,IAAI,MAAM,EAAE;IAIpB,gBAAgB,IAAI,SAAS,EAAE;IAG/B,eAAe,IAAI,SAAS,EAAE;IAG9B,4BAA4B;IAE5B,KAAK,CAAC,KAAK,EAAE,MAAM;IAwBnB,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,14 +1,22 @@
|
|
|
1
|
+
import { XyoAccount } from '@xyo-network/account';
|
|
1
2
|
import { XyoModule } from '@xyo-network/module';
|
|
2
3
|
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeAvailableQuerySchema, XyoNodeDetatchQuerySchema } from './Queries';
|
|
3
4
|
export class XyoNode extends XyoModule {
|
|
4
|
-
|
|
5
|
+
registered() {
|
|
5
6
|
throw new Error('Method not implemented.');
|
|
6
7
|
}
|
|
7
8
|
attached() {
|
|
8
9
|
throw new Error('Method not implemented.');
|
|
9
10
|
}
|
|
11
|
+
availableModules() {
|
|
12
|
+
throw new Error('Method not implemented.');
|
|
13
|
+
}
|
|
14
|
+
attachedModules() {
|
|
15
|
+
throw new Error('Method not implemented.');
|
|
16
|
+
}
|
|
10
17
|
/** Query Functions - End */
|
|
11
18
|
query(query) {
|
|
19
|
+
const queryAccount = new XyoAccount();
|
|
12
20
|
const payloads = [];
|
|
13
21
|
switch (query.schema) {
|
|
14
22
|
case XyoNodeAttachQuerySchema: {
|
|
@@ -24,11 +32,11 @@ export class XyoNode extends XyoModule {
|
|
|
24
32
|
break;
|
|
25
33
|
}
|
|
26
34
|
case XyoNodeAvailableQuerySchema: {
|
|
27
|
-
this.
|
|
35
|
+
this.registered();
|
|
28
36
|
break;
|
|
29
37
|
}
|
|
30
38
|
}
|
|
31
|
-
return
|
|
39
|
+
return this.bindPayloads(payloads, queryAccount);
|
|
32
40
|
}
|
|
33
41
|
register(_module) {
|
|
34
42
|
throw new Error('Method not implemented.');
|
package/dist/esm/XyoNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAA;AAIhE,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,yBAAyB,EAAgB,MAAM,WAAW,CAAA;AAEtJ,MAAM,OAAgB,OAMpB,SAAQ,SAAwC;IAQhD,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,QAAQ;QACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,gBAAgB;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,eAAe;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,4BAA4B;IAE5B,KAAK,CAAC,KAAa;QACjB,MAAM,YAAY,GAAG,IAAI,UAAU,EAAE,CAAA;QACrC,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,UAAU,EAAE,CAAA;gBACjB,MAAK;aACN;SACF;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAClD,CAAC;IAED,QAAQ,CAAC,OAAgB;QACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;CAGF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { XyoModuleWrapper } from '@xyo-network/module';
|
|
2
2
|
import { Node } from './Node';
|
|
3
3
|
export declare class XyoNodeWrapper extends XyoModuleWrapper implements Node {
|
|
4
|
-
|
|
4
|
+
registered(): Promise<string[]>;
|
|
5
5
|
attached(): Promise<string[]>;
|
|
6
6
|
attach(address: string): Promise<void>;
|
|
7
7
|
detatch(address: string): Promise<void>;
|
|
@@ -1 +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,
|
|
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,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,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"}
|
|
@@ -2,7 +2,7 @@ import { XyoModuleWrapper } from '@xyo-network/module';
|
|
|
2
2
|
import compact from 'lodash/compact';
|
|
3
3
|
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeAvailableQuerySchema, XyoNodeDetatchQuerySchema, } from './Queries';
|
|
4
4
|
export class XyoNodeWrapper extends XyoModuleWrapper {
|
|
5
|
-
async
|
|
5
|
+
async registered() {
|
|
6
6
|
const query = { schema: XyoNodeAvailableQuerySchema };
|
|
7
7
|
return compact((await this.module.query(query))[1].map((payload) => payload?.schema));
|
|
8
8
|
}
|
|
@@ -1 +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,
|
|
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,UAAU;QACd,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { forget } from '@xylabs/forget';
|
|
2
|
+
import yargs from 'yargs';
|
|
3
|
+
// eslint-disable-next-line import/no-internal-modules
|
|
4
|
+
import { hideBin } from 'yargs/helpers';
|
|
5
|
+
import { XyoMemoryNode } from '../MemoryNode';
|
|
6
|
+
import { startTerminal } from './terminal';
|
|
7
|
+
const parseOptions = () => {
|
|
8
|
+
return yargs(hideBin(process.argv))
|
|
9
|
+
.option('verbose', {
|
|
10
|
+
alias: 'v',
|
|
11
|
+
default: false,
|
|
12
|
+
description: 'Run with verbose logging',
|
|
13
|
+
type: 'boolean',
|
|
14
|
+
})
|
|
15
|
+
.option('module', {
|
|
16
|
+
alias: 'm',
|
|
17
|
+
description: 'Modules to load',
|
|
18
|
+
type: 'string',
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
const loadModule = async (pkg, name, resolver) => {
|
|
22
|
+
const loadedPkg = await import(pkg);
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
const ModuleConstructor = name ? loadedPkg[name] : loadedPkg;
|
|
25
|
+
return new ModuleConstructor(undefined, undefined, resolver);
|
|
26
|
+
};
|
|
27
|
+
const xyo = () => {
|
|
28
|
+
return parseOptions().command('node', 'Start an XYO Node', (yargs) => {
|
|
29
|
+
return yargs;
|
|
30
|
+
}, async (yargs) => {
|
|
31
|
+
console.log(`yargs: ${JSON.stringify(yargs, null, 2)}`);
|
|
32
|
+
const { verbose, module } = yargs;
|
|
33
|
+
const modules = Array.isArray(module) ? module : [module];
|
|
34
|
+
if (verbose)
|
|
35
|
+
console.info('Starting Node');
|
|
36
|
+
const node = new XyoMemoryNode();
|
|
37
|
+
const resolver = (address) => {
|
|
38
|
+
console.log(`Resolving: ${address}`);
|
|
39
|
+
return node.resolve(address);
|
|
40
|
+
};
|
|
41
|
+
await Promise.all(modules.map(async (module) => {
|
|
42
|
+
const [pkg, name] = module.split('.');
|
|
43
|
+
const instance = await loadModule(pkg, name, resolver);
|
|
44
|
+
console.log(`Arg: ${instance.address}`);
|
|
45
|
+
node.register(instance);
|
|
46
|
+
node.attach(instance.address);
|
|
47
|
+
console.log(`Module Loaded: ${instance.address}`);
|
|
48
|
+
}));
|
|
49
|
+
}).argv;
|
|
50
|
+
};
|
|
51
|
+
void xyo();
|
|
52
|
+
forget(startTerminal());
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../src/cli/terminal.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,aAAa,sBAezB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { terminal } from 'terminal-kit';
|
|
3
|
+
import xyo_logo_black from './xyo_logo_black.png';
|
|
4
|
+
const commands = ['exit', 'plugin'];
|
|
5
|
+
const getCommand = () => {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
terminal.inputField({ autoComplete: commands, autoCompleteMenu: true }, (error, input) => {
|
|
8
|
+
terminal('\n');
|
|
9
|
+
if (error) {
|
|
10
|
+
reject(error);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
resolve(input);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
export const startTerminal = async () => {
|
|
19
|
+
const imagePath = path.resolve(__dirname, xyo_logo_black);
|
|
20
|
+
await terminal.drawImage(imagePath);
|
|
21
|
+
terminal.green('XYO Node Started\n\n');
|
|
22
|
+
terminal.green("Type 'exit' to exit\n\n");
|
|
23
|
+
let running = true;
|
|
24
|
+
while (running) {
|
|
25
|
+
const command = await getCommand();
|
|
26
|
+
if (command === 'exit') {
|
|
27
|
+
running = false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
process.exit(0);
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/cli/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,cAAc,MAAM,sBAAsB,CAAA;AAEjD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAEnC,MAAM,UAAU,GAAG,GAAgC,EAAE;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvF,QAAQ,CAAC,IAAI,CAAC,CAAA;YACd,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,KAAK,CAAC,CAAA;aACd;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,CAAA;aACf;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IACzD,MAAM,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACnC,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAEzC,IAAI,OAAO,GAAG,IAAI,CAAA;IAElB,OAAO,OAAO,EAAE;QACd,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAA;QAClC,IAAI,OAAO,KAAK,MAAM,EAAE;YACtB,OAAO,GAAG,KAAK,CAAA;SAChB;KACF;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAA"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -11,11 +11,25 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.6.7",
|
|
14
|
-
"@
|
|
15
|
-
"@xyo-network/
|
|
16
|
-
"@xyo-network/
|
|
14
|
+
"@xylabs/forget": "^2.6.7",
|
|
15
|
+
"@xyo-network/account": "^2.33.0-rc.1",
|
|
16
|
+
"@xyo-network/archivist": "^2.33.0-rc.1",
|
|
17
|
+
"@xyo-network/module": "^2.33.0-rc.1",
|
|
18
|
+
"@xyo-network/payload": "^2.33.0-rc.1",
|
|
19
|
+
"@xyo-network/promise": "^2.33.0-rc.1",
|
|
17
20
|
"lodash": "^4.17.21",
|
|
18
|
-
"
|
|
21
|
+
"terminal-kit": "^2.11.4",
|
|
22
|
+
"tslib": "^2.4.0",
|
|
23
|
+
"yargs": "^17.5.1"
|
|
24
|
+
},
|
|
25
|
+
"bin": {
|
|
26
|
+
"xyo": "dist/cjs/cli/index.js"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^18.7.17",
|
|
30
|
+
"@types/terminal-kit": "^2.5.0",
|
|
31
|
+
"ts-node": "^10.9.1",
|
|
32
|
+
"typescript": "^4.8.3"
|
|
19
33
|
},
|
|
20
34
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
21
35
|
"browser": "dist/esm/index.js",
|
|
@@ -49,6 +63,10 @@
|
|
|
49
63
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
50
64
|
},
|
|
51
65
|
"sideEffects": false,
|
|
66
|
+
"scripts": {
|
|
67
|
+
"xyo-ts": "ts-node src/cli/index.ts"
|
|
68
|
+
},
|
|
52
69
|
"types": "dist/esm/index.d.ts",
|
|
53
|
-
"version": "2.
|
|
70
|
+
"version": "2.33.0-rc.1",
|
|
71
|
+
"stableVersion": "2.32.1"
|
|
54
72
|
}
|
package/src/MemoryNode.spec.ts
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
XyoArchivistAllQuery,
|
|
3
|
-
XyoArchivistAllQuerySchema,
|
|
4
|
-
XyoArchivistInsertQuery,
|
|
5
|
-
XyoArchivistInsertQuerySchema,
|
|
6
|
-
XyoMemoryArchivist,
|
|
7
|
-
} from '@xyo-network/archivist'
|
|
1
|
+
import { XyoArchivistAllQuery, XyoArchivistAllQuerySchema, XyoArchivistInsertQuery, XyoArchivistInsertQuerySchema } from '@xyo-network/archivist'
|
|
8
2
|
import { XyoArchivistPayloadDiviner, XyoDivinerDivineQuery, XyoDivinerDivineQuerySchema, XyoHuriPayload, XyoHuriSchema } from '@xyo-network/diviner'
|
|
9
3
|
import { XyoModule } from '@xyo-network/module'
|
|
10
4
|
import { XyoPayloadBuilder, XyoPayloadSchema, XyoPayloadWrapper } from '@xyo-network/sdk'
|
|
@@ -12,6 +6,7 @@ import { XyoPayloadBuilder, XyoPayloadSchema, XyoPayloadWrapper } from '@xyo-net
|
|
|
12
6
|
import { XyoMemoryNode } from './MemoryNode'
|
|
13
7
|
|
|
14
8
|
test('Create Node', async () => {
|
|
9
|
+
const XyoMemoryArchivist = (await import('@xyo-network/archivist')).XyoMemoryArchivist
|
|
15
10
|
const node = new XyoMemoryNode()
|
|
16
11
|
const archivist = new XyoMemoryArchivist()
|
|
17
12
|
const diviner: XyoModule = new XyoArchivistPayloadDiviner({}, archivist)
|
|
@@ -19,7 +14,7 @@ test('Create Node', async () => {
|
|
|
19
14
|
node.attach(archivist.address)
|
|
20
15
|
node.register(diviner)
|
|
21
16
|
node.attach(diviner.address)
|
|
22
|
-
expect(node.
|
|
17
|
+
expect(node.registered().length).toBe(2)
|
|
23
18
|
expect(node.attached().length).toBe(2)
|
|
24
19
|
const foundArchivist = node.get(archivist.address)
|
|
25
20
|
expect(foundArchivist).toBeDefined()
|
package/src/MemoryNode.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { XyoArchivistGetQuerySchema } from '@xyo-network/archivist'
|
|
2
3
|
import { XyoModule, XyoModuleConfig } from '@xyo-network/module'
|
|
3
4
|
import { XyoPayload } from '@xyo-network/payload'
|
|
4
5
|
|
|
@@ -11,39 +12,60 @@ export class XyoMemoryNode<
|
|
|
11
12
|
TQueryResult extends XyoPayload = XyoPayload,
|
|
12
13
|
TModule extends XyoModule = XyoModule,
|
|
13
14
|
> extends XyoNode<TConfig, TQuery, TQueryResult, TModule> {
|
|
14
|
-
private
|
|
15
|
-
private
|
|
15
|
+
private registeredModuleMap = new Map<string, TModule>()
|
|
16
|
+
private attachedModuleMap = new Map<string, TModule>()
|
|
16
17
|
|
|
17
18
|
public override queries(): TQuery['schema'][] {
|
|
18
19
|
return [XyoNodeAttachQuerySchema]
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
override attached() {
|
|
22
|
-
return Array.from(this.
|
|
23
|
+
return Array.from(this.attachedModuleMap.keys()).map((key) => {
|
|
23
24
|
return key
|
|
24
25
|
})
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
override
|
|
28
|
-
return Array.from(this.
|
|
28
|
+
override registered() {
|
|
29
|
+
return Array.from(this.registeredModuleMap.keys()).map((key) => {
|
|
29
30
|
return key
|
|
30
31
|
})
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
override attachedModules() {
|
|
35
|
+
return Array.from(this.attachedModuleMap.values()).map((value) => {
|
|
36
|
+
return value
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
override availableModules() {
|
|
41
|
+
return Array.from(this.registeredModuleMap.values()).map((value) => {
|
|
42
|
+
return value
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
override resolve(address: string) {
|
|
47
|
+
console.log(`Resolving in MemoryNode: ${address}`)
|
|
48
|
+
if (address === 'archivist') {
|
|
49
|
+
console.log(`attachedModules: ${JSON.stringify(this.attachedModules(), null, 2)}`)
|
|
50
|
+
return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null
|
|
51
|
+
}
|
|
52
|
+
return this.attachedModuleMap?.get(address) ?? null
|
|
53
|
+
}
|
|
54
|
+
|
|
33
55
|
override register(module: TModule) {
|
|
34
|
-
this.
|
|
56
|
+
this.registeredModuleMap.set(module.address, module)
|
|
35
57
|
}
|
|
36
58
|
|
|
37
59
|
override attach(address: string) {
|
|
38
|
-
const module = assertEx(this.
|
|
39
|
-
this.
|
|
60
|
+
const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address')
|
|
61
|
+
this.attachedModuleMap.set(address, module)
|
|
40
62
|
}
|
|
41
63
|
|
|
42
64
|
override detatch(address: string) {
|
|
43
|
-
this.
|
|
65
|
+
this.attachedModuleMap.delete(address)
|
|
44
66
|
}
|
|
45
67
|
|
|
46
68
|
override get(address: string) {
|
|
47
|
-
return this.
|
|
69
|
+
return this.attachedModuleMap.get(address)
|
|
48
70
|
}
|
|
49
71
|
}
|
package/src/Node.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Module, XyoQuery } from '@xyo-network/module'
|
|
2
2
|
import { XyoPayload } from '@xyo-network/payload'
|
|
3
|
-
import { Promisable } from '@xyo-network/
|
|
3
|
+
import { Promisable } from '@xyo-network/promise'
|
|
4
4
|
|
|
5
5
|
export interface Node {
|
|
6
6
|
attach(address: string): void
|
|
7
7
|
detatch(address: string): void
|
|
8
|
-
|
|
8
|
+
registered(): Promisable<string[]>
|
|
9
9
|
attached(): Promisable<string[]>
|
|
10
10
|
}
|
|
11
11
|
|
package/src/XyoNode.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { XyoAccount } from '@xyo-network/account'
|
|
2
|
+
import { XyoModule, XyoModuleConfig } from '@xyo-network/module'
|
|
2
3
|
import { XyoPayload } from '@xyo-network/payload'
|
|
3
|
-
import { Promisable } from '@xyo-network/promisable'
|
|
4
4
|
|
|
5
5
|
import { NodeModule } from './Node'
|
|
6
6
|
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeAvailableQuerySchema, XyoNodeDetatchQuerySchema, XyoNodeQuery } from './Queries'
|
|
@@ -17,16 +17,25 @@ export abstract class XyoNode<
|
|
|
17
17
|
/** Query Functions - Start */
|
|
18
18
|
abstract attach(_address: string): void
|
|
19
19
|
abstract detatch(_address: string): void
|
|
20
|
+
abstract resolve(_address: string): XyoModule | null
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
registered(): string[] {
|
|
22
23
|
throw new Error('Method not implemented.')
|
|
23
24
|
}
|
|
24
25
|
attached(): string[] {
|
|
25
26
|
throw new Error('Method not implemented.')
|
|
26
27
|
}
|
|
28
|
+
|
|
29
|
+
availableModules(): XyoModule[] {
|
|
30
|
+
throw new Error('Method not implemented.')
|
|
31
|
+
}
|
|
32
|
+
attachedModules(): XyoModule[] {
|
|
33
|
+
throw new Error('Method not implemented.')
|
|
34
|
+
}
|
|
27
35
|
/** Query Functions - End */
|
|
28
36
|
|
|
29
|
-
query(query: TQuery)
|
|
37
|
+
query(query: TQuery) {
|
|
38
|
+
const queryAccount = new XyoAccount()
|
|
30
39
|
const payloads: (TQueryResult | null)[] = []
|
|
31
40
|
switch (query.schema) {
|
|
32
41
|
case XyoNodeAttachQuerySchema: {
|
|
@@ -42,11 +51,11 @@ export abstract class XyoNode<
|
|
|
42
51
|
break
|
|
43
52
|
}
|
|
44
53
|
case XyoNodeAvailableQuerySchema: {
|
|
45
|
-
this.
|
|
54
|
+
this.registered()
|
|
46
55
|
break
|
|
47
56
|
}
|
|
48
57
|
}
|
|
49
|
-
return
|
|
58
|
+
return this.bindPayloads(payloads, queryAccount)
|
|
50
59
|
}
|
|
51
60
|
|
|
52
61
|
register(_module: TModule): void {
|
package/src/XyoNodeWrapper.ts
CHANGED
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from './Queries'
|
|
15
15
|
|
|
16
16
|
export class XyoNodeWrapper extends XyoModuleWrapper implements Node {
|
|
17
|
-
async
|
|
17
|
+
async registered(): Promise<string[]> {
|
|
18
18
|
const query: XyoNodeAvailableQuery = { schema: XyoNodeAvailableQuerySchema }
|
|
19
19
|
return compact((await this.module.query(query))[1].map((payload) => payload?.schema))
|
|
20
20
|
}
|