@xyo-network/node-abstract 2.74.4 → 2.75.0

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