@xyo-network/node 2.31.5 → 2.32.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/cjs/MemoryNode.d.ts +16 -0
  2. package/dist/cjs/MemoryNode.d.ts.map +1 -0
  3. package/dist/cjs/MemoryNode.js +41 -0
  4. package/dist/cjs/MemoryNode.js.map +1 -0
  5. package/dist/cjs/Node.d.ts +9 -7
  6. package/dist/cjs/Node.d.ts.map +1 -1
  7. package/dist/cjs/Queries/Attach.d.ts +8 -0
  8. package/dist/cjs/Queries/Attach.d.ts.map +1 -0
  9. package/dist/cjs/Queries/Attach.js +5 -0
  10. package/dist/cjs/Queries/Attach.js.map +1 -0
  11. package/dist/cjs/Queries/Attached.d.ts +7 -0
  12. package/dist/cjs/Queries/Attached.d.ts.map +1 -0
  13. package/dist/cjs/Queries/Attached.js +5 -0
  14. package/dist/cjs/Queries/Attached.js.map +1 -0
  15. package/dist/cjs/Queries/Available.d.ts +7 -0
  16. package/dist/cjs/Queries/Available.d.ts.map +1 -0
  17. package/dist/cjs/Queries/Available.js +5 -0
  18. package/dist/cjs/Queries/Available.js.map +1 -0
  19. package/dist/cjs/Queries/Detatch.d.ts +8 -0
  20. package/dist/cjs/Queries/Detatch.d.ts.map +1 -0
  21. package/dist/cjs/Queries/Detatch.js +5 -0
  22. package/dist/cjs/Queries/Detatch.js.map +1 -0
  23. package/dist/cjs/Queries/index.d.ts +11 -0
  24. package/dist/cjs/Queries/index.d.ts.map +1 -0
  25. package/dist/cjs/Queries/index.js +8 -0
  26. package/dist/cjs/Queries/index.js.map +1 -0
  27. package/dist/cjs/XyoNode.d.ts +13 -8
  28. package/dist/cjs/XyoNode.d.ts.map +1 -1
  29. package/dist/cjs/XyoNode.js +28 -10
  30. package/dist/cjs/XyoNode.js.map +1 -1
  31. package/dist/cjs/XyoNodeWrapper.d.ts +9 -0
  32. package/dist/cjs/XyoNodeWrapper.d.ts.map +1 -0
  33. package/dist/cjs/XyoNodeWrapper.js +37 -0
  34. package/dist/cjs/XyoNodeWrapper.js.map +1 -0
  35. package/dist/docs.json +3224 -882
  36. package/dist/esm/MemoryNode.d.ts +16 -0
  37. package/dist/esm/MemoryNode.d.ts.map +1 -0
  38. package/dist/esm/MemoryNode.js +34 -0
  39. package/dist/esm/MemoryNode.js.map +1 -0
  40. package/dist/esm/Node.d.ts +9 -7
  41. package/dist/esm/Node.d.ts.map +1 -1
  42. package/dist/esm/Queries/Attach.d.ts +8 -0
  43. package/dist/esm/Queries/Attach.d.ts.map +1 -0
  44. package/dist/esm/Queries/Attach.js +2 -0
  45. package/dist/esm/Queries/Attach.js.map +1 -0
  46. package/dist/esm/Queries/Attached.d.ts +7 -0
  47. package/dist/esm/Queries/Attached.d.ts.map +1 -0
  48. package/dist/esm/Queries/Attached.js +2 -0
  49. package/dist/esm/Queries/Attached.js.map +1 -0
  50. package/dist/esm/Queries/Available.d.ts +7 -0
  51. package/dist/esm/Queries/Available.d.ts.map +1 -0
  52. package/dist/esm/Queries/Available.js +2 -0
  53. package/dist/esm/Queries/Available.js.map +1 -0
  54. package/dist/esm/Queries/Detatch.d.ts +8 -0
  55. package/dist/esm/Queries/Detatch.d.ts.map +1 -0
  56. package/dist/esm/Queries/Detatch.js +2 -0
  57. package/dist/esm/Queries/Detatch.js.map +1 -0
  58. package/dist/esm/Queries/index.d.ts +11 -0
  59. package/dist/esm/Queries/index.d.ts.map +1 -0
  60. package/dist/esm/Queries/index.js +5 -0
  61. package/dist/esm/Queries/index.js.map +1 -0
  62. package/dist/esm/XyoNode.d.ts +13 -8
  63. package/dist/esm/XyoNode.d.ts.map +1 -1
  64. package/dist/esm/XyoNode.js +28 -10
  65. package/dist/esm/XyoNode.js.map +1 -1
  66. package/dist/esm/XyoNodeWrapper.d.ts +9 -0
  67. package/dist/esm/XyoNodeWrapper.d.ts.map +1 -0
  68. package/dist/esm/XyoNodeWrapper.js +24 -0
  69. package/dist/esm/XyoNodeWrapper.js.map +1 -0
  70. package/package.json +7 -4
  71. package/src/MemoryNode.spec.ts +54 -0
  72. package/src/MemoryNode.ts +49 -0
  73. package/src/Node.ts +11 -7
  74. package/src/Queries/Attach.ts +9 -0
  75. package/src/Queries/Attached.ts +8 -0
  76. package/src/Queries/Available.ts +8 -0
  77. package/src/Queries/Detatch.ts +9 -0
  78. package/src/Queries/index.ts +13 -0
  79. package/src/XyoNode.ts +45 -13
  80. package/src/XyoNodeWrapper.ts +35 -0
  81. package/dist/cjs/Simple.d.ts +0 -16
  82. package/dist/cjs/Simple.d.ts.map +0 -1
  83. package/dist/cjs/Simple.js +0 -33
  84. package/dist/cjs/Simple.js.map +0 -1
  85. package/dist/esm/Simple.d.ts +0 -16
  86. package/dist/esm/Simple.d.ts.map +0 -1
  87. package/dist/esm/Simple.js +0 -22
  88. package/dist/esm/Simple.js.map +0 -1
  89. package/src/Simple.spec.ts +0 -59
  90. 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
