@xyo-network/node 2.42.10 → 2.42.12

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.
@@ -1,3 +1,4 @@
1
+ import { Account } from '@xyo-network/account';
1
2
  import { AbstractModule, Module, ModuleDescription, ModuleFilter, ModuleParams, ModuleQueryResult, SimpleModuleResolver, XyoQueryBoundWitness } from '@xyo-network/module';
2
3
  import { XyoPayload } from '@xyo-network/payload';
3
4
  import { Promisable } from '@xyo-network/promise';
@@ -13,6 +14,7 @@ export declare abstract class AbstractNode<TConfig extends NodeConfig = NodeConf
13
14
  attached(): Promise<string[]>;
14
15
  attachedModules(): Promise<TModule[]>;
15
16
  description(): Promise<ModuleDescription>;
17
+ discover(_queryAccount?: Account | undefined): Promise<XyoPayload[]>;
16
18
  queries(): string[];
17
19
  query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness>(query: T, payloads?: XyoPayload[]): Promise<ModuleQueryResult>;
18
20
  register(_module: TModule): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAEjB,oBAAoB,EAEpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CACzG,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,UAAU;IAErB,MAAM,CAAC,YAAY,4BAAmB;IAC/B,gBAAgB,UAAO;IAE9B,SAAS,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAA;IACzD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAE3B,SAAS,aAAa,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC;WAK/E,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAIzF,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5B,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAMxC,OAAO;IAIR,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2C1I,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,UAAU,IAAI,MAAM,EAAE;IAItB,iBAAiB,IAAI,OAAO,EAAE;IAIf,KAAK;IAKpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAClE;AAED,2CAA2C;AAC3C,8BAAsB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY,CAC1I,OAAO,EACP,OAAO,CACR;CAAG"}
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EACL,cAAc,EAGd,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAGjB,oBAAoB,EAEpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAkB,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAKzC,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CACzG,SAAQ,cAAc,CAAC,OAAO,CAC9B,YAAW,UAAU;IAErB,MAAM,CAAC,YAAY,4BAAmB;IAC/B,gBAAgB,UAAO;IAE9B,SAAS,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAA;IACzD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAE3B,SAAS,aAAa,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC;WAK/E,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAIzF,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5B,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKzC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAyBnE,OAAO;IAIR,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2C1I,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,UAAU,IAAI,MAAM,EAAE;IAItB,iBAAiB,IAAI,OAAO,EAAE;IAIf,KAAK;IAKpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAClE;AAED,2CAA2C;AAC3C,8BAAsB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY,CAC1I,OAAO,EACP,OAAO,CACR;CAAG"}
@@ -1,10 +1,11 @@
1
1
  import { assertEx } from '@xylabs/assert';
2
2
  import { Account } from '@xyo-network/account';
3
3
  import { AddressSchema } from '@xyo-network/address-payload-plugin';
4
- import { AbstractModule, QueryBoundWitnessWrapper, SimpleModuleResolver, XyoErrorBuilder, } from '@xyo-network/module';
5
- import { XyoPayloadBuilder } from '@xyo-network/payload';
4
+ import { AbstractModule, AbstractModuleDiscoverQuerySchema, QueryBoundWitnessWrapper, SimpleModuleResolver, XyoErrorBuilder, } from '@xyo-network/module';
5
+ import { PayloadWrapper, XyoPayloadBuilder } from '@xyo-network/payload';
6
6
  import { NodeConfigSchema } from './Config';
7
7
  import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeRegisteredQuerySchema } from './Queries';
8
+ const childModuleDiscoverQueryPayload = PayloadWrapper.parse({ schema: AbstractModuleDiscoverQuerySchema });
8
9
  export class AbstractNode extends AbstractModule {
9
10
  static configSchema = NodeConfigSchema;
10
11
  isModuleResolver = true;
@@ -28,6 +29,30 @@ export class AbstractNode extends AbstractModule {
28
29
  const children = await Promise.all((await this.attachedModules()).map((mod) => mod.description()));
29
30
  return { ...desc, children };
30
31
  }
32
+ async discover(_queryAccount) {
33
+ const parent = await super.discover(_queryAccount);
34
+ // const childMods = (await this.attachedModules()).map((mod) => new ModuleWrapper(mod))
35
+ // const query = await this.bindQuery(childModuleDiscoverQueryPayload)
36
+ // const childModQueryResults = await Promise.all(
37
+ // childMods.map((mod) => {
38
+ // try {
39
+ // return mod.query(query[0], query[1])
40
+ // } catch {
41
+ // // TODO: remove this once we ensure all modules
42
+ // // implement discover query
43
+ // return undefined
44
+ // }
45
+ // }),
46
+ // )
47
+ // const children = compact(childModQueryResults)
48
+ // .map((result) => {
49
+ // const [bw, payloads] = result
50
+ // return [bw, ...payloads]
51
+ // })
52
+ // .flatMap((x) => x)
53
+ // return [...parent, ...children]
54
+ return parent;
55
+ }
31
56
  queries() {
32
57
  return [XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeAttachedQuerySchema, XyoNodeRegisteredQuerySchema, ...super.queries()];
33
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.js","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractNode.js","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import { ArchivistWrapper } from '@xyo-network/archivist';
2
- import { AbstractModule, Module, ModuleFilter, ModuleWrapper } from '@xyo-network/module';
2
+ import { Module, ModuleFilter, ModuleWrapper } from '@xyo-network/module';
3
3
  import { Promisable } from '@xyo-network/promise';
4
- import { AbstractNode } from './AbstractNode';
5
4
  import { NodeModule } from './NodeModule';
6
- export declare class NodeWrapper<TModule extends AbstractNode = AbstractNode> extends ModuleWrapper<TModule> implements NodeModule {
5
+ export declare class NodeWrapper<TModule extends NodeModule = NodeModule> extends ModuleWrapper<TModule> implements NodeModule {
7
6
  isModuleResolver: boolean;
8
7
  private _archivist?;
9
8
  get archivist(): ArchivistWrapper;
@@ -11,11 +10,11 @@ export declare class NodeWrapper<TModule extends AbstractNode = AbstractNode> ex
11
10
  attached(): Promise<string[]>;
12
11
  attachedModules(): Promise<Module[]>;
13
12
  detach(address: string): Promise<void>;
14
- register(mod: AbstractModule): void;
13
+ register(mod: Module): Promisable<void>;
15
14
  registered(): Promise<string[]>;
16
15
  registeredModules(): Promise<Module[]>;
17
16
  resolve(filter: ModuleFilter): Promisable<Module[]>;
18
17
  tryResolve(filter: ModuleFilter): Promisable<Module[]>;
19
- unregister(mod: AbstractModule): void;
18
+ unregister(mod: Module): Promisable<void>;
20
19
  }
21
20
  //# sourceMappingURL=NodeWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWrapper.d.ts","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEzF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAYzC,qBAAa,WAAW,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,CAAE,SAAQ,aAAa,CAAC,OAAO,CAAE,YAAW,UAAU;IACjH,gBAAgB,UAAO;IAE9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,IAAW,SAAS,qBAGnB;IAEK,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKpC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAI7B,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM/B,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI5C,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAInD,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAItD,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;CAGtC"}
1
+ {"version":3,"file":"NodeWrapper.d.ts","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAYzC,qBAAa,WAAW,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,aAAa,CAAC,OAAO,CAAE,YAAW,UAAU;IAC7G,gBAAgB,UAAO;IAE9B,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,IAAW,SAAS,qBAGnB;IAEK,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKpC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;IAIjC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM/B,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI5C,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAInD,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;IAItD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;CAG1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWrapper.js","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NodeWrapper.js","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -11,12 +11,12 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.6.11",
14
- "@xyo-network/account": "^2.42.10",
15
- "@xyo-network/address-payload-plugin": "^2.42.10",
16
- "@xyo-network/archivist": "^2.42.10",
17
- "@xyo-network/module": "^2.42.10",
18
- "@xyo-network/payload": "^2.42.10",
19
- "@xyo-network/promise": "^2.42.10",
14
+ "@xyo-network/account": "^2.42.12",
15
+ "@xyo-network/address-payload-plugin": "^2.42.12",
16
+ "@xyo-network/archivist": "^2.42.12",
17
+ "@xyo-network/module": "^2.42.12",
18
+ "@xyo-network/payload": "^2.42.12",
19
+ "@xyo-network/promise": "^2.42.12",
20
20
  "lodash": "^4.17.21",
21
21
  "tslib": "^2.4.1"
22
22
  },
@@ -62,5 +62,5 @@
62
62
  },
63
63
  "sideEffects": false,
64
64
  "types": "dist/esm/index.d.ts",
65
- "version": "2.42.10"
65
+ "version": "2.42.12"
66
66
  }
@@ -3,23 +3,29 @@ import { Account } from '@xyo-network/account'
3
3
  import { AddressSchema } from '@xyo-network/address-payload-plugin'
4
4
  import {
5
5
  AbstractModule,
6
+ AbstractModuleDiscoverQuery,
7
+ AbstractModuleDiscoverQuerySchema,
6
8
  Module,
7
9
  ModuleDescription,
8
10
  ModuleFilter,
9
11
  ModuleParams,
10
12
  ModuleQueryResult,
13
+ ModuleWrapper,
11
14
  QueryBoundWitnessWrapper,
12
15
  SimpleModuleResolver,
13
16
  XyoErrorBuilder,
14
17
  XyoQueryBoundWitness,
15
18
  } from '@xyo-network/module'
16
- import { XyoPayload, XyoPayloadBuilder } from '@xyo-network/payload'
19
+ import { PayloadWrapper, XyoPayload, XyoPayloadBuilder } from '@xyo-network/payload'
17
20
  import { Promisable } from '@xyo-network/promise'
21
+ import compact from 'lodash/compact'
18
22
 
19
23
  import { NodeConfig, NodeConfigSchema } from './Config'
20
24
  import { NodeModule } from './NodeModule'
21
25
  import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeQuery, XyoNodeRegisteredQuerySchema } from './Queries'
