@xyo-network/node 2.32.0 → 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.
@@ -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 registeredModules;
7
- private attachedModules;
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":"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;IAEpC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;IAIpC,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"}
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"}
@@ -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
- registeredModules = new Map();
6
- attachedModules = new Map();
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.attachedModules.keys()).map(([key]) => {
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.registeredModules.keys()).map(([key]) => {
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.registeredModules.set(module.address, module);
40
+ this.registeredModuleMap.set(module.address, module);
22
41
  }
23
42
  attach(address) {
24
- const module = assertEx(this.registeredModules.get(address), 'No module found at that address');
25
- this.attachedModules.set(address, module);
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.attachedModules.delete(address);
47
+ this.registeredModuleMap.delete(address);
29
48
  }
30
49
  get(address) {
31
- return this.attachedModules.get(address);
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;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;IAEpC,OAAO;QACrB,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"}
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"}
@@ -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;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"}
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"}
@@ -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 = [];
@@ -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;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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -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/module": "^2.32.0",
15
- "@xyo-network/payload": "^2.32.0",
16
- "@xyo-network/promisable": "^2.32.0",
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,6 +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.0"
64
+ "version": "2.32.1"
54
65
  }
@@ -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 registeredModules = new Map<string, TModule>()
15
- private attachedModules = new Map<string, TModule>()
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.attachedModules.keys()).map(([key]) => {
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.registeredModules.keys()).map(([key]) => {
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.registeredModules.set(module.address, module)
56
+ this.registeredModuleMap.set(module.address, module)
35
57
  }
36
58
 
37
59
  override attach(address: string) {
38
- const module = assertEx(this.registeredModules.get(address), 'No module found at that address')
39
- this.attachedModules.set(address, module)
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.attachedModules.delete(address)
65
+ this.registeredModuleMap.delete(address)
44
66
  }
45
67
 
46
68
  override get(address: string) {
47
- return this.attachedModules.get(address)
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()