@xyo-network/node 2.42.11 → 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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"}
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.11",
15
- "@xyo-network/address-payload-plugin": "^2.42.11",
16
- "@xyo-network/archivist": "^2.42.11",
17
- "@xyo-network/module": "^2.42.11",
18
- "@xyo-network/payload": "^2.42.11",
19
- "@xyo-network/promise": "^2.42.11",
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.11"
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) => {