22
26
 
27
+ const childModuleDiscoverQueryPayload = PayloadWrapper.parse<AbstractModuleDiscoverQuery>({ schema: AbstractModuleDiscoverQuerySchema })
28
+
23
29
  export abstract class AbstractNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module>
24
30
  extends AbstractModule<TConfig>
25
31
  implements NodeModule
@@ -52,6 +58,30 @@ export abstract class AbstractNode<TConfig extends NodeConfig = NodeConfig, TMod
52
58
  const children = await Promise.all((await this.attachedModules()).map((mod) => mod.description()))
53
59
  return { ...desc, children }
54
60
  }
61
+ override async discover(_queryAccount?: Account | undefined): Promise<XyoPayload[]> {
62
+ const parent = await super.discover(_queryAccount)
63
+ // const childMods = (await this.attachedModules()).map((mod) => new ModuleWrapper(mod))
64
+ // const query = await this.bindQuery(childModuleDiscoverQueryPayload)
65
+ // const childModQueryResults = await Promise.all(
66
+ // childMods.map((mod) => {
67
+ // try {
68
+ // return mod.query(query[0], query[1])
69
+ // } catch {
70
+ // // TODO: remove this once we ensure all modules
71
+ // // implement discover query
72
+ // return undefined
73
+ // }
74
+ // }),
75
+ // )
76
+ // const children = compact(childModQueryResults)
77
+ // .map((result) => {
78
+ // const [bw, payloads] = result
79
+ // return [bw, ...payloads]
80
+ // })
81
+ // .flatMap((x) => x)
82
+ // return [...parent, ...children]
83
+ return parent
84
+ }
55
85
 
56
86
  public override queries() {
57
87
  return [XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeAttachedQuerySchema, XyoNodeRegisteredQuerySchema, ...super.queries()]
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable max-statements */
2
+ import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
2
3
  import { ArchivistWrapper, MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist'
3
4
  import {
4
5
  ArchivistPayloadDiviner,
@@ -8,7 +9,7 @@ import {
8
9
  XyoHuriPayload,
9
10
  XyoHuriSchema,
10
11
  } from '@xyo-network/diviner'
11
- import { AbstractModule, ModuleDescription, SimpleModuleResolver } from '@xyo-network/module'
12
+ import { AbstractModule, Module, ModuleDescription, SimpleModuleResolver } from '@xyo-network/module'
12
13
  import { Account, PayloadWrapper, XyoPayload, XyoPayloadBuilder, XyoPayloadSchema } from '@xyo-network/protocol'
13
14
 
14
15
  import { NodeConfigSchema } from './Config'
@@ -248,6 +249,65 @@ describe('MemoryNode', () => {
248
249
  })
249
250
  })
250
251
  })