+ 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;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"}
@@ -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
+ 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;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,10 +1,12 @@
1
- import { XyoModule, XyoModuleQueryResult, XyoQueryPayload } from '@xyo-network/module';
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<TModule extends XyoModule = XyoModule> {
4
- attach(module: TModule): void;
5
- remove(address: string): void;
6
- list(): string[];
7
- get(address: string): TModule | undefined;
8
- query(address: string, query: XyoQueryPayload): Promisable<XyoModuleQueryResult | undefined>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/Node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,MAAM,WAAW,IAAI,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS;IACzD,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,IAAI,IAAI,MAAM,EAAE,CAAA;IAChB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IACzC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAA;CAC7F"}
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,2 @@
1
+ export const XyoNodeAttachQuerySchema = 'network.xyo.query.node.attach';
2
+ //# sourceMappingURL=Attach.js.map
@@ -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,2 @@
1
+ export const XyoNodeAttachedQuerySchema = 'network.xyo.query.node.attached';
2
+ //# sourceMappingURL=Attached.js.map
@@ -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,2 @@
1
+ export const XyoNodeAvailableQuerySchema = 'network.xyo.query.node.available';
2
+ //# sourceMappingURL=Available.js.map
@@ -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,2 @@
1
+ export const XyoNodeDetatchQuerySchema = 'network.xyo.query.node.detatch';
2
+ //# sourceMappingURL=Detatch.js.map
@@ -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,5 @@
1
+ export * from './Attach';
2
+ export * from './Attached';
3
+ export * from './Available';
4
+ export * from './Detatch';
5
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -1,12 +1,17 @@
1
- import { XyoModule, XyoModuleQueryResult, XyoQueryPayload } from '@xyo-network/module';
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 { Node } from './Node';
5
- export declare abstract class XyoNode<TModule extends XyoModule = XyoModule> implements Node<TModule> {
6
- list(): string[];
7
- attach(module: TModule): void;
8
- remove(address: string): void;
9
- get(address: string): TModule | undefined;
10
- query(address: string, query: XyoQueryPayload<XyoPayload>): Promisable<XyoModuleQueryResult | undefined>;
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":"AAEA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,8BAAsB,OAAO,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS,CAAE,YAAW,IAAI,CAAC,OAAO,CAAC;IAC3F,IAAI,IAAI,MAAM,EAAE;IAGhB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAG7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG7B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAGzC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAGzG"}
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,18 +1,36 @@
1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
- export class XyoNode {
3
- list() {
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
- attach(module) {
7
+ attached() {
7
8
  throw new Error('Method not implemented.');
8
9
  }
9
- remove(address) {
10
- throw new Error('Method not implemented.');
11
- }
12
- get(address) {
13
- throw new Error('Method not implemented.');
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
- query(address, query) {
33
+ register(_module) {
16
34
  throw new Error('Method not implemented.');
17
35
  }
18
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAQtD,MAAM,OAAgB,OAAO;IAC3B,IAAI;QACF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,CAAC,MAAe;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,CAAC,OAAe;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,GAAG,CAAC,OAAe;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,KAAkC;QACvD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;CACF"}
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
- "@xyo-network/module": "^2.31.5",
14
- "@xyo-network/payload": "^2.31.5",
15
- "@xyo-network/promisable": "^2.31.5",
13
+ "@xylabs/assert": "^2.6.7",
14
+ "@xyo-network/module": "^2.32.0-rc.3",
15
+ "@xyo-network/payload": "^2.32.0-rc.3",
16
+ "@xyo-network/promisable": "^2.32.0-rc.3",
17
+ "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.31.5"
53
+ "version": "2.32.0-rc.3",
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 override 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 { XyoModule, XyoModuleQueryResult, XyoQueryPayload } from '@xyo-network/module'
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<TModule extends XyoModule = XyoModule> {
5
- attach(module: TModule): void
6
- remove(address: string): void
7
- list(): string[]
8
- get(address: string): TModule | undefined
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
- /* eslint-disable @typescript-eslint/no-unused-vars */
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 { Node } from './Node'
5
+ import { NodeModule } from './Node'
6
+ import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeAvailableQuerySchema, XyoNodeDetatchQuerySchema, XyoNodeQuery } from './Queries'
8
7
 
9
- export abstract class XyoNode<TModule extends XyoModule = XyoModule> implements Node<TModule> {
10
- list(): string[] {
11
- throw new Error('Method not implemented.')
12
- }
13
- attach(module: TModule): void {
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
- remove(address: string): void {
24
+ attached(): string[] {
17
25
  throw new Error('Method not implemented.')
18
26
  }
19
- get(address: string): TModule | undefined {
20
- throw new Error('Method not implemented.')
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
- query(address: string, query: XyoQueryPayload<XyoPayload>): Promisable<XyoModuleQueryResult | undefined> {
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
  }