@xyo-network/node 2.41.0 → 2.41.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.
@@ -1,19 +1,16 @@
1
- import { Module, XyoModuleParams } from '@xyo-network/module';
1
+ import { ModuleFilter, XyoModule, XyoModuleParams } from '@xyo-network/module';
2
2
  import { NodeConfig } from './Config';
3
3
  import { XyoNode } from './XyoNode';
4
- export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends XyoNode<TConfig, TModule> {
5
- private attachedModuleMap;
4
+ export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends XyoModule = XyoModule> extends XyoNode<TConfig, TModule> {
6
5
  private registeredModuleMap;
7
6
  static create(params?: XyoModuleParams<NodeConfig>): Promise<MemoryNode>;
8
7
  attach(address: string): void;
9
- attached(): string[];
10
- attachedModules(): TModule[];
11
8
  detach(address: string): void;
12
- find(schema: string[]): (TModule | null)[];
13
9
  queries(): string[];
14
10
  register(module: TModule): void;
15
11
  registered(): string[];
16
12
  registeredModules(): TModule[];
17
- resolve(addresses: string[]): (TModule | null)[];
13
+ resolve(filter: ModuleFilter): Promise<TModule[]>;
14
+ unregister(module: TModule): void;
18
15
  }
19
16
  //# sourceMappingURL=MemoryNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACjI,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,mBAAmB,CAA6B;WAElC,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9E,MAAM,CAAC,OAAO,EAAE,MAAM;IAKtB,QAAQ;IAMR,eAAe;IAMf,MAAM,CAAC,OAAO,EAAE,MAAM;IAItB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE;IAWnC,OAAO,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,MAAM,EAAE,OAAO;IAIxB,UAAU;IAMV,iBAAiB;IAMjB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE;CAM1D"}
1
+ {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACvI,OAAO,CAAC,mBAAmB,CAA6B;WAElC,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9E,MAAM,CAAC,OAAO,EAAE,MAAM;IAKtB,MAAM,CAAC,OAAO,EAAE,MAAM;IAIf,OAAO,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,MAAM,EAAE,OAAO;IAKxB,UAAU;IAMV,iBAAiB;IAMX,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvD,UAAU,CAAC,MAAM,EAAE,OAAO;CAGpC"}
@@ -1,44 +1,23 @@
1
1
  import { assertEx } from '@xylabs/assert';
2
- import { XyoArchivistGetQuerySchema } from '@xyo-network/archivist';
3
2
  import { XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema } from './Queries';
4
3
  import { XyoNode } from './XyoNode';
5
4
  export class MemoryNode extends XyoNode {
6
- attachedModuleMap = new Map();
7
5
  registeredModuleMap = new Map();
8
6
  static async create(params) {
9
7
  return (await super.create(params));
10
8
  }
11
9
  attach(address) {
12
10
  const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address');
13
- this.attachedModuleMap.set(address, module);
14
- }
15
- attached() {
16
- return Array.from(this.attachedModuleMap.keys()).map((key) => {
17
- return key;
18
- });
19
- }
20
- attachedModules() {
21
- return Array.from(this.attachedModuleMap.values()).map((value) => {
22
- return value;
23
- });
11
+ this.internalResolver.add(module);
24
12
  }
25
13
  detach(address) {
26
- this.attachedModuleMap.delete(address);
27
- }
28
- find(schema) {
29
- return schema.map((schema) => {
30
- this.logger?.log(`Finding in MemoryNode: ${schema}`);
31
- if (schema === 'network.xyo.archivist') {
32
- this.logger?.log(`attachedModules: ${JSON.stringify(this.attachedModules(), null, 2)}`);
33
- return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null;
34
- }
35
- return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null;
36
- });
14
+ this.internalResolver.remove(address);
37
15
  }
38
16
  queries() {
39
17
  return [XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, ...super.queries()];
40
18
  }
41
19
  register(module) {
20
+ module.resolver = this.internalResolver;
42
21
  this.registeredModuleMap.set(module.address, module);
43
22
  }
44
23
  registered() {
@@ -51,11 +30,11 @@ export class MemoryNode extends XyoNode {
51
30
  return value;
52
31
  });
53
32
  }
54
- resolve(addresses) {
55
- return addresses.map((address) => {
56
- this.logger?.log(`Resolving in MemoryNode: ${address}`);
57
- return this.attachedModuleMap?.get(address) ?? null;
58
- });
33
+ async resolve(filter) {
34
+ return (await this.internalResolver.resolve(filter)) ?? (await this.resolver?.resolve(filter)) ?? [];
35
+ }
36
+ unregister(module) {
37
+ this.registeredModuleMap.delete(module.address);
59
38
  }
60
39
  }
61
40
  //# sourceMappingURL=MemoryNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"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"}
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,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,OAAO,UAA2F,SAAQ,OAAyB;IAC/H,mBAAmB,GAAG,IAAI,GAAG,EAAmB,CAAA;IAExD,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAAoC;QAC/D,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAe,CAAA;IACnD,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,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAEQ,MAAM,CAAC,OAAe;QAC7B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAEe,OAAO;QACrB,OAAO,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACjF,CAAC;IAEQ,QAAQ,CAAC,MAAe;QAC/B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAA;QACvC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;IAEQ,UAAU;QACjB,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,iBAAiB;QACxB,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,KAAK,CAAC,OAAO,CAAC,MAAoB;QACzC,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACtG,CAAC;IAEQ,UAAU,CAAC,MAAe;QACjC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;CACF"}
@@ -1,10 +1,11 @@
1
- import { Module } from '@xyo-network/module';
1
+ import { Module, ModuleFilter } from '@xyo-network/module';
2
2
  import { Promisable, PromisableArray } from '@xyo-network/promise';
3
3
  import { Node } from './Node';
4
4
  export interface NodeModule<TModule extends Module = Module> extends Node, Module {
5
5
  attachedModules(): PromisableArray<TModule>;
6
6
  register(module: TModule): Promisable<void>;
7
7
  registeredModules(): PromisableArray<TModule>;
8
- resolve(address: string[]): Promisable<(TModule | null)[]>;
8
+ resolve(filter?: ModuleFilter): Promisable<TModule[]>;
9
+ unregister(module: TModule): Promisable<void>;
9
10
  }
10
11
  //# sourceMappingURL=NodeModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeModule.d.ts","sourceRoot":"","sources":["../../src/NodeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,EAAE,MAAM;IAC/E,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC3C,iBAAiB,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;CAC3D"}
1
+ {"version":3,"file":"NodeModule.d.ts","sourceRoot":"","sources":["../../src/NodeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,EAAE,MAAM;IAC/E,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC3C,iBAAiB,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;IACrD,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;CAC9C"}
@@ -1,21 +1,26 @@
1
- import { Module, ModuleQueryResult, XyoModule, XyoQueryBoundWitness } from '@xyo-network/module';
1
+ import { Module, ModuleFilter, ModuleQueryResult, ModuleResolver, XyoModule, XyoModuleParams, XyoModuleResolver, XyoQueryBoundWitness } from '@xyo-network/module';
2
2
  import { XyoPayload } from '@xyo-network/payload';
3
+ import { Promisable } from '@xyo-network/promise';
3
4
  import { NodeConfig } from './Config';
4
5
  import { NodeModule } from './NodeModule';
5
- export declare abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends XyoModule<TConfig> implements NodeModule {
6
+ export declare abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule extends XyoModule = XyoModule> extends XyoModule<TConfig> implements NodeModule, ModuleResolver {
7
+ isModuleResolver: boolean;
8
+ protected internalResolver: XyoModuleResolver<TModule>;
6
9
  private _archivist?;
7
- attached(): string[];
8
- attachedModules(): TModule[];
10
+ protected constructor(params: XyoModuleParams<TConfig>, internalResolver?: XyoModuleResolver<TModule>);
11
+ static create(params?: Partial<XyoModuleParams<NodeConfig>>): Promise<XyoNode>;
12
+ attached(): Promise<string[]>;
13
+ attachedModules(): Promise<TModule[]>;
9
14
  getArchivist(): Promise<Module>;
10
15
  query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness>(query: T, payloads?: XyoPayload[]): Promise<ModuleQueryResult>;
11
16
  register(_module: TModule): void;
12
17
  registered(): string[];
13
18
  registeredModules(): TModule[];
14
19
  start(): Promise<this>;
20
+ unregister(_module: TModule): void;
15
21
  private storeInstanceData;
16
22
  abstract attach(_address: string): void;
17
23
  abstract detach(_address: string): void;
18
- abstract find(_schema: string[]): (TModule | null)[];
19
- abstract resolve(_address: string[]): (TModule | null)[];
24
+ abstract resolve(_filter: ModuleFilter): Promisable<TModule[]>;
20
25
  }
21
26
  //# sourceMappingURL=XyoNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAA6C,SAAS,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE3I,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,8BAAsB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CACpG,SAAQ,SAAS,CAAC,OAAO,CACzB,YAAW,UAAU;IAErB,OAAO,CAAC,UAAU,CAAC,CAAQ;IAE3B,QAAQ,IAAI,MAAM,EAAE;IAIpB,eAAe,IAAI,OAAO,EAAE;IAIf,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAU7B,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmC1I,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,UAAU,IAAI,MAAM,EAAE;IAItB,iBAAiB,IAAI,OAAO,EAAE;IAIf,KAAK;YAMN,iBAAiB;IAM/B,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE;IACpD,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE;CACzD"}
1
+ {"version":3,"file":"XyoNode.d.ts","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,cAAc,EAGd,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,8BAAsB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS,CAC1G,SAAQ,SAAS,CAAC,OAAO,CACzB,YAAW,UAAU,EAAE,cAAc;IAE9B,gBAAgB,UAAO;IAE9B,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACtD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAE3B,SAAS,aAAa,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC;WAK/E,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI9B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAU7B,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmC1I,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,UAAU,IAAI,MAAM,EAAE;IAItB,iBAAiB,IAAI,OAAO,EAAE;IAIf,KAAK;IAMpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;YAIpB,iBAAiB;IAM/B,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAC/D"}
@@ -1,22 +1,31 @@
1
1
  import { assertEx } from '@xylabs/assert';
2
2
  import { XyoAccount } from '@xyo-network/account';
3
3
  import { XyoArchivistWrapper, XyoMemoryArchivist } from '@xyo-network/archivist';
4
- import { QueryBoundWitnessWrapper, XyoErrorBuilder, XyoModule } from '@xyo-network/module';
4
+ import { QueryBoundWitnessWrapper, XyoErrorBuilder, XyoModule, XyoModuleResolver, } from '@xyo-network/module';
5
5
  import { XyoModuleInstanceSchema } from '@xyo-network/module-instance-payload-plugin';
6
6
  import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeRegisteredQuerySchema } from './Queries';
7
7
  export class XyoNode extends XyoModule {
8
+ isModuleResolver = true;
9
+ internalResolver;
8
10
  _archivist;
9
- attached() {
10
- throw new Error('Method not implemented.');
11
+ constructor(params, internalResolver) {
12
+ super(params);
13
+ this.internalResolver = internalResolver ?? new XyoModuleResolver();
11
14
  }
12
- attachedModules() {
13
- throw new Error('Method not implemented.');
15
+ static async create(params) {
16
+ return (await super.create(params));
17
+ }
18
+ async attached() {
19
+ return (await this.attachedModules()).map((module) => module.address);
20
+ }
21
+ async attachedModules() {
22
+ return await (this.internalResolver.resolve() ?? []);
14
23
  }
15
24
  async getArchivist() {
16
25
  if (!this._archivist) {
17
26
  this._archivist =
18
27
  this._archivist ??
19
- (this.config?.archivist ? this.resolver?.fromAddress([this.config?.archivist]).shift() : undefined) ??
28
+ (this.config?.archivist ? ((await this.resolver?.resolve({ address: [this.config?.archivist] })) ?? []).shift() : undefined) ??
20
29
  (await XyoMemoryArchivist.create());
21
30
  }
22
31
  return this._archivist;
@@ -38,7 +47,7 @@ export class XyoNode extends XyoModule {
38
47
  break;
39
48
  }
40
49
  case XyoNodeAttachedQuerySchema: {
41
- this.attached();
50
+ await this.attached();
42
51
  break;
43
52
  }
44
53
  case XyoNodeRegisteredQuerySchema: {
@@ -69,6 +78,9 @@ export class XyoNode extends XyoModule {
69
78
  await this.storeInstanceData();
70
79
  return this;
71
80
  }
81
+ unregister(_module) {
82
+ throw new Error('Method not implemented.');
83
+ }
72
84
  async storeInstanceData() {
73
85
  const payload = { address: this.address, queries: this.queries, schema: XyoModuleInstanceSchema };
74
86
  const [bw] = await this.bindResult([payload]);
@@ -1 +1 @@
1
- {"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XyoNode.js","sourceRoot":"","sources":["../../src/XyoNode.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { XyoArchivistWrapper } from '@xyo-network/archivist';
2
- import { Module, XyoModule, XyoModuleWrapper } from '@xyo-network/module';
2
+ import { Module, ModuleFilter, XyoModule, XyoModuleWrapper } from '@xyo-network/module';
3
3
  import { Promisable } from '@xyo-network/promise';
4
4
  import { NodeModule } from './NodeModule';
5
5
  export declare class XyoNodeWrapper extends XyoModuleWrapper implements NodeModule {
@@ -9,9 +9,11 @@ export declare class XyoNodeWrapper extends XyoModuleWrapper implements NodeModu
9
9
  attached(): Promise<string[]>;
10
10
  attachedModules(): Promise<XyoModule[]>;
11
11
  detach(address: string): Promise<void>;
12
+ find(_filter: ModuleFilter): Promisable<XyoModule[]>;
12
13
  register(_module: Module): void;
13
14
  registered(): Promise<string[]>;
14
15
  registeredModules(): Promise<XyoModule[]>;
15
- resolve(_address: string[]): Promisable<(XyoModule | null)[]>;
16
+ resolve(_filter: ModuleFilter): Promisable<XyoModule[]>;
17
+ unregister(_module: Module): void;
16
18
  }
17
19
  //# sourceMappingURL=XyoNodeWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoNodeWrapper.d.ts","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAYzC,qBAAa,cAAe,SAAQ,gBAAiB,YAAW,UAAU;IACxE,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,IAAW,SAAS,wBAGnB;IAEK,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ7B,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKvC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ/B,iBAAiB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK/C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;CAG9D"}
1
+ {"version":3,"file":"XyoNodeWrapper.d.ts","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEvF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAYzC,qBAAa,cAAe,SAAQ,gBAAiB,YAAW,UAAU;IACxE,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,IAAW,SAAS,wBAGnB;IAEK,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ7B,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKvC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;IAIpD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ/B,iBAAiB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK/C,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;IAIvD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGlC"}
@@ -24,7 +24,7 @@ export class XyoNodeWrapper extends XyoModuleWrapper {
24
24
  }
25
25
  async attachedModules() {
26
26
  const addresses = await this.attached();
27
- return compact(await this.resolve(addresses));
27
+ return compact(await this.resolve({ address: addresses }));
28
28
  }
29
29
  async detach(address) {
30
30
  const queryPayload = PayloadWrapper.parse({ address, schema: XyoNodeDetachQuerySchema });
@@ -32,6 +32,9 @@ export class XyoNodeWrapper extends XyoModuleWrapper {
32
32
  const result = await this.module.query(query[0], query[1]);
33
33
  this.throwErrors(query, result);
34
34
  }
35
+ find(_filter) {
36
+ throw Error('Not implemented');
37
+ }
35
38
  register(_module) {
36
39
  throw Error('Not implemented');
37
40
  }
@@ -44,9 +47,12 @@ export class XyoNodeWrapper extends XyoModuleWrapper {
44
47
  }
45
48
  async registeredModules() {
46
49
  const addresses = await this.registered();
47
- return compact(await this.resolve(addresses));
50
+ return compact(await this.resolve({ address: addresses }));
51
+ }
52
+ resolve(_filter) {
53
+ throw Error('Not implemented');
48
54
  }
49
- resolve(_address) {
55
+ unregister(_module) {
50
56
  throw Error('Not implemented');
51
57
  }
52
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"XyoNodeWrapper.js","sourceRoot":"","sources":["../../src/XyoNodeWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XyoNodeWrapper.js","sourceRoot":"","sources":["../../src/XyoNodeWrapper.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.9",
14
- "@xyo-network/account": "^2.41.0",
15
- "@xyo-network/archivist": "^2.41.0",
16
- "@xyo-network/module": "^2.41.0",
17
- "@xyo-network/module-instance-payload-plugin": "^2.41.0",
18
- "@xyo-network/payload": "^2.41.0",
19
- "@xyo-network/promise": "^2.41.0",
14
+ "@xyo-network/account": "^2.41.1",
15
+ "@xyo-network/archivist": "^2.41.1",
16
+ "@xyo-network/module": "^2.41.1",
17
+ "@xyo-network/module-instance-payload-plugin": "^2.41.1",
18
+ "@xyo-network/payload": "^2.41.1",
19
+ "@xyo-network/promise": "^2.41.1",
20
20
  "lodash": "^4.17.21",
21
21
  "tslib": "^2.4.1"
22
22
  },
@@ -61,5 +61,5 @@
61
61
  },
62
62
  "sideEffects": false,
63
63
  "types": "dist/esm/index.d.ts",
64
- "version": "2.41.0"
64
+ "version": "2.41.1"
65
65
  }
@@ -28,7 +28,7 @@ test('Create Node', async () => {
28
28
  node.attach(diviner.address)
29
29
  expect((await node.registered()).length).toBe(2)
30
30
  expect((await node.attached()).length).toBe(2)
31
- const foundArchivist = (await node.resolve([archivist.address])).shift()
31
+ const foundArchivist = (await node.resolve({ address: [archivist.address] })).shift()
32
32
  expect(foundArchivist).toBeDefined()
33
33
  expect(foundArchivist?.address).toBe(archivist.address)
34
34
  const testPayload = new XyoPayloadBuilder<XyoPayload<{ schema: XyoPayloadSchema; test: boolean }>>({ schema: XyoPayloadSchema })
@@ -47,7 +47,7 @@ test('Create Node', async () => {
47
47
  if (payloads && payloads[0]) {
48
48
  const huri = new PayloadWrapper(payloads[0]).hash
49
49
  const huriPayload: XyoHuriPayload = { huri: [huri], schema: XyoHuriSchema }
50
- const module = (await node.resolve([diviner.address])).shift() as DivinerModule
50
+ const module = (await node.resolve({ address: [diviner.address] })).shift() as DivinerModule
51
51
  const foundDiviner = module ? new XyoDivinerWrapper(module) : null
52
52
  expect(foundDiviner).toBeDefined()
53
53
  if (foundDiviner) {
package/src/MemoryNode.ts CHANGED
@@ -1,13 +1,11 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
- import { XyoArchivistGetQuerySchema } from '@xyo-network/archivist'
3
- import { Module, XyoModuleParams } from '@xyo-network/module'
2
+ import { ModuleFilter, XyoModule, XyoModuleParams } from '@xyo-network/module'
4
3
 
5
4
  import { NodeConfig } from './Config'
6
5
  import { XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema } from './Queries'
7
6
  import { XyoNode } from './XyoNode'
8
7
 
9
- export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends XyoNode<TConfig, TModule> {
10
- private attachedModuleMap = new Map<string, TModule>()
8
+ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends XyoModule = XyoModule> extends XyoNode<TConfig, TModule> {
11
9
  private registeredModuleMap = new Map<string, TModule>()
12
10
 
13
11
  static override async create(params?: XyoModuleParams<NodeConfig>): Promise<MemoryNode> {
@@ -16,34 +14,11 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends
16
14
 
17
15
  override attach(address: string) {
18
16
  const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address')
19
- this.attachedModuleMap.set(address, module)
20
- }
21
-
22
- override attached() {
23
- return Array.from(this.attachedModuleMap.keys()).map((key) => {
24
- return key
25
- })
26
- }
27
-
28
- override attachedModules() {
29
- return Array.from(this.attachedModuleMap.values()).map((value) => {
30
- return value
31
- })
17
+ this.internalResolver.add(module)
32
18
  }
33
19
 
34
20
  override detach(address: string) {
35
- this.attachedModuleMap.delete(address)
36
- }
37
-
38
- override find(schema: string[]): (TModule | null)[] {
39
- return schema.map((schema) => {
40
- this.logger?.log(`Finding in MemoryNode: ${schema}`)
41
- if (schema === 'network.xyo.archivist') {
42
- this.logger?.log(`attachedModules: ${JSON.stringify(this.attachedModules(), null, 2)}`)
43
- return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null
44
- }
45
- return this.attachedModules().find((module) => module.queryable(XyoArchivistGetQuerySchema)) ?? null
46
- })
21
+ this.internalResolver.remove(address)
47
22
  }
48
23
 
49
24
  public override queries(): string[] {
@@ -51,6 +26,7 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends
51
26
  }
52
27
 
53
28
  override register(module: TModule) {
29
+ module.resolver = this.internalResolver
54
30
  this.registeredModuleMap.set(module.address, module)
55
31
  }
56
32
 
@@ -66,10 +42,11 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends
66
42
  })
67
43
  }
68
44
 
69
- override resolve(addresses: string[]): (TModule | null)[] {
70
- return addresses.map((address) => {
71
- this.logger?.log(`Resolving in MemoryNode: ${address}`)
72
- return this.attachedModuleMap?.get(address) ?? null
73
- })
45
+ override async resolve(filter: ModuleFilter): Promise<TModule[]> {
46
+ return (await this.internalResolver.resolve(filter)) ?? (await this.resolver?.resolve(filter)) ?? []
47
+ }
48
+
49
+ override unregister(module: TModule) {
50
+ this.registeredModuleMap.delete(module.address)
74
51
  }
75
52
  }
package/src/NodeModule.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Module } from '@xyo-network/module'
1
+ import { Module, ModuleFilter } from '@xyo-network/module'
2
2
  import { Promisable, PromisableArray } from '@xyo-network/promise'
3
3
 
4
4
  import { Node } from './Node'
@@ -7,5 +7,6 @@ export interface NodeModule<TModule extends Module = Module> extends Node, Modul
7
7
  attachedModules(): PromisableArray<TModule>
8
8
  register(module: TModule): Promisable<void>
9
9
  registeredModules(): PromisableArray<TModule>
10
- resolve(address: string[]): Promisable<(TModule | null)[]>
10
+ resolve(filter?: ModuleFilter): Promisable<TModule[]>
11
+ unregister(module: TModule): Promisable<void>
11
12
  }
package/src/XyoNode.ts CHANGED
@@ -1,32 +1,57 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { XyoAccount } from '@xyo-network/account'
3
3
  import { XyoArchivistWrapper, XyoMemoryArchivist } from '@xyo-network/archivist'
4
- import { Module, ModuleQueryResult, QueryBoundWitnessWrapper, XyoErrorBuilder, XyoModule, XyoQueryBoundWitness } from '@xyo-network/module'
4
+ import {
5
+ Module,
6
+ ModuleFilter,
7
+ ModuleQueryResult,
8
+ ModuleResolver,
9
+ QueryBoundWitnessWrapper,
10
+ XyoErrorBuilder,
11
+ XyoModule,
12
+ XyoModuleParams,
13
+ XyoModuleResolver,
14
+ XyoQueryBoundWitness,
15
+ } from '@xyo-network/module'
5
16
  import { XyoModuleInstanceSchema } from '@xyo-network/module-instance-payload-plugin'
6
17
  import { XyoPayload } from '@xyo-network/payload'
18
+ import { Promisable } from '@xyo-network/promise'
7
19
 
8
20
  import { NodeConfig } from './Config'
9
21
  import { NodeModule } from './NodeModule'
10
22
  import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeQuery, XyoNodeRegisteredQuerySchema } from './Queries'
11
- export abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module>
23
+
24
+ export abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule extends XyoModule = XyoModule>
12
25
  extends XyoModule<TConfig>
13
- implements NodeModule
26
+ implements NodeModule, ModuleResolver
14
27
  {
28
+ public isModuleResolver = true
29
+
30
+ protected internalResolver: XyoModuleResolver<TModule>
15
31
  private _archivist?: Module
16
32
 
17
- attached(): string[] {
18
- throw new Error('Method not implemented.')
33
+ protected constructor(params: XyoModuleParams<TConfig>, internalResolver?: XyoModuleResolver<TModule>) {
34
+ super(params)
35
+ this.internalResolver = internalResolver ?? new XyoModuleResolver<TModule>()
19
36
  }
20
37
 
21
- attachedModules(): TModule[] {
22
- throw new Error('Method not implemented.')
38
+ static override async create(params?: Partial<XyoModuleParams<NodeConfig>>): Promise<XyoNode> {
39
+ return (await super.create(params)) as XyoNode
40
+ }
41
+
42
+ async attached(): Promise<string[]> {
43
+ return (await this.attachedModules()).map((module) => module.address)
44
+ }
45
+
46
+ async attachedModules(): Promise<TModule[]> {
47
+ return await (this.internalResolver.resolve() ?? [])
23
48
  }
24
49
 
25
50
  public async getArchivist(): Promise<Module> {
26
51
  if (!this._archivist) {
27
52
  this._archivist =
28
53
  this._archivist ??
29
- (this.config?.archivist ? this.resolver?.fromAddress([this.config?.archivist]).shift() : undefined) ??
54
+ (this.config?.archivist ? ((await this.resolver?.resolve({ address: [this.config?.archivist] })) ?? []).shift() : undefined) ??
30
55
  (await XyoMemoryArchivist.create())
31
56
  }
32
57
  return this._archivist
@@ -50,7 +75,7 @@ export abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule e
50
75
  break
51
76
  }
52
77
  case XyoNodeAttachedQuerySchema: {
53
- this.attached()
78
+ await this.attached()
54
79
  break
55
80
  }
56
81
  case XyoNodeRegisteredQuerySchema: {
@@ -85,6 +110,10 @@ export abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule e
85
110
  return this
86
111
  }
87
112
 
113
+ unregister(_module: TModule): void {
114
+ throw new Error('Method not implemented.')
115
+ }
116
+
88
117
  private async storeInstanceData() {
89
118
  const payload = { address: this.address, queries: this.queries, schema: XyoModuleInstanceSchema }
90
119
  const [bw] = await this.bindResult([payload])
@@ -93,6 +122,5 @@ export abstract class XyoNode<TConfig extends NodeConfig = NodeConfig, TModule e
93
122
 
94
123
  abstract attach(_address: string): void
95
124
  abstract detach(_address: string): void
96
- abstract find(_schema: string[]): (TModule | null)[]
97
- abstract resolve(_address: string[]): (TModule | null)[]
125
+ abstract resolve(_filter: ModuleFilter): Promisable<TModule[]>
98
126
  }
@@ -1,5 +1,5 @@
1
1
  import { XyoArchivistWrapper } from '@xyo-network/archivist'
2
- import { Module, XyoModule, XyoModuleWrapper } from '@xyo-network/module'
2
+ import { Module, ModuleFilter, XyoModule, XyoModuleWrapper } from '@xyo-network/module'
3
3
  import { PayloadWrapper } from '@xyo-network/payload'
4
4
  import { Promisable } from '@xyo-network/promise'
5
5
  import compact from 'lodash/compact'
@@ -40,7 +40,7 @@ export class XyoNodeWrapper extends XyoModuleWrapper implements NodeModule {
40
40
 
41
41
  async attachedModules(): Promise<XyoModule[]> {
42
42
  const addresses = await this.attached()
43
- return compact(await this.resolve(addresses))
43
+ return compact(await this.resolve({ address: addresses }))
44
44
  }
45
45
 
46
46
  async detach(address: string): Promise<void> {
@@ -50,6 +50,10 @@ export class XyoNodeWrapper extends XyoModuleWrapper implements NodeModule {
50
50
  this.throwErrors(query, result)
51
51
  }
52
52
 
53
+ find(_filter: ModuleFilter): Promisable<XyoModule[]> {
54
+ throw Error('Not implemented')
55
+ }
56
+
53
57
  register(_module: Module): void {
54
58
  throw Error('Not implemented')
55
59
  }
@@ -64,10 +68,14 @@ export class XyoNodeWrapper extends XyoModuleWrapper implements NodeModule {
64
68
 
65
69
  async registeredModules(): Promise<XyoModule[]> {
66
70
  const addresses = await this.registered()
67
- return compact(await this.resolve(addresses))
71
+ return compact(await this.resolve({ address: addresses }))
72
+ }
73
+
74
+ resolve(_filter: ModuleFilter): Promisable<XyoModule[]> {
75
+ throw Error('Not implemented')
68
76
  }
69
77
 
70
- resolve(_address: string[]): Promisable<(XyoModule | null)[]> {
78
+ unregister(_module: Module): void {
71
79
  throw Error('Not implemented')
72
80
  }
73
81
  }