@xyo-network/node 2.32.0-rc.3 → 2.32.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 +5 -2
- package/dist/cjs/MemoryNode.d.ts.map +1 -1
- package/dist/cjs/MemoryNode.js +29 -9
- package/dist/cjs/MemoryNode.js.map +1 -1
- package/dist/cjs/PartialConfig.d.ts +3 -0
- package/dist/cjs/PartialConfig.d.ts.map +1 -0
- package/dist/cjs/PartialConfig.js +3 -0
- package/dist/cjs/PartialConfig.js.map +1 -0
- package/dist/cjs/XyoNode.d.ts +3 -0
- package/dist/cjs/XyoNode.d.ts.map +1 -1
- package/dist/cjs/XyoNode.js +6 -0
- package/dist/cjs/XyoNode.js.map +1 -1
- package/dist/cjs/cli.d.ts +2 -0
- package/dist/cjs/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +55 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/docs.json +1953 -1185
- package/dist/esm/MemoryNode.d.ts +5 -2
- package/dist/esm/MemoryNode.d.ts.map +1 -1
- package/dist/esm/MemoryNode.js +28 -9
- package/dist/esm/MemoryNode.js.map +1 -1
- package/dist/esm/PartialConfig.d.ts +3 -0
- package/dist/esm/PartialConfig.d.ts.map +1 -0
- package/dist/esm/PartialConfig.js +2 -0
- package/dist/esm/PartialConfig.js.map +1 -0
- package/dist/esm/XyoNode.d.ts +3 -0
- package/dist/esm/XyoNode.d.ts.map +1 -1
- package/dist/esm/XyoNode.js +6 -0
- package/dist/esm/XyoNode.js.map +1 -1
- package/dist/esm/cli.d.ts +2 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +52 -0
- package/dist/esm/cli.js.map +1 -0
- package/package.json +16 -6
- package/src/MemoryNode.spec.ts +2 -7
- package/src/MemoryNode.ts +31 -9
- package/src/PartialConfig.ts +3 -0
- package/src/XyoNode.ts +8 -0
- package/src/cli.ts +68 -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
|
available(): 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,SAAS;IAMT,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
|
available() {
|
|
16
|
-
return Array.from(this.
|
|
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.registeredModuleMap?.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.registeredModuleMap.set(address, module);
|
|
26
45
|
}
|
|
27
46
|
detatch(address) {
|
|
28
|
-
this.
|
|
47
|
+
this.registeredModuleMap.delete(address);
|
|
29
48
|
}
|
|
30
49
|
get(address) {
|
|
31
|
-
return this.
|
|
50
|
+
return this.registeredModuleMap.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,SAAS;QAChB,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,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;IACvD,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,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAEQ,OAAO,CAAC,OAAe;QAC9B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAEQ,GAAG,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartialConfig.d.ts","sourceRoot":"","sources":["../../src/PartialConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1E,oBAAY,mBAAmB,CAAC,CAAC,SAAS,eAAe,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartialConfig.js","sourceRoot":"","sources":["../../src/PartialConfig.ts"],"names":[],"mappings":""}
|
package/dist/esm/XyoNode.d.ts
CHANGED
|
@@ -7,8 +7,11 @@ export declare abstract class XyoNode<TConfig extends XyoModuleConfig = XyoModul
|
|
|
7
7
|
/** Query Functions - Start */
|
|
8
8
|
abstract attach(_address: string): void;
|
|
9
9
|
abstract detatch(_address: string): void;
|
|
10
|
+
abstract resolve(_address: string): XyoModule | null;
|
|
10
11
|
available(): string[];
|
|
11
12
|
attached(): string[];
|
|
13
|
+
availableModules(): XyoModule[];
|
|
14
|
+
attachedModules(): XyoModule[];
|
|
12
15
|
/** Query Functions - End */
|
|
13
16
|
query(query: TQuery): Promisable<XyoModuleQueryResult<TQueryResult>>;
|
|
14
17
|
register(_module: TModule): void;
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;IACxC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAEpD,SAAS,IAAI,MAAM,EAAE;IAGrB,QAAQ,IAAI,MAAM,EAAE;IAIpB,gBAAgB,IAAI,SAAS,EAAE;IAG/B,eAAe,IAAI,SAAS,EAAE;IAG9B,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
|
@@ -7,6 +7,12 @@ export class XyoNode extends XyoModule {
|
|
|
7
7
|
attached() {
|
|
8
8
|
throw new Error('Method not implemented.');
|
|
9
9
|
}
|
|
10
|
+
availableModules() {
|
|
11
|
+
throw new Error('Method not implemented.');
|
|
12
|
+
}
|
|
13
|
+
attachedModules() {
|
|
14
|
+
throw new Error('Method not implemented.');
|
|
15
|
+
}
|
|
10
16
|
/** Query Functions - End */
|
|
11
17
|
query(query) {
|
|
12
18
|
const payloads = [];
|
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,EAAyC,MAAM,qBAAqB,CAAA;AAKtF,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,yBAAyB,EAAgB,MAAM,WAAW,CAAA;AAEtJ,MAAM,OAAgB,OAMpB,SAAQ,SAAwC;
|
|
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;IAQhD,SAAS;QACP,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,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 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/esm/cli.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import yargs from 'yargs';
|
|
2
|
+
// eslint-disable-next-line import/no-internal-modules
|
|
3
|
+
import { hideBin } from 'yargs/helpers';
|
|
4
|
+
import { XyoMemoryNode } from './MemoryNode';
|
|
5
|
+
const parseOptions = () => {
|
|
6
|
+
return yargs(hideBin(process.argv))
|
|
7
|
+
.option('verbose', {
|
|
8
|
+
alias: 'v',
|
|
9
|
+
default: false,
|
|
10
|
+
description: 'Run with verbose logging',
|
|
11
|
+
type: 'boolean',
|
|
12
|
+
})
|
|
13
|
+
.option('module', {
|
|
14
|
+
alias: 'm',
|
|
15
|
+
description: 'Modules to load',
|
|
16
|
+
type: 'string',
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
const loadModule = async (pkg, name, resolver) => {
|
|
20
|
+
const loadedPkg = await import(pkg);
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
const ModuleConstructor = name ? loadedPkg[name] : loadedPkg;
|
|
23
|
+
return new ModuleConstructor(undefined, undefined, resolver);
|
|
24
|
+
};
|
|
25
|
+
const xyo = () => {
|
|
26
|
+
return parseOptions()
|
|
27
|
+
.command('node', 'Start an XYO Node', (yargs) => {
|
|
28
|
+
return yargs;
|
|
29
|
+
}, async (yargs) => {
|
|
30
|
+
console.log(`yargs: ${JSON.stringify(yargs, null, 2)}`);
|
|
31
|
+
const { verbose, module } = yargs;
|
|
32
|
+
const modules = Array.isArray(module) ? module : [module];
|
|
33
|
+
if (verbose)
|
|
34
|
+
console.info('Starting Node');
|
|
35
|
+
const node = new XyoMemoryNode();
|
|
36
|
+
const resolver = (address) => {
|
|
37
|
+
console.log(`Resolving: ${address}`);
|
|
38
|
+
return node.resolve(address);
|
|
39
|
+
};
|
|
40
|
+
await Promise.all(modules.map(async (module) => {
|
|
41
|
+
const [pkg, name] = module.split('.');
|
|
42
|
+
const instance = await loadModule(pkg, name, resolver);
|
|
43
|
+
console.log(`Arg: ${instance.address}`);
|
|
44
|
+
node.register(instance);
|
|
45
|
+
node.attach(instance.address);
|
|
46
|
+
console.log(`Module Loaded: ${instance.address}`);
|
|
47
|
+
}));
|
|
48
|
+
})
|
|
49
|
+
.help().argv;
|
|
50
|
+
};
|
|
51
|
+
void xyo();
|
|
52
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,sDAAsD;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChC,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,GAAG;QAEV,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,KAAK,EAAE,GAAW,EAAE,IAAa,EAAE,QAAgC,EAAsB,EAAE;IAC5G,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;IACnC,8DAA8D;IAC9D,MAAM,iBAAiB,GAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACjE,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,GAAG,GAAG,GAAG,EAAE;IACf,OAAO,YAAY,EAAE;SAClB,OAAO,CACN,MAAM,EACN,mBAAmB,EACnB,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK,CAAA;IACd,CAAC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACvD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAE1C,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAA;QAEhC,MAAM,QAAQ,GAA0B,CAAC,OAAe,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAA;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC,CAAA;QAED,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;YACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAE7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC,CAAC,CACH,CAAA;IACH,CAAC,CACF;SACA,IAAI,EAAE,CAAC,IAAI,CAAA;AAChB,CAAC,CAAA;AAED,KAAK,GAAG,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -11,11 +11,19 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.6.7",
|
|
14
|
-
"@xyo-network/
|
|
15
|
-
"@xyo-network/
|
|
16
|
-
"@xyo-network/
|
|
14
|
+
"@xyo-network/archivist": "^2.32.1",
|
|
15
|
+
"@xyo-network/module": "^2.32.1",
|
|
16
|
+
"@xyo-network/payload": "^2.32.1",
|
|
17
|
+
"@xyo-network/promisable": "^2.32.1",
|
|
17
18
|
"lodash": "^4.17.21",
|
|
18
|
-
"tslib": "^2.4.0"
|
|
19
|
+
"tslib": "^2.4.0",
|
|
20
|
+
"yargs": "^17.5.1"
|
|
21
|
+
},
|
|
22
|
+
"bin": {
|
|
23
|
+
"xyo": "dist/cjs/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"ts-node": "^10.9.1"
|
|
19
27
|
},
|
|
20
28
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
21
29
|
"browser": "dist/esm/index.js",
|
|
@@ -49,7 +57,9 @@
|
|
|
49
57
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
50
58
|
},
|
|
51
59
|
"sideEffects": false,
|
|
60
|
+
"scripts": {
|
|
61
|
+
"xyo-ts": "ts-node src/cli.ts"
|
|
62
|
+
},
|
|
52
63
|
"types": "dist/esm/index.d.ts",
|
|
53
|
-
"version": "2.32.
|
|
54
|
-
"stableVersion": "2.31.5"
|
|
64
|
+
"version": "2.32.1"
|
|
55
65
|
}
|
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)
|
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
28
|
override available() {
|
|
28
|
-
return Array.from(this.
|
|
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.registeredModuleMap?.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.registeredModuleMap.set(address, module)
|
|
40
62
|
}
|
|
41
63
|
|
|
42
64
|
override detatch(address: string) {
|
|
43
|
-
this.
|
|
65
|
+
this.registeredModuleMap.delete(address)
|
|
44
66
|
}
|
|
45
67
|
|
|
46
68
|
override get(address: string) {
|
|
47
|
-
return this.
|
|
69
|
+
return this.registeredModuleMap.get(address)
|
|
48
70
|
}
|
|
49
71
|
}
|
package/src/XyoNode.ts
CHANGED
|
@@ -17,6 +17,7 @@ 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
|
available(): string[] {
|
|
22
23
|
throw new Error('Method not implemented.')
|
|
@@ -24,6 +25,13 @@ export abstract class XyoNode<
|
|
|
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
37
|
query(query: TQuery): Promisable<XyoModuleQueryResult<TQueryResult>> {
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { XyoModule, XyoModuleResolverFunc } from '@xyo-network/module'
|
|
2
|
+
import yargs from 'yargs'
|
|
3
|
+
// eslint-disable-next-line import/no-internal-modules
|
|
4
|
+
import { hideBin } from 'yargs/helpers'
|
|
5
|
+
|
|
6
|
+
import { XyoMemoryNode } from './MemoryNode'
|
|
7
|
+
|
|
8
|
+
const parseOptions = () => {
|
|
9
|
+
return yargs(hideBin(process.argv))
|
|
10
|
+
.option('verbose', {
|
|
11
|
+
alias: 'v',
|
|
12
|
+
default: false,
|
|
13
|
+
description: 'Run with verbose logging',
|
|
14
|
+
type: 'boolean',
|
|
15
|
+
})
|
|
16
|
+
.option('module', {
|
|
17
|
+
alias: 'm',
|
|
18
|
+
|
|
19
|
+
description: 'Modules to load',
|
|
20
|
+
type: 'string',
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const loadModule = async (pkg: string, name?: string, resolver?: XyoModuleResolverFunc): Promise<XyoModule> => {
|
|
25
|
+
const loadedPkg = await import(pkg)
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
const ModuleConstructor: any = name ? loadedPkg[name] : loadedPkg
|
|
28
|
+
return new ModuleConstructor(undefined, undefined, resolver)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const xyo = () => {
|
|
32
|
+
return parseOptions()
|
|
33
|
+
.command(
|
|
34
|
+
'node',
|
|
35
|
+
'Start an XYO Node',
|
|
36
|
+
(yargs) => {
|
|
37
|
+
return yargs
|
|
38
|
+
},
|
|
39
|
+
async (yargs) => {
|
|
40
|
+
console.log(`yargs: ${JSON.stringify(yargs, null, 2)}`)
|
|
41
|
+
const { verbose, module } = yargs
|
|
42
|
+
const modules = Array.isArray(module) ? module : [module]
|
|
43
|
+
if (verbose) console.info('Starting Node')
|
|
44
|
+
|
|
45
|
+
const node = new XyoMemoryNode()
|
|
46
|
+
|
|
47
|
+
const resolver: XyoModuleResolverFunc = (address: string) => {
|
|
48
|
+
console.log(`Resolving: ${address}`)
|
|
49
|
+
return node.resolve(address)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
await Promise.all(
|
|
53
|
+
modules.map(async (module) => {
|
|
54
|
+
const [pkg, name] = module.split('.')
|
|
55
|
+
const instance = await loadModule(pkg, name, resolver)
|
|
56
|
+
console.log(`Arg: ${instance.address}`)
|
|
57
|
+
node.register(instance)
|
|
58
|
+
node.attach(instance.address)
|
|
59
|
+
|
|
60
|
+
console.log(`Module Loaded: ${instance.address}`)
|
|
61
|
+
}),
|
|
62
|
+
)
|
|
63
|
+
},
|
|
64
|
+
)
|
|
65
|
+
.help().argv
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
void xyo()
|