@xyo-network/node-abstract 2.79.5 → 2.79.8

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.
@@ -15,7 +15,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
15
15
  protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
16
  static isNode(module: unknown): boolean;
17
17
  attached(): Promise<string[]>;
18
- attachedModules(): Promise<Module[]>;
18
+ attachedModules(maxDepth?: number): Promise<ModuleInstance[]>;
19
19
  manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
20
20
  register(_module: ModuleInstance): Promisable<void>;
21
21
  registered(): Promisable<string[]>;
@@ -23,7 +23,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
23
23
  resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
24
  resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
25
  unregister(_module: ModuleInstance): Promisable<this>;
26
- protected discoverHandler(): Promise<Payload[]>;
26
+ protected discoverHandler(maxDepth?: number): Promise<Payload[]>;
27
27
  protected manifestHandler(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
28
28
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
29
  private resolveAll;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
15
15
  protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
16
  static isNode(module: unknown): boolean;
17
17
  attached(): Promise<string[]>;
18
- attachedModules(): Promise<Module[]>;
18
+ attachedModules(maxDepth?: number): Promise<ModuleInstance[]>;
19
19
  manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
20
20
  register(_module: ModuleInstance): Promisable<void>;
21
21
  registered(): Promisable<string[]>;
@@ -23,7 +23,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
23
23
  resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
24
  resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
25
  unregister(_module: ModuleInstance): Promisable<this>;
26
- protected discoverHandler(): Promise<Payload[]>;
26
+ protected discoverHandler(maxDepth?: number): Promise<Payload[]>;
27
27
  protected manifestHandler(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
28
28
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
29
  private resolveAll;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
15
15
  protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
16
  static isNode(module: unknown): boolean;
17
17
  attached(): Promise<string[]>;
18
- attachedModules(): Promise<Module[]>;
18
+ attachedModules(maxDepth?: number): Promise<ModuleInstance[]>;
19
19
  manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
20
20
  register(_module: ModuleInstance): Promisable<void>;
21
21
  registered(): Promisable<string[]>;
@@ -23,7 +23,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
23
23
  resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
24
  resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
25
  unregister(_module: ModuleInstance): Promisable<this>;
26
- protected discoverHandler(): Promise<Payload[]>;
26
+ protected discoverHandler(maxDepth?: number): Promise<Payload[]>;
27
27
  protected manifestHandler(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
28
28
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
29
  private resolveAll;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
@@ -70,10 +70,10 @@ var AbstractNode = class extends import_module_abstract.AbstractModuleInstance {
70
70
  async attached() {
71
71
  return (await this.attachedModules()).map((module2) => module2.address);
72
72
  }
73
- async attachedModules() {
73
+ async attachedModules(maxDepth = 2) {
74
74
  return (await (this.resolve(void 0, {
75
75
  direction: "down",
76
- maxDepth: 2
76
+ maxDepth
77
77
  }) ?? [])).filter((module2) => module2.address !== this.address);
78
78
  }
79
79
  async manifest(maxDepth, ignoreAddresses) {
@@ -118,8 +118,8 @@ var AbstractNode = class extends import_module_abstract.AbstractModuleInstance {
118
118
  unregister(_module) {
119
119
  throw new Error("Method not implemented.");
120
120
  }
121
- async discoverHandler() {
122
- const childMods = await this.attachedModules();
121
+ async discoverHandler(maxDepth) {
122
+ const childMods = await this.attachedModules(maxDepth);
123
123
  const childModAddresses = childMods.map((mod) => new import_payload_builder.PayloadBuilder({
124
124
  schema: import_address_payload_plugin.AddressSchema
125
125
  }).fields({
@@ -127,7 +127,7 @@ var AbstractNode = class extends import_module_abstract.AbstractModuleInstance {
127
127
  name: mod.config.name
128
128
  }).build());
129
129
  return [
130
- ...await super.discoverHandler(),
130
+ ...await super.discoverHandler(maxDepth),
131
131
  ...childModAddresses
132
132
  ];
133
133
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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":"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","names":["AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\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(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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":"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","names":["AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down"]}
@@ -46,10 +46,10 @@ var AbstractNode = class extends AbstractModuleInstance {
46
46
  async attached() {
47
47
  return (await this.attachedModules()).map((module) => module.address);
48
48
  }
49
- async attachedModules() {
49
+ async attachedModules(maxDepth = 2) {
50
50
  return (await (this.resolve(void 0, {
51
51
  direction: "down",
52
- maxDepth: 2
52
+ maxDepth
53
53
  }) ?? [])).filter((module) => module.address !== this.address);
54
54
  }
55
55
  async manifest(maxDepth, ignoreAddresses) {
@@ -94,8 +94,8 @@ var AbstractNode = class extends AbstractModuleInstance {
94
94
  unregister(_module) {
95
95
  throw new Error("Method not implemented.");
96
96
  }
97
- async discoverHandler() {
98
- const childMods = await this.attachedModules();
97
+ async discoverHandler(maxDepth) {
98
+ const childMods = await this.attachedModules(maxDepth);
99
99
  const childModAddresses = childMods.map((mod) => new PayloadBuilder({
100
100
  schema: AddressSchema
101
101
  }).fields({
@@ -103,7 +103,7 @@ var AbstractNode = class extends AbstractModuleInstance {
103
103
  name: mod.config.name
104
104
  }).build());
105
105
  return [
106
- ...await super.discoverHandler(),
106
+ ...await super.discoverHandler(maxDepth),
107
107
  ...childModAddresses
108
108
  ];
109
109
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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":"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","names":["assertEx","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","CompositeModuleResolver","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down"]}
1
+ {"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\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(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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,SAASA,gBAAgB;AAEzB,SAAyBC,qBAAqB;AAC9C,SAASC,gCAAgC;AAEzC,SAAqDC,iCAAiC;AACtF,SAASC,8BAA8B;AACvC,SACEC,wBAOK;AACP,SAASC,+BAA+B;AACxC,SACEC,yBACAC,uBACAC,kBACAC,uBAMAC,iCACK;AACP,SAASC,sBAAsB;AAGxB,IAAeC,eAAf,cACGC,uBAAAA;EAjCV,OAiCUA;;;EAGR,OAAyBC,gBAA0B;IAACC;;EAEjCC,kBAAkB,IAAIC,wBAAAA;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,QAAiB;AAC7B,WAAQA,OAAwBR;EAClC;EAEA,MAAMS,WAA8B;AAClC,YAAQ,MAAM,KAAKC,gBAAe,GAAIC,IAAI,CAACH,WAAWA,OAAOI,OAAO;EACtE;EAEA,MAAMF,gBAAgBG,WAAW,GAA8B;AAC7D,YAAQ,OAAO,KAAKC,QAAQC,QAAW;MAAEC,WAAW;MAAQH;IAAS,CAAA,KAAM,CAAA,IAAKI,OAAO,CAACT,WAAWA,OAAOI,YAAY,KAAKA,OAAO;EACpI;EAEA,MAAeM,SAASL,UAAmBM,iBAA4D;AACrG,WAAO,MAAM,KAAKC,gBAAgBP,UAAUM,eAAAA;EAC9C;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,MAAeT,QACbY,uBACAC,SACwD;AAGxD,QAAI,OAAOD,0BAA0B,UAAU;AAC7C,cAAQC,SAASC,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,MAAMZ,QAAQY,uBAAuBC,OAAAA;QACpD;MACF;IACF,OAAO;AACL,cAAQA,SAASC,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,MAAMZ,QAAQY,uBAAuBC,OAAAA;QACpD;MACF;IACF;EACF;EAEAI,WAAWT,SAA2C;AACpD,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEA,MAAyBS,gBAAgBnB,UAAuC;AAC9E,UAAMoB,YAAY,MAAM,KAAKvB,gBAAgBG,QAAAA;AAC7C,UAAMqB,oBAAoBD,UAAUtB,IAAI,CAACwB,QACvC,IAAIC,eAA+B;MAAEC,QAAQC;IAAc,CAAA,EAAGC,OAAO;MAAE3B,SAASuB,IAAIvB;MAAS4B,MAAML,IAAIM,OAAOD;IAAK,CAAA,EAAGE,MAAK,CAAA;AAG7H,WAAO;SAAK,MAAM,MAAMV,gBAAgBnB,QAAAA;SAAeqB;;EACzD;EAEA,MAAyBd,gBAAgBP,UAAmBM,kBAA4B,CAAA,GAAoC;AAC1H,UAAMD,WAAgC;MAAE,GAAI,MAAM,MAAME,gBAAAA;MAAoBiB,QAAQM;IAA0B;AAC9G,UAAMC,qBAAqB;SAAIzB;MAAiB,KAAKP;;AAErD,UAAMiC,gBAAgB,wBAACrC,WAA2BA,OAAOI,YAAY,KAAKA,WAAW,CAACO,gBAAgB2B,SAAStC,OAAOI,OAAO,GAAvG;AACtB,UAAMmC,aAAa,wBAACvC,WAA2BA,OAAOU,SAASL,UAAU+B,kBAAAA,GAAtD;AAQnB,UAAMI,gBAAgB,MAAMC,QAAQC,KAAK,MAAM,KAAKpC,QAAQC,QAAW;MAAEC,WAAW;MAAQH;IAAS,CAAA,GAAII,OAAO4B,aAAAA,EAAelC,IAAIoC,UAAAA,CAAAA;AACnI,QAAIC,cAAcG,SAAS,GAAG;AAC5BjC,eAASkC,UAAUlC,SAASkC,WAAW,CAAC;AACxClC,eAASkC,QAAQC,SAASL;IAC5B;AAEA,WAAO9B;EACT;EAEA,MAAyBoC,aACvBC,OACAC,UACAC,aACmC;AACnC,UAAMC,UAAUC,yBAAyBC,WAAsBL,OAAOC,QAAAA;AACtE,UAAMK,eAAe,MAAMH,QAAQI,SAAQ;AAC3CC,aAAS,KAAKC,UAAUT,OAAOC,UAAUC,WAAAA,CAAAA;AACzC,UAAMQ,iBAA4B,CAAA;AAClC,YAAQJ,aAAaxB,QAAM;MACzB,KAAKlC,uBAAuB;AAC1B,cAAMS,UAAU,MAAM,KAAKsD,OAAOL,aAAaM,eAAeN,aAAaO,QAAQ;AACnF,YAAIxD,SAAS;AACX,gBAAMyD,UAAU,IAAIjC,eAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFuB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKjE,uBAAuB;AAC1B,cAAMQ,UAAU,MAAM,KAAK2D,OAAOV,aAAaM,aAAa;AAC5D,YAAIvD,SAAS;AACX,gBAAMyD,UAAU,IAAIjC,eAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFuB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAKhE,yBAAyB;AAC5B,cAAMmE,YAAY,MAAM,KAAK/D,SAAQ;AACrC,mBAAWG,WAAW4D,WAAW;AAC/B,gBAAMH,UAAU,IAAIjC,eAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFuB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA,KAAK/D,2BAA2B;AAC9B,cAAMkE,YAAY,MAAM,KAAKhD,WAAU;AACvC,mBAAWZ,WAAW4D,WAAW;AAC/B,gBAAMH,UAAU,IAAIjC,eAAe;YAAEC,QAAQC;UAAc,CAAA,EAAGC,OAAO;YAAE3B;UAAQ,CAAA,EAAG8B,MAAK;AACvFuB,yBAAeK,KAAKD,OAAAA;QACtB;AACA;MACF;MACA;AACE,eAAO,MAAM,MAAMf,aAAaC,OAAOC,QAAAA;IAC3C;AACA,WAAOS;EACT;EAIA,MAAcnC,WACZJ,uBACAC,SACwD;AACxD,YAAQ,OAAOD,uBAAAA;MACb,KAAK,UAAU;AACb,eAAQ,MAAM,KAAKG,eAAeH,uBAAuBC,OAAAA,KAAc,MAAM,MAAMb,QAAQY,uBAAuBC,OAAAA;MACpH;MACA,SAAS;AACP,eAAO;aAAK,MAAM,KAAKE,eAAeH,uBAAuBC,OAAAA;aAAe,MAAM,MAAMb,QAAQY,uBAAuBC,OAAAA;UAAWV,OAChIwD,gBAAAA;MAEJ;IACF;EACF;EAIA,MAAc5C,eACZH,uBACAC,SACwD;AACxD,UAAMX,YAAYW,SAASX,aAAa;AACxC,UAAM0D,OAAO1D,cAAc,UAAUA,cAAc;AACnD,YAAQ,OAAOU,uBAAAA;MACb,KAAK,UAAU;AACb,eAAOgD,OAAO,MAAM,KAAK5E,gBAAgBgB,QAAQY,qBAAAA,IAAyBX;MAC5E;MACA,SAAS;AACP,eAAO2D,OAAO,MAAM,KAAK5E,gBAAgBgB,QAAQY,qBAAAA,IAAyBX;MAC5E;IACF;EACF;AAIF;","names":["assertEx","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","CompositeModuleResolver","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down"]}
@@ -15,7 +15,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
15
15
  protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
16
  static isNode(module: unknown): boolean;
17
17
  attached(): Promise<string[]>;
18
- attachedModules(): Promise<Module[]>;
18
+ attachedModules(maxDepth?: number): Promise<ModuleInstance[]>;
19
19
  manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
20
20
  register(_module: ModuleInstance): Promisable<void>;
21
21
  registered(): Promisable<string[]>;
@@ -23,7 +23,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
23
23
  resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
24
  resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
25
  unregister(_module: ModuleInstance): Promisable<this>;
26
- protected discoverHandler(): Promise<Payload[]>;
26
+ protected discoverHandler(maxDepth?: number): Promise<Payload[]>;
27
27
  protected manifestHandler(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
28
28
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
29
  private resolveAll;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
15
15
  protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
16
  static isNode(module: unknown): boolean;
17
17
  attached(): Promise<string[]>;
18
- attachedModules(): Promise<Module[]>;
18
+ attachedModules(maxDepth?: number): Promise<ModuleInstance[]>;
19
19
  manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
20
20
  register(_module: ModuleInstance): Promisable<void>;
21
21
  registered(): Promisable<string[]>;
@@ -23,7 +23,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
23
23
  resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
24
  resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
25
  unregister(_module: ModuleInstance): Promisable<this>;
26
- protected discoverHandler(): Promise<Payload[]>;
26
+ protected discoverHandler(maxDepth?: number): Promise<Payload[]>;
27
27
  protected manifestHandler(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
28
28
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
29
  private resolveAll;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
15
15
  protected get _queryAccountPaths(): Record<NodeQueryBase['schema'], string>;
16
16
  static isNode(module: unknown): boolean;
17
17
  attached(): Promise<string[]>;
18
- attachedModules(): Promise<Module[]>;
18
+ attachedModules(maxDepth?: number): Promise<ModuleInstance[]>;
19
19
  manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
20
20
  register(_module: ModuleInstance): Promisable<void>;
21
21
  registered(): Promisable<string[]>;
@@ -23,7 +23,7 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
23
23
  resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
24
24
  resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
25
25
  unregister(_module: ModuleInstance): Promisable<this>;
26
- protected discoverHandler(): Promise<Payload[]>;
26
+ protected discoverHandler(maxDepth?: number): Promise<Payload[]>;
27
27
  protected manifestHandler(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload>;
28
28
  protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
29
29
  private resolveAll;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
@@ -69,10 +69,10 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
69
69
  async attached() {
70
70
  return (await this.attachedModules()).map((module2) => module2.address);
71
71
  }
72
- async attachedModules() {
72
+ async attachedModules(maxDepth = 2) {
73
73
  return (await (this.resolve(void 0, {
74
74
  direction: "down",
75
- maxDepth: 2
75
+ maxDepth
76
76
  }) ?? [])).filter((module2) => module2.address !== this.address);
77
77
  }
78
78
  async manifest(maxDepth, ignoreAddresses) {
@@ -117,8 +117,8 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
117
117
  unregister(_module) {
118
118
  throw new Error("Method not implemented.");
119
119
  }
120
- async discoverHandler() {
121
- const childMods = await this.attachedModules();
120
+ async discoverHandler(maxDepth) {
121
+ const childMods = await this.attachedModules(maxDepth);
122
122
  const childModAddresses = childMods.map((mod) => new import_payload_builder.PayloadBuilder({
123
123
  schema: import_address_payload_plugin.AddressSchema
124
124
  }).fields({
@@ -126,7 +126,7 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
126
126
  name: mod.config.name
127
127
  }).build());
128
128
  return [
129
- ...await super.discoverHandler(),
129
+ ...await super.discoverHandler(maxDepth),
130
130
  ...childModAddresses
131
131
  ];
132
132
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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":"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","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\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(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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":"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","names":["AbstractNode","AbstractModuleInstance","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
@@ -45,10 +45,10 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
45
45
  async attached() {
46
46
  return (await this.attachedModules()).map((module) => module.address);
47
47
  }
48
- async attachedModules() {
48
+ async attachedModules(maxDepth = 2) {
49
49
  return (await (this.resolve(void 0, {
50
50
  direction: "down",
51
- maxDepth: 2
51
+ maxDepth
52
52
  }) ?? [])).filter((module) => module.address !== this.address);
53
53
  }
54
54
  async manifest(maxDepth, ignoreAddresses) {
@@ -93,8 +93,8 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
93
93
  unregister(_module) {
94
94
  throw new Error("Method not implemented.");
95
95
  }
96
- async discoverHandler() {
97
- const childMods = await this.attachedModules();
96
+ async discoverHandler(maxDepth) {
97
+ const childMods = await this.attachedModules(maxDepth);
98
98
  const childModAddresses = childMods.map((mod) => new PayloadBuilder({
99
99
  schema: AddressSchema
100
100
  }).fields({
@@ -102,7 +102,7 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
102
102
  name: mod.config.name
103
103
  }).build());
104
104
  return [
105
- ...await super.discoverHandler(),
105
+ ...await super.discoverHandler(maxDepth),
106
106
  ...childModAddresses
107
107
  ];
108
108
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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":"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","names":["assertEx","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","CompositeModuleResolver","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
1
+ {"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleManifestPayload, 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'\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(maxDepth = 2): Promise<ModuleInstance[]> {\n return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, 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(maxDepth?: number): Promise<Payload[]> {\n const childMods = await this.attachedModules(maxDepth)\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(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {\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(maxDepth, 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(undefined, { direction: 'down', maxDepth })).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":"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","names":["assertEx","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","CompositeModuleResolver","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","privateResolver","CompositeModuleResolver","isNode","isModuleResolver","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedModules","map","address","maxDepth","resolve","undefined","direction","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","publicModules","Promise","all","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","duplicateModules","down","configSchemas","NodeConfigSchema"]}
package/package.json CHANGED
@@ -10,18 +10,18 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^2.13.8",
14
- "@xylabs/promise": "^2.13.8",
15
- "@xyo-network/address-payload-plugin": "~2.79.5",
16
- "@xyo-network/boundwitness-builder": "~2.79.5",
17
- "@xyo-network/boundwitness-model": "~2.79.5",
18
- "@xyo-network/manifest-model": "~2.79.5",
19
- "@xyo-network/module-abstract": "~2.79.5",
20
- "@xyo-network/module-model": "~2.79.5",
21
- "@xyo-network/module-resolver": "~2.79.5",
22
- "@xyo-network/node-model": "~2.79.5",
23
- "@xyo-network/payload-builder": "~2.79.5",
24
- "@xyo-network/payload-model": "~2.79.5"
13
+ "@xylabs/assert": "^2.13.9",
14
+ "@xylabs/promise": "^2.13.9",
15
+ "@xyo-network/address-payload-plugin": "~2.79.8",
16
+ "@xyo-network/boundwitness-builder": "~2.79.8",
17
+ "@xyo-network/boundwitness-model": "~2.79.8",
18
+ "@xyo-network/manifest-model": "~2.79.8",
19
+ "@xyo-network/module-abstract": "~2.79.8",
20
+ "@xyo-network/module-model": "~2.79.8",
21
+ "@xyo-network/module-resolver": "~2.79.8",
22
+ "@xyo-network/node-model": "~2.79.8",
23
+ "@xyo-network/payload-builder": "~2.79.8",
24
+ "@xyo-network/payload-model": "~2.79.8"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@xylabs/ts-scripts-yarn3": "^3.1.21",
@@ -68,5 +68,5 @@
68
68
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
69
69
  },
70
70
  "sideEffects": false,
71
- "version": "2.79.5"
71
+ "version": "2.79.8"
72
72
  }
@@ -65,11 +65,8 @@ export abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEve
65
65
  return (await this.attachedModules()).map((module) => module.address)
66
66
  }
67
67
 
68
- async attachedModules(): Promise<Module[]> {
69
- // return (await (this.resolve(undefined, { direction: 'down', maxDepth: CompositeModuleResolver.defaultMaxDepth }) ?? [])).filter(
70
- // (module) => module.address !== this.address,
71
- // )
72
- return (await (this.resolve(undefined, { direction: 'down', maxDepth: 2 }) ?? [])).filter((module) => module.address !== this.address)
68
+ async attachedModules(maxDepth = 2): Promise<ModuleInstance[]> {
69
+ return (await (this.resolve(undefined, { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)
73
70
  }
74
71
 
75
72
  override async manifest(maxDepth?: number, ignoreAddresses?: string[]): Promise<ModuleManifestPayload> {
@@ -127,13 +124,13 @@ export abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEve
127
124
  throw new Error('Method not implemented.')
128
125
  }
129
126
 
130
- protected override async discoverHandler(): Promise<Payload[]> {
131
- const childMods = await this.attachedModules()
127
+ protected override async discoverHandler(maxDepth?: number): Promise<Payload[]> {
128
+ const childMods = await this.attachedModules(maxDepth)
132
129
  const childModAddresses = childMods.map((mod) =>
133
130
  new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),
134
131
  )
135
132
 
136
- return [...(await super.discoverHandler()), ...childModAddresses]
133
+ return [...(await super.discoverHandler(maxDepth)), ...childModAddresses]
137
134
  }
138
135
 
139
136
  protected override async manifestHandler(maxDepth?: number, ignoreAddresses: string[] = []): Promise<ModuleManifestPayload> {