252
+ describe('discover', () => {
253
+ const archivistConfig = { schema: MemoryArchivistConfigSchema }
254
+ const validateDiscoveryResponse = (mod: Module, response: XyoPayload[]) => {
255
+ expect(response).toBeArray()
256
+ const address = response.find((p) => p.schema === AddressSchema) as AddressPayload
257
+ expect(address).toBeObject()
258
+ expect(address.address).toEqual(mod.address)
259
+ const config = response.find((p) => p.schema === mod.config.schema)
260
+ expect(config).toBeObject()
261
+ expect(config).toEqual(mod.config)
262
+ const queries = response.filter((p) => mod.queries().includes(p.schema))
263
+ expect(queries.length).toBeGreaterThanOrEqual(0)
264
+ queries.map((query) => {
265
+ expect(query).toBeObject()
266
+ })
267
+ }
268
+ describe('node without child modules', () => {
269
+ it('describes node alone', async () => {
270
+ const description = await node.discover()
271
+ validateDiscoveryResponse(node, description)
272
+ })
273
+ })
274
+ describe('node with child modules', () => {
275
+ beforeEach(async () => {
276
+ const modules = await Promise.all([
277
+ await MemoryArchivist.create({ account: testAccount2, config: archivistConfig }),
278
+ await MemoryArchivist.create({ account: testAccount3, config: archivistConfig }),
279
+ ])
280
+ modules.map((mod) => {
281
+ node.register(mod)
282
+ node.attach(mod.address)
283
+ })
284
+ })
285
+ it('describes node and child modules', async () => {
286
+ const description = await node.discover()
287
+ validateDiscoveryResponse(node, description)
288
+ })
289
+ })
290
+ describe('node with nested nodes and modules', () => {
291
+ beforeEach(async () => {
292
+ const nestedNode = await MemoryNode.create({ account: testAccount2, config: nodeConfig })
293
+ const nestedModules = await Promise.all([await MemoryArchivist.create({ account: testAccount3, config: archivistConfig })])
294
+ nestedModules.map((mod) => {
295
+ nestedNode.register(mod)
296
+ nestedNode.attach(mod.address)
297
+ })
298
+ const rootModules: AbstractModule[] = await Promise.all([await MemoryArchivist.create({ account: testAccount4, config: archivistConfig })])
299
+ rootModules.push(nestedNode)
300
+ rootModules.map((mod) => {
301
+ node.register(mod)
302
+ node.attach(mod.address)
303
+ })
304
+ })
305
+ it('describes node and all nested nodes and child modules', async () => {
306
+ const description = await node.discover()
307
+ validateDiscoveryResponse(node, description)
308
+ })
309
+ })
310
+ })
251
311
  })
252
312
 
253
313
  const prettyPrintDescription = (description: ModuleDescription) => {
@@ -1,11 +1,10 @@
1
1
  import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
2
2
  import { ArchivistWrapper } from '@xyo-network/archivist'
3
- import { AbstractModule, Module, ModuleFilter, ModuleWrapper } from '@xyo-network/module'
3
+ import { Module, ModuleFilter, ModuleWrapper } from '@xyo-network/module'
4
4
  import { isXyoPayloadOfSchemaType, PayloadWrapper } from '@xyo-network/payload'
5
5
  import { Promisable } from '@xyo-network/promise'
6
6
  import compact from 'lodash/compact'
7
7
 
8
- import { AbstractNode } from './AbstractNode'
9
8
  import { NodeModule } from './NodeModule'
10
9
  import {
11
10
  XyoNodeAttachedQuery,
@@ -18,7 +17,7 @@ import {
18
17
  XyoNodeRegisteredQuerySchema,
19
18
  } from './Queries'
20
19
 
21
- export class NodeWrapper<TModule extends AbstractNode = AbstractNode> extends ModuleWrapper<TModule> implements NodeModule {
20
+ export class NodeWrapper<TModule extends NodeModule = NodeModule> extends ModuleWrapper<TModule> implements NodeModule {
22
21
  public isModuleResolver = true
23
22
 
24
23
  private _archivist?: ArchivistWrapper
@@ -49,7 +48,7 @@ export class NodeWrapper<TModule extends AbstractNode = AbstractNode> extends Mo
49
48
  await this.sendQuery(queryPayload)
50
49
  }
51
50
 
52
- register(mod: AbstractModule): void {
51
+ register(mod: Module): Promisable<void> {
53
52
  return this.module.register(mod)
54
53
  }
55
54
 
@@ -71,7 +70,7 @@ export class NodeWrapper<TModule extends AbstractNode = AbstractNode> extends Mo
71
70
  return this.module.tryResolve(filter)
72
71
  }
73
72
 
74
- unregister(mod: AbstractModule): void {
73
+ unregister(mod: Module): Promisable<void> {
75
74
  return this.module.unregister(mod)
76
75
  }
77
76
  }