@xyo-network/node-abstract 2.74.5 → 2.75.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.
Files changed (46) hide show
  1. package/dist/browser/AbstractNode.cjs +240 -0
  2. package/dist/browser/AbstractNode.cjs.map +1 -0
  3. package/dist/browser/AbstractNode.d.cts.map +1 -0
  4. package/dist/browser/AbstractNode.d.mts.map +1 -0
  5. package/dist/browser/AbstractNode.d.ts +34 -0
  6. package/dist/browser/AbstractNode.d.ts.map +1 -0
  7. package/dist/{index.mjs → browser/AbstractNode.js} +3 -5
  8. package/dist/browser/AbstractNode.js.map +1 -0
  9. package/dist/{index.js → browser/index.cjs} +1 -5
  10. package/dist/browser/index.cjs.map +1 -0
  11. package/dist/browser/index.d.cts.map +1 -0
  12. package/dist/{index.d.mts.map → browser/index.d.mts.map} +1 -1
  13. package/dist/browser/index.d.ts +2 -0
  14. package/dist/{index.d.ts.map → browser/index.d.ts.map} +1 -1
  15. package/dist/browser/index.js +2 -0
  16. package/dist/browser/index.js.map +1 -0
  17. package/dist/docs.json +746 -746
  18. package/dist/node/AbstractNode.d.cts +34 -0
  19. package/dist/node/AbstractNode.d.cts.map +1 -0
  20. package/dist/node/AbstractNode.d.mts +34 -0
  21. package/dist/node/AbstractNode.d.mts.map +1 -0
  22. package/dist/node/AbstractNode.d.ts +34 -0
  23. package/dist/node/AbstractNode.d.ts.map +1 -0
  24. package/dist/node/AbstractNode.js +248 -0
  25. package/dist/node/AbstractNode.js.map +1 -0
  26. package/dist/node/AbstractNode.mjs +225 -0
  27. package/dist/node/AbstractNode.mjs.map +1 -0
  28. package/dist/node/index.d.cts +2 -0
  29. package/dist/node/index.d.cts.map +1 -0
  30. package/dist/node/index.d.mts +2 -0
  31. package/dist/node/index.d.mts.map +1 -0
  32. package/dist/node/index.d.ts +2 -0
  33. package/dist/node/index.d.ts.map +1 -0
  34. package/dist/node/index.js +250 -0
  35. package/dist/node/index.js.map +1 -0
  36. package/dist/node/index.mjs +225 -0
  37. package/dist/node/index.mjs.map +1 -0
  38. package/package.json +35 -32
  39. package/dist/AbstractNode.d.mts.map +0 -1
  40. package/dist/AbstractNode.d.ts.map +0 -1
  41. package/dist/index.js.map +0 -1
  42. package/dist/index.mjs.map +0 -1
  43. /package/dist/{AbstractNode.d.mts → browser/AbstractNode.d.cts} +0 -0
  44. /package/dist/{AbstractNode.d.ts → browser/AbstractNode.d.mts} +0 -0
  45. /package/dist/{index.d.mts → browser/index.d.cts} +0 -0
  46. /package/dist/{index.d.ts → browser/index.d.mts} +0 -0
@@ -0,0 +1,34 @@
1
+ import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
2
+ import { NodeManifestPayload } from '@xyo-network/manifest-model';
3
+ import { AbstractModuleInstance } from '@xyo-network/module-abstract';
4
+ import { Module, ModuleConfig, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
5
+ import { CompositeModuleResolver } from '@xyo-network/module-resolver';
6
+ import { NodeModule, NodeModuleEventData, NodeParams, NodeQueryBase } from '@xyo-network/node-model';
7
+ import { Payload } from '@xyo-network/payload-model';
8
+ import { Promisable } from '@xyo-network/promise';
9
+ export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
10
+ static readonly configSchemas: string[];
11
+ protected readonly privateResolver: CompositeModuleResolver;
12
+ private readonly isNode;
13
+ get isModuleResolver(): boolean;
14
+ get queries(): string[];
15
+ protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
+ static isNode(module: unknown): boolean;
17
+ attached(): Promise<string[]>;
18
+ attachedModules(): Promise<Module[]>;
19
+ manifest(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
20
+ register(_module: ModuleInstance): Promisable<void>;
21
+ registered(): Promisable<string[]>;
22
+ registeredModules(): Promisable<Module[]>;
23
+ resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
+ resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
+ unregister(_module: ModuleInstance): Promisable<this>;
26
+ protected discoverHandler(): Promise<Payload[]>;
27
+ protected manifestHandler(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
28
+ protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
+ private resolveAll;
30
+ private resolvePrivate;
31
+ abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>;
32
+ abstract detach(nameOrAddress: string): Promisable<string | undefined>;
33
+ }
34
+ //# sourceMappingURL=AbstractNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,mCAAmC,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,6BAA6B,CAAA;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EAEV,aAAa,EAEd,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IAErE,SAAS,CAAC,QAAQ,CAAC,eAAe,0BAAgC;IAElE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOnF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAO3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIjF,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;IAInD,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAIlC,iBAAiB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAI1B,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAkCjH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;cAI5B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;cASrC,eAAe,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;cAsB7E,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA4CtB,UAAU;YAkBV,cAAc;IAkB5B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;CACvE"}
@@ -0,0 +1,34 @@
1
+ import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
2
+ import { NodeManifestPayload } from '@xyo-network/manifest-model';
3
+ import { AbstractModuleInstance } from '@xyo-network/module-abstract';
4
+ import { Module, ModuleConfig, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
5
+ import { CompositeModuleResolver } from '@xyo-network/module-resolver';
6
+ import { NodeModule, NodeModuleEventData, NodeParams, NodeQueryBase } from '@xyo-network/node-model';
7
+ import { Payload } from '@xyo-network/payload-model';
8
+ import { Promisable } from '@xyo-network/promise';
9
+ export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
10
+ static readonly configSchemas: string[];
11
+ protected readonly privateResolver: CompositeModuleResolver;
12
+ private readonly isNode;
13
+ get isModuleResolver(): boolean;
14
+ get queries(): string[];
15
+ protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
+ static isNode(module: unknown): boolean;
17
+ attached(): Promise<string[]>;
18
+ attachedModules(): Promise<Module[]>;
19
+ manifest(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
20
+ register(_module: ModuleInstance): Promisable<void>;
21
+ registered(): Promisable<string[]>;
22
+ registeredModules(): Promisable<Module[]>;
23
+ resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
+ resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
+ unregister(_module: ModuleInstance): Promisable<this>;
26
+ protected discoverHandler(): Promise<Payload[]>;
27
+ protected manifestHandler(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
28
+ protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
+ private resolveAll;
30
+ private resolvePrivate;
31
+ abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>;
32
+ abstract detach(nameOrAddress: string): Promisable<string | undefined>;
33
+ }
34
+ //# sourceMappingURL=AbstractNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,mCAAmC,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,6BAA6B,CAAA;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EAEV,aAAa,EAEd,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IAErE,SAAS,CAAC,QAAQ,CAAC,eAAe,0BAAgC;IAElE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOnF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAO3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIjF,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;IAInD,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAIlC,iBAAiB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAI1B,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAkCjH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;cAI5B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;cASrC,eAAe,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;cAsB7E,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA4CtB,UAAU;YAkBV,cAAc;IAkB5B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;CACvE"}
@@ -0,0 +1,34 @@
1
+ import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
2
+ import { NodeManifestPayload } from '@xyo-network/manifest-model';
3
+ import { AbstractModuleInstance } from '@xyo-network/module-abstract';
4
+ import { Module, ModuleConfig, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
5
+ import { CompositeModuleResolver } from '@xyo-network/module-resolver';
6
+ import { NodeModule, NodeModuleEventData, NodeParams, NodeQueryBase } from '@xyo-network/node-model';
7
+ import { Payload } from '@xyo-network/payload-model';
8
+ import { Promisable } from '@xyo-network/promise';
9
+ export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
10
+ static readonly configSchemas: string[];
11
+ protected readonly privateResolver: CompositeModuleResolver;
12
+ private readonly isNode;
13
+ get isModuleResolver(): boolean;
14
+ get queries(): string[];
15
+ protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
+ static isNode(module: unknown): boolean;
17
+ attached(): Promise<string[]>;
18
+ attachedModules(): Promise<Module[]>;
19
+ manifest(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
20
+ register(_module: ModuleInstance): Promisable<void>;
21
+ registered(): Promisable<string[]>;
22
+ registeredModules(): Promisable<Module[]>;
23
+ resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
+ resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
+ unregister(_module: ModuleInstance): Promisable<this>;
26
+ protected discoverHandler(): Promise<Payload[]>;
27
+ protected manifestHandler(ignoreAddresses?: string[]): Promise<NodeManifestPayload>;
28
+ protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
+ private resolveAll;
30
+ private resolvePrivate;
31
+ abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>;
32
+ abstract detach(nameOrAddress: string): Promisable<string | undefined>;
33
+ }
34
+ //# sourceMappingURL=AbstractNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,mCAAmC,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,6BAA6B,CAAA;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EAEV,aAAa,EAEd,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IAErE,SAAS,CAAC,QAAQ,CAAC,eAAe,0BAAgC;IAElE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOnF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAO3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIjF,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;IAInD,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAIlC,iBAAiB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;IAI1B,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAkCjH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;cAI5B,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;cASrC,eAAe,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;cAsB7E,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA4CtB,UAAU;YAkBV,cAAc;IAkB5B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;CACvE"}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var __publicField = (obj, key, value) => {
22
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
23
+ return value;
24
+ };
25
+
26
+ // src/AbstractNode.ts
27
+ var AbstractNode_exports = {};
28
+ __export(AbstractNode_exports, {
29
+ AbstractNode: () => AbstractNode
30
+ });
31
+ module.exports = __toCommonJS(AbstractNode_exports);
32
+ var import_assert = require("@xylabs/assert");
33
+ var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
34
+ var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
35
+ var import_manifest_model = require("@xyo-network/manifest-model");
36
+ var import_module_abstract = require("@xyo-network/module-abstract");
37
+ var import_module_model = require("@xyo-network/module-model");
38
+ var import_module_resolver = require("@xyo-network/module-resolver");
39
+ var import_node_model = require("@xyo-network/node-model");
40
+ var import_payload_builder = require("@xyo-network/payload-builder");
41
+ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractModuleInstance {
42
+ privateResolver = new import_module_resolver.CompositeModuleResolver();
43
+ isNode = true;
44
+ get isModuleResolver() {
45
+ return true;
46
+ }
47
+ get queries() {
48
+ return [
49
+ import_node_model.NodeAttachQuerySchema,
50
+ import_node_model.NodeDetachQuerySchema,
51
+ import_node_model.NodeAttachedQuerySchema,
52
+ import_node_model.NodeRegisteredQuerySchema,
53
+ ...super.queries
54
+ ];
55
+ }
56
+ get _queryAccountPaths() {
57
+ return {
58
+ "network.xyo.query.node.attach": "1/1",
59
+ "network.xyo.query.node.attached": "1/2",
60
+ "network.xyo.query.node.detach": "1/3",
61
+ "network.xyo.query.node.registered": "1/4"
62
+ };
63
+ }
64
+ static isNode(module2) {
65
+ return module2.isNode;
66
+ }
67
+ async attached() {
68
+ return (await this.attachedModules()).map((module2) => module2.address);
69
+ }
70
+ async attachedModules() {
71
+ return (await (this.resolve(void 0, {
72
+ direction: "down",
73
+ maxDepth: 2
74
+ }) ?? [])).filter((module2) => module2.address !== this.address);
75
+ }
76
+ async manifest(ignoreAddresses) {
77
+ return await this.manifestHandler(ignoreAddresses);
78
+ }
79
+ register(_module) {
80
+ throw new Error("Method not implemented.");
81
+ }
82
+ registered() {
83
+ throw new Error("Method not implemented.");
84
+ }
85
+ registeredModules() {
86
+ throw new Error("Method not implemented.");
87
+ }
88
+ async resolve(nameOrAddressOrFilter, options) {
89
+ if (typeof nameOrAddressOrFilter === "string") {
90
+ switch (options == null ? void 0 : options.visibility) {
91
+ case "private": {
92
+ return await this.resolvePrivate(nameOrAddressOrFilter);
93
+ }
94
+ case "all": {
95
+ return await this.resolveAll(nameOrAddressOrFilter);
96
+ }
97
+ default: {
98
+ return await super.resolve(nameOrAddressOrFilter, options);
99
+ }
100
+ }
101
+ } else {
102
+ switch (options == null ? void 0 : options.visibility) {
103
+ case "all": {
104
+ return await this.resolveAll(nameOrAddressOrFilter);
105
+ }
106
+ case "private": {
107
+ return await this.resolvePrivate(nameOrAddressOrFilter);
108
+ }
109
+ default: {
110
+ return await super.resolve(nameOrAddressOrFilter, options);
111
+ }
112
+ }
113
+ }
114
+ }
115
+ unregister(_module) {
116
+ throw new Error("Method not implemented.");
117
+ }
118
+ async discoverHandler() {
119
+ const childMods = await this.attachedModules();
120
+ const childModAddresses = childMods.map((mod) => new import_payload_builder.PayloadBuilder({
121
+ schema: import_address_payload_plugin.AddressSchema
122
+ }).fields({
123
+ address: mod.address,
124
+ name: mod.config.name
125
+ }).build());
126
+ return [
127
+ ...await super.discoverHandler(),
128
+ ...childModAddresses
129
+ ];
130
+ }
131
+ async manifestHandler(ignoreAddresses = []) {
132
+ const manifest = {
133
+ ...await super.manifestHandler(),
134
+ schema: import_manifest_model.NodeManifestPayloadSchema
135
+ };
136
+ const newIgnoreAddresses = [
137
+ ...ignoreAddresses,
138
+ this.address
139
+ ];
140
+ const notThisModule = /* @__PURE__ */ __name((module2) => module2.address !== this.address && !ignoreAddresses.includes(module2.address), "notThisModule");
141
+ const toManifest = /* @__PURE__ */ __name((module2) => module2.manifest(newIgnoreAddresses), "toManifest");
142
+ const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest));
143
+ if (privateModules.length > 0) {
144
+ manifest.modules = manifest.modules ?? {};
145
+ manifest.modules.private = privateModules;
146
+ }
147
+ const publicModules = await Promise.all((await this.resolve()).filter(notThisModule).map(toManifest));
148
+ if (publicModules.length > 0) {
149
+ manifest.modules = manifest.modules ?? {};
150
+ manifest.modules.public = publicModules;
151
+ }
152
+ return manifest;
153
+ }
154
+ async queryHandler(query, payloads, queryConfig) {
155
+ const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
156
+ const queryPayload = await wrapper.getQuery();
157
+ (0, import_assert.assertEx)(this.queryable(query, payloads, queryConfig));
158
+ const resultPayloads = [];
159
+ switch (queryPayload.schema) {
160
+ case import_node_model.NodeAttachQuerySchema: {
161
+ const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external);
162
+ if (address) {
163
+ const payload = new import_payload_builder.PayloadBuilder({
164
+ schema: import_address_payload_plugin.AddressSchema
165
+ }).fields({
166
+ address
167
+ }).build();
168
+ resultPayloads.push(payload);
169
+ }
170
+ break;
171
+ }
172
+ case import_node_model.NodeDetachQuerySchema: {
173
+ const address = await this.detach(queryPayload.nameOrAddress);
174
+ if (address) {
175
+ const payload = new import_payload_builder.PayloadBuilder({
176
+ schema: import_address_payload_plugin.AddressSchema
177
+ }).fields({
178
+ address
179
+ }).build();
180
+ resultPayloads.push(payload);
181
+ }
182
+ break;
183
+ }
184
+ case import_node_model.NodeAttachedQuerySchema: {
185
+ const addresses = await this.attached();
186
+ for (const address of addresses) {
187
+ const payload = new import_payload_builder.PayloadBuilder({
188
+ schema: import_address_payload_plugin.AddressSchema
189
+ }).fields({
190
+ address
191
+ }).build();
192
+ resultPayloads.push(payload);
193
+ }
194
+ break;
195
+ }
196
+ case import_node_model.NodeRegisteredQuerySchema: {
197
+ const addresses = await this.registered();
198
+ for (const address of addresses) {
199
+ const payload = new import_payload_builder.PayloadBuilder({
200
+ schema: import_address_payload_plugin.AddressSchema
201
+ }).fields({
202
+ address
203
+ }).build();
204
+ resultPayloads.push(payload);
205
+ }
206
+ break;
207
+ }
208
+ default:
209
+ return await super.queryHandler(query, payloads);
210
+ }
211
+ return resultPayloads;
212
+ }
213
+ async resolveAll(nameOrAddressOrFilter, options) {
214
+ switch (typeof nameOrAddressOrFilter) {
215
+ case "string": {
216
+ return await this.resolvePrivate(nameOrAddressOrFilter, options) ?? await super.resolve(nameOrAddressOrFilter, options);
217
+ }
218
+ default: {
219
+ return [
220
+ ...await this.resolvePrivate(nameOrAddressOrFilter, options),
221
+ ...await super.resolve(nameOrAddressOrFilter, options)
222
+ ].filter(import_module_model.duplicateModules);
223
+ }
224
+ }
225
+ }
226
+ async resolvePrivate(nameOrAddressOrFilter, options) {
227
+ const direction = (options == null ? void 0 : options.direction) ?? "all";
228
+ const down = direction === "down" || direction === "all";
229
+ switch (typeof nameOrAddressOrFilter) {
230
+ case "string": {
231
+ return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : void 0;
232
+ }
233
+ default: {
234
+ return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : void 0;
235
+ }
236
+ }
237
+ }
238
+ };
239
+ __name(_AbstractNode, "AbstractNode");
240
+ __publicField(_AbstractNode, "configSchemas", [
241
+ import_node_model.NodeConfigSchema
242
+ ]);
243
+ var AbstractNode = _AbstractNode;
244
+ // Annotate the CommonJS export names for ESM import in node:
245
+ 0 && (module.exports = {
246
+ AbstractNode
247
+ });
248
+ //# sourceMappingURL=AbstractNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQuery,\n NodeQueryBase,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Promisable } from '@xyo-network/promise'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n\n protected readonly privateResolver = new CompositeModuleResolver()\n\n private readonly isNode = true\n\n get isModuleResolver(): boolean {\n return true\n }\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueryBase['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<string[]> {\n return (await this.attachedModules()).map((module) => module.address)\n }\n\n async attachedModules(): Promise<Module[]> {\n // return (await (this.resolve(undefined, { direction: 'down', maxDepth: CompositeModuleResolver.defaultMaxDepth }) ?? [])).filter(\n // (module) => module.address !== this.address,\n // )\n return (await (this.resolve(undefined, { direction: 'down', maxDepth: 2 }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(ignoreAddresses?: string[]): Promise<NodeManifestPayload> {\n return await this.manifestHandler(ignoreAddresses)\n }\n\n register(_module: ModuleInstance): Promisable<void> {\n throw new Error('Method not implemented.')\n }\n\n registered(): Promisable<string[]> {\n throw new Error('Method not implemented.')\n }\n\n registeredModules(): Promisable<Module[]> {\n throw new Error('Method not implemented.')\n }\n\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n override async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (typeof nameOrAddressOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(nameOrAddressOrFilter)\n }\n case 'private': {\n return await this.resolvePrivate(nameOrAddressOrFilter)\n }\n default: {\n return await super.resolve(nameOrAddressOrFilter, options)\n }\n }\n }\n }\n\n unregister(_module: ModuleInstance): Promisable<this> {\n throw new Error('Method not implemented.')\n }\n\n protected override async discoverHandler(): Promise<Payload[]> {\n const childMods = await this.attachedModules()\n const childModAddresses = childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n )\n\n return [...(await super.discoverHandler()), ...childModAddresses]\n }\n\n protected override async manifestHandler(ignoreAddresses: string[] = []): Promise<NodeManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler()), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(newIgnoreAddresses)\n\n const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }\n\n const publicModules = await Promise.all((await this.resolve()).filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<NodeQuery>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default:\n return await super.queryHandler(query, payloads)\n }\n return resultPayloads\n }\n\n private async resolveAll(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(nameOrAddressOrFilter, options)) ?? (await super.resolve(nameOrAddressOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(nameOrAddressOrFilter, options)), ...(await super.resolve(nameOrAddressOrFilter, options))].filter(\n duplicateModules,\n )\n }\n }\n }\n\n private async resolvePrivate(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n switch (typeof nameOrAddressOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : undefined\n }\n }\n }\n\n abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>\n abstract detach(nameOrAddress: string): Promisable<string | undefined>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;oBAAyB;AACzB,oCAA8C;AAC9C,kCAA4D;AAC5D,4BAA+D;AAC/D,6BAAuC;AACvC,0BAQO;AACP,6BAAwC;AACxC,wBAWO;AACP,6BAA+B;AAIxB,IAAeA,gBAAf,MAAeA,sBACZC,8CAAAA;EAKWC,kBAAkB,IAAIC,+CAAAA;EAExBC,SAAS;EAE1B,IAAIC,mBAA4B;AAC9B,WAAO;EACT;EAEA,IAAaC,UAAoB;AAC/B,WAAO;MAACC;MAAuBC;MAAuBC;MAAyBC;SAA8B,MAAMJ;;EACrH;EAEA,IAAuBK,qBAA8D;AACnF,WAAO;MACL,iCAAiC;MACjC,mCAAmC;MACnC,iCAAiC;MACjC,qCAAqC;IACvC;EACF;EAEA,OAAOP,OAAOQ,SAAiB;AAC7B,WAAQA,QAAwBR;EAClC;EAEA,MAAMS,WAA8B;AAClC,YAAQ,MAAM,KAAKC,gBAAe,GAAIC,IAAI,CAACH,YAAWA,QAAOI,OAAO;EACtE;EAEA,MAAMF,kBAAqC;AAIzC,YAAQ,OAAO,KAAKG,QAAQC,QAAW;MAAEC,WAAW;MAAQC,UAAU;IAAE,CAAA,KAAM,CAAA,IAAKC,OAAO,CAACT,YAAWA,QAAOI,YAAY,KAAKA,OAAO;EACvI;EAEA,MAAeM,SAASC,iBAA0D;AAChF,WAAO,MAAM,KAAKC,gBAAgBD,eAAAA;EACpC;EAEAE,SAASC,SAA2C;AAClD,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEAC,aAAmC;AACjC,UAAM,IAAID,MAAM,yBAAA;EAClB;EAEAE,oBAA0C;AACxC,UAAM,IAAIF,MAAM,yBAAA;EAClB;EAIA,MAAeV,QACba,uBACAC,SACwD;AAGxD,QAAI,OAAOD,0BAA0B,UAAU;AAC7C,cAAQC,mCAASC,YAAAA;QACf,KAAK,WAAW;AACd,iBAAO,MAAM,KAAKC,eAAeH,qBAAAA;QACnC;QACA,KAAK,OAAO;AACV,iBAAO,MAAM,KAAKI,WAAWJ,qBAAAA;QAC/B;QACA,SAAS;AACP,iBAAO,MAAM,MAAMb,QAAQa,uBAAuBC,OAAAA;QACpD;MACF;IACF,OAAO;AACL,cAAQA,mCAASC,YAAAA;QACf,KAAK,OAAO;AACV,iBAAO,MAAM,KAAKE,WAAWJ,qBAAAA;QAC/B;QACA,KAAK,WAAW;AACd,iBAAO,MAAM,KAAKG,eAAeH,qBAAAA;QACnC;QACA,SAAS;AACP,iBAAO,MAAM,MAAMb,QAAQa,uBAAuBC,OAAAA;QACpD;MACF;IACF;EACF;EAEAI,WAAWT,SAA2C;AACpD,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEA,MAAyBS,kBAAsC;AAC7D,UAAMC,YAAY,MAAM,KAAKvB,gBAAe;AAC5C,UAAMwB,oBAAoBD,UAAUtB,IAAI,CAACwB,QACvC,IAAIC,sCAA+B;MAAEC,QAAQC;IAAc,CAAA,EAAGC,OAAO;MAAE3B,SAASuB,IAAIvB;MAAS4B,MAAML,IAAIM,OAAOD;IAAK,CAAA,EAAGE,MAAK,CAAA;AAG7H,WAAO;SAAK,MAAM,MAAMV,gBAAAA;SAAuBE;;EACjD;EAEA,MAAyBd,gBAAgBD,kBAA4B,CAAA,GAAkC;AACrG,UAAMD,WAAgC;MAAE,GAAI,MAAM,MAAME,gBAAAA;MAAoBiB,QAAQM;IAA0B;AAC9G,UAAMC,qBAAqB;SAAIzB;MAAiB,KAAKP;;AAErD,UAAMiC,gBAAgB,wBAACrC,YAA2BA,QAAOI,YAAY,KAAKA,WAAW,CAACO,gBAAgB2B,SAAStC,QAAOI,OAAO,GAAvG;AACtB,UAAMmC,aAAa,wBAACvC,YAA2BA,QAAOU,SAAS0B,kBAAAA,GAA5C;AAEnB,UAAMI,iBAAiB,MAAMC,QAAQC,KAAK,MAAM,KAAKpD,gBAAgBe,QAAO,GAAII,OAAO4B,aAAAA,EAAelC,IAAIoC,UAAAA,CAAAA;AAC1G,QAAIC,eAAeG,SAAS,GAAG;AAC7BjC,eAASkC,UAAUlC,SAASkC,WAAW,CAAC;AACxClC,eAASkC,QAAQC,UAAUL;IAC7B;AAEA,UAAMM,gBAAgB,MAAML,QAAQC,KAAK,MAAM,KAAKrC,QAAO,GAAII,OAAO4B,aAAAA,EAAelC,IAAIoC,UAAAA,CAAAA;AACzF,QAAIO,cAAcH,SAAS,GAAG;AAC5BjC,eAASkC,UAAUlC,SAASkC,WAAW,CAAC;AACxClC,eAASkC,QAAQG,SAASD;IAC5B;AAEA,WAAOpC;EACT;EAEA,MAAyBsC,aACvBC,OACAC,UACAC,aACmC;AACnC,UAAMC,UAAUC,qDAAyBC,WAAsBL,OAAOC,QAAAA;AACtE,UAAMK,eAAe,MAAMH,QAAQI,SAAQ;AAC3CC,gCAAS,KAAKC,UAAUT,OAAOC,UAAUC,WAAAA,CAAAA;AACzC,UAAMQ,iBAA4B,CAAA;AAClC,YAAQJ,aAAa1B,QAAM;MACzB,KAAKlC,yCAAuB;AAC1B,cAAMS,UAAU,MAAM,KAAKwD,OAAOL,aAAaM,eAAeN,aAAaO,QAAQ;AACnF,YAAI1D,SAAS;AACX,gBAAM2D,UAAU,IAAInC,sCAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFyB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKnE,yCAAuB;AAC1B,cAAMQ,UAAU,MAAM,KAAK6D,OAAOV,aAAaM,aAAa;AAC5D,YAAIzD,SAAS;AACX,gBAAM2D,UAAU,IAAInC,sCAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFyB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKlE,2CAAyB;AAC5B,cAAMqE,YAAY,MAAM,KAAKjE,SAAQ;AACrC,mBAAWG,WAAW8D,WAAW;AAC/B,gBAAMH,UAAU,IAAInC,sCAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFyB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKjE,6CAA2B;AAC9B,cAAMoE,YAAY,MAAM,KAAKlD,WAAU;AACvC,mBAAWZ,WAAW8D,WAAW;AAC/B,gBAAMH,UAAU,IAAInC,sCAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFyB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA;AACE,eAAO,MAAM,MAAMf,aAAaC,OAAOC,QAAAA;IAC3C;AACA,WAAOS;EACT;EAIA,MAAcrC,WACZJ,uBACAC,SACwD;AACxD,YAAQ,OAAOD,uBAAAA;MACb,KAAK,UAAU;AACb,eAAQ,MAAM,KAAKG,eAAeH,uBAAuBC,OAAAA,KAAc,MAAM,MAAMd,QAAQa,uBAAuBC,OAAAA;MACpH;MACA,SAAS;AACP,eAAO;aAAK,MAAM,KAAKE,eAAeH,uBAAuBC,OAAAA;aAAe,MAAM,MAAMd,QAAQa,uBAAuBC,OAAAA;UAAWV,OAChI0D,oCAAAA;MAEJ;IACF;EACF;EAIA,MAAc9C,eACZH,uBACAC,SACwD;AACxD,UAAMZ,aAAYY,mCAASZ,cAAa;AACxC,UAAM6D,OAAO7D,cAAc,UAAUA,cAAc;AACnD,YAAQ,OAAOW,uBAAAA;MACb,KAAK,UAAU;AACb,eAAOkD,OAAO,MAAM,KAAK9E,gBAAgBe,QAAQa,qBAAAA,IAAyBZ;MAC5E;MACA,SAAS;AACP,eAAO8D,OAAO,MAAM,KAAK9E,gBAAgBe,QAAQa,qBAAAA,IAAyBZ;MAC5E;IACF;EACF;AAIF;AArNUjB;AAGR,cAJoBD,eAIKiF,iBAA0B;EAACC;;AAJ/C,IAAelF,eAAf;","names":["AbstractNode","AbstractModuleInstance","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","resolve","undefined","direction","maxDepth","filter","manifest","ignoreAddresses","manifestHandler","register","_module","Error","registered","registeredModules","nameOrAddressOrFilter","options","visibility","resolvePrivate","resolveAll","unregister","discoverHandler","childMods","childModAddresses","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","privateModules","Promise","all","length","modules","private","publicModules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
@@ -0,0 +1,225 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
+ var __publicField = (obj, key, value) => {
5
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
+ return value;
7
+ };
8
+
9
+ // src/AbstractNode.ts
10
+ import { assertEx } from "@xylabs/assert";
11
+ import { AddressSchema } from "@xyo-network/address-payload-plugin";
12
+ import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
13
+ import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
14
+ import { AbstractModuleInstance } from "@xyo-network/module-abstract";
15
+ import { duplicateModules } from "@xyo-network/module-model";
16
+ import { CompositeModuleResolver } from "@xyo-network/module-resolver";
17
+ import { NodeAttachedQuerySchema, NodeAttachQuerySchema, NodeConfigSchema, NodeDetachQuerySchema, NodeRegisteredQuerySchema } from "@xyo-network/node-model";
18
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
19
+ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
20
+ privateResolver = new CompositeModuleResolver();
21
+ isNode = true;
22
+ get isModuleResolver() {
23
+ return true;
24
+ }
25
+ get queries() {
26
+ return [
27
+ NodeAttachQuerySchema,
28
+ NodeDetachQuerySchema,
29
+ NodeAttachedQuerySchema,
30
+ NodeRegisteredQuerySchema,
31
+ ...super.queries
32
+ ];
33
+ }
34
+ get _queryAccountPaths() {
35
+ return {
36
+ "network.xyo.query.node.attach": "1/1",
37
+ "network.xyo.query.node.attached": "1/2",
38
+ "network.xyo.query.node.detach": "1/3",
39
+ "network.xyo.query.node.registered": "1/4"
40
+ };
41
+ }
42
+ static isNode(module) {
43
+ return module.isNode;
44
+ }
45
+ async attached() {
46
+ return (await this.attachedModules()).map((module) => module.address);
47
+ }
48
+ async attachedModules() {
49
+ return (await (this.resolve(void 0, {
50
+ direction: "down",
51
+ maxDepth: 2
52
+ }) ?? [])).filter((module) => module.address !== this.address);
53
+ }
54
+ async manifest(ignoreAddresses) {
55
+ return await this.manifestHandler(ignoreAddresses);
56
+ }
57
+ register(_module) {
58
+ throw new Error("Method not implemented.");
59
+ }
60
+ registered() {
61
+ throw new Error("Method not implemented.");
62
+ }
63
+ registeredModules() {
64
+ throw new Error("Method not implemented.");
65
+ }
66
+ async resolve(nameOrAddressOrFilter, options) {
67
+ if (typeof nameOrAddressOrFilter === "string") {
68
+ switch (options == null ? void 0 : options.visibility) {
69
+ case "private": {
70
+ return await this.resolvePrivate(nameOrAddressOrFilter);
71
+ }
72
+ case "all": {
73
+ return await this.resolveAll(nameOrAddressOrFilter);
74
+ }
75
+ default: {
76
+ return await super.resolve(nameOrAddressOrFilter, options);
77
+ }
78
+ }
79
+ } else {
80
+ switch (options == null ? void 0 : options.visibility) {
81
+ case "all": {
82
+ return await this.resolveAll(nameOrAddressOrFilter);
83
+ }
84
+ case "private": {
85
+ return await this.resolvePrivate(nameOrAddressOrFilter);
86
+ }
87
+ default: {
88
+ return await super.resolve(nameOrAddressOrFilter, options);
89
+ }
90
+ }
91
+ }
92
+ }
93
+ unregister(_module) {
94
+ throw new Error("Method not implemented.");
95
+ }
96
+ async discoverHandler() {
97
+ const childMods = await this.attachedModules();
98
+ const childModAddresses = childMods.map((mod) => new PayloadBuilder({
99
+ schema: AddressSchema
100
+ }).fields({
101
+ address: mod.address,
102
+ name: mod.config.name
103
+ }).build());
104
+ return [
105
+ ...await super.discoverHandler(),
106
+ ...childModAddresses
107
+ ];
108
+ }
109
+ async manifestHandler(ignoreAddresses = []) {
110
+ const manifest = {
111
+ ...await super.manifestHandler(),
112
+ schema: NodeManifestPayloadSchema
113
+ };
114
+ const newIgnoreAddresses = [
115
+ ...ignoreAddresses,
116
+ this.address
117
+ ];
118
+ const notThisModule = /* @__PURE__ */ __name((module) => module.address !== this.address && !ignoreAddresses.includes(module.address), "notThisModule");
119
+ const toManifest = /* @__PURE__ */ __name((module) => module.manifest(newIgnoreAddresses), "toManifest");
120
+ const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest));
121
+ if (privateModules.length > 0) {
122
+ manifest.modules = manifest.modules ?? {};
123
+ manifest.modules.private = privateModules;
124
+ }
125
+ const publicModules = await Promise.all((await this.resolve()).filter(notThisModule).map(toManifest));
126
+ if (publicModules.length > 0) {
127
+ manifest.modules = manifest.modules ?? {};
128
+ manifest.modules.public = publicModules;
129
+ }
130
+ return manifest;
131
+ }
132
+ async queryHandler(query, payloads, queryConfig) {
133
+ const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
134
+ const queryPayload = await wrapper.getQuery();
135
+ assertEx(this.queryable(query, payloads, queryConfig));
136
+ const resultPayloads = [];
137
+ switch (queryPayload.schema) {
138
+ case NodeAttachQuerySchema: {
139
+ const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external);
140
+ if (address) {
141
+ const payload = new PayloadBuilder({
142
+ schema: AddressSchema
143
+ }).fields({
144
+ address
145
+ }).build();
146
+ resultPayloads.push(payload);
147
+ }
148
+ break;
149
+ }
150
+ case NodeDetachQuerySchema: {
151
+ const address = await this.detach(queryPayload.nameOrAddress);
152
+ if (address) {
153
+ const payload = new PayloadBuilder({
154
+ schema: AddressSchema
155
+ }).fields({
156
+ address
157
+ }).build();
158
+ resultPayloads.push(payload);
159
+ }
160
+ break;
161
+ }
162
+ case NodeAttachedQuerySchema: {
163
+ const addresses = await this.attached();
164
+ for (const address of addresses) {
165
+ const payload = new PayloadBuilder({
166
+ schema: AddressSchema
167
+ }).fields({
168
+ address
169
+ }).build();
170
+ resultPayloads.push(payload);
171
+ }
172
+ break;
173
+ }
174
+ case NodeRegisteredQuerySchema: {
175
+ const addresses = await this.registered();
176
+ for (const address of addresses) {
177
+ const payload = new PayloadBuilder({
178
+ schema: AddressSchema
179
+ }).fields({
180
+ address
181
+ }).build();
182
+ resultPayloads.push(payload);
183
+ }
184
+ break;
185
+ }
186
+ default:
187
+ return await super.queryHandler(query, payloads);
188
+ }
189
+ return resultPayloads;
190
+ }
191
+ async resolveAll(nameOrAddressOrFilter, options) {
192
+ switch (typeof nameOrAddressOrFilter) {
193
+ case "string": {
194
+ return await this.resolvePrivate(nameOrAddressOrFilter, options) ?? await super.resolve(nameOrAddressOrFilter, options);
195
+ }
196
+ default: {
197
+ return [
198
+ ...await this.resolvePrivate(nameOrAddressOrFilter, options),
199
+ ...await super.resolve(nameOrAddressOrFilter, options)
200
+ ].filter(duplicateModules);
201
+ }
202
+ }
203
+ }
204
+ async resolvePrivate(nameOrAddressOrFilter, options) {
205
+ const direction = (options == null ? void 0 : options.direction) ?? "all";
206
+ const down = direction === "down" || direction === "all";
207
+ switch (typeof nameOrAddressOrFilter) {
208
+ case "string": {
209
+ return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : void 0;
210
+ }
211
+ default: {
212
+ return down ? await this.privateResolver.resolve(nameOrAddressOrFilter) : void 0;
213
+ }
214
+ }
215
+ }
216
+ };
217
+ __name(_AbstractNode, "AbstractNode");
218
+ __publicField(_AbstractNode, "configSchemas", [
219
+ NodeConfigSchema
220
+ ]);
221
+ var AbstractNode = _AbstractNode;
222
+ export {
223
+ AbstractNode
224
+ };
225
+ //# sourceMappingURL=AbstractNode.mjs.map