@xyo-network/node-abstract 2.94.3 → 2.94.5
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.
- package/dist/browser/AbstractNode.d.cts.map +1 -1
- package/dist/browser/AbstractNode.d.mts.map +1 -1
- package/dist/browser/AbstractNode.d.ts.map +1 -1
- package/dist/browser/index.cjs +2 -2
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/node/AbstractNode.d.cts.map +1 -1
- package/dist/node/AbstractNode.d.mts.map +1 -1
- package/dist/node/AbstractNode.d.ts.map +1 -1
- package/dist/node/index.cjs +2 -2
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +14 -14
- package/src/AbstractNode.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,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;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAI,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAItG,yEAAyE;IAC1D,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC3E,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACvF,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAChH,yEAAyE;IAC1D,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAiDvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY1D,eAAe,CAAC,QAAQ,SAAI,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAuB9F,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;YA6CtB,UAAU;YAoBV,cAAc;IAsB5B,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -27,7 +27,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
27
27
|
|
|
28
28
|
// src/AbstractNode.ts
|
|
29
29
|
var import_assert = require("@xylabs/assert");
|
|
30
|
-
var
|
|
30
|
+
var import_object = require("@xylabs/object");
|
|
31
31
|
var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
|
|
32
32
|
var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
|
|
33
33
|
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
@@ -42,7 +42,7 @@ var AbstractNode = class _AbstractNode extends import_module_abstract.AbstractMo
|
|
|
42
42
|
static configSchemas = [
|
|
43
43
|
import_node_model.NodeConfigSchema
|
|
44
44
|
];
|
|
45
|
-
static uniqueName = (0,
|
|
45
|
+
static uniqueName = (0, import_object.globallyUnique)("AbstractNode", _AbstractNode, "xyo");
|
|
46
46
|
isNode = true;
|
|
47
47
|
get queries() {
|
|
48
48
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { globallyUnique } from '@xyo-network/account'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
3
3
|
|
|
4
4
|
// src/AbstractNode.ts
|
|
5
5
|
import { assertEx } from "@xylabs/assert";
|
|
6
|
-
import { globallyUnique } from "@
|
|
6
|
+
import { globallyUnique } from "@xylabs/object";
|
|
7
7
|
import { AddressSchema } from "@xyo-network/address-payload-plugin";
|
|
8
8
|
import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
9
9
|
import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { globallyUnique } from '@xyo-network/account'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,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;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAI,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAItG,yEAAyE;IAC1D,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC3E,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACvF,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAChH,yEAAyE;IAC1D,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAiDvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY1D,eAAe,CAAC,QAAQ,SAAI,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAuB9F,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;YA6CtB,UAAU;YAoBV,cAAc;IAsB5B,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -32,7 +32,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
32
32
|
|
|
33
33
|
// src/AbstractNode.ts
|
|
34
34
|
var import_assert = require("@xylabs/assert");
|
|
35
|
-
var
|
|
35
|
+
var import_object = require("@xylabs/object");
|
|
36
36
|
var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
|
|
37
37
|
var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
|
|
38
38
|
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
@@ -263,7 +263,7 @@ __name(_AbstractNode, "AbstractNode");
|
|
|
263
263
|
__publicField(_AbstractNode, "configSchemas", [
|
|
264
264
|
import_node_model.NodeConfigSchema
|
|
265
265
|
]);
|
|
266
|
-
__publicField(_AbstractNode, "uniqueName", (0,
|
|
266
|
+
__publicField(_AbstractNode, "uniqueName", (0, import_object.globallyUnique)("AbstractNode", _AbstractNode, "xyo"));
|
|
267
267
|
var AbstractNode = _AbstractNode;
|
|
268
268
|
// Annotate the CommonJS export names for ESM import in node:
|
|
269
269
|
0 && (module.exports = {
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { globallyUnique } from '@xyo-network/account'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
package/dist/node/index.js
CHANGED
|
@@ -8,7 +8,7 @@ var __publicField = (obj, key, value) => {
|
|
|
8
8
|
|
|
9
9
|
// src/AbstractNode.ts
|
|
10
10
|
import { assertEx } from "@xylabs/assert";
|
|
11
|
-
import { globallyUnique } from "@
|
|
11
|
+
import { globallyUnique } from "@xylabs/object";
|
|
12
12
|
import { AddressSchema } from "@xyo-network/address-payload-plugin";
|
|
13
13
|
import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
14
14
|
import { NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { globallyUnique } from '@xyo-network/account'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\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 ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\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 static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['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<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 5): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 5, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), 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 - 1, 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 publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.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 = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ 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 = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
package/package.json
CHANGED
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^3.0.
|
|
14
|
-
"@xylabs/hex": "^3.0.
|
|
15
|
-
"@xylabs/
|
|
16
|
-
"@
|
|
17
|
-
"@xyo-network/address-payload-plugin": "~2.94.
|
|
18
|
-
"@xyo-network/boundwitness-model": "~2.94.
|
|
19
|
-
"@xyo-network/boundwitness-wrapper": "~2.94.
|
|
20
|
-
"@xyo-network/manifest-model": "~2.94.
|
|
21
|
-
"@xyo-network/module-abstract": "~2.94.
|
|
22
|
-
"@xyo-network/module-model": "~2.94.
|
|
23
|
-
"@xyo-network/node-model": "~2.94.
|
|
24
|
-
"@xyo-network/payload-builder": "~2.94.
|
|
25
|
-
"@xyo-network/payload-model": "~2.94.
|
|
13
|
+
"@xylabs/assert": "^3.0.25",
|
|
14
|
+
"@xylabs/hex": "^3.0.25",
|
|
15
|
+
"@xylabs/object": "^3.0.25",
|
|
16
|
+
"@xylabs/promise": "^3.0.25",
|
|
17
|
+
"@xyo-network/address-payload-plugin": "~2.94.5",
|
|
18
|
+
"@xyo-network/boundwitness-model": "~2.94.5",
|
|
19
|
+
"@xyo-network/boundwitness-wrapper": "~2.94.5",
|
|
20
|
+
"@xyo-network/manifest-model": "~2.94.5",
|
|
21
|
+
"@xyo-network/module-abstract": "~2.94.5",
|
|
22
|
+
"@xyo-network/module-model": "~2.94.5",
|
|
23
|
+
"@xyo-network/node-model": "~2.94.5",
|
|
24
|
+
"@xyo-network/payload-builder": "~2.94.5",
|
|
25
|
+
"@xyo-network/payload-model": "~2.94.5"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@xylabs/ts-scripts-yarn3": "^3.5.2",
|
|
@@ -68,6 +68,6 @@
|
|
|
68
68
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
69
69
|
},
|
|
70
70
|
"sideEffects": false,
|
|
71
|
-
"version": "2.94.
|
|
71
|
+
"version": "2.94.5",
|
|
72
72
|
"type": "module"
|
|
73
73
|
}
|
package/src/AbstractNode.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import { Address } from '@xylabs/hex'
|
|
3
|
+
import { globallyUnique } from '@xylabs/object'
|
|
3
4
|
import { Promisable } from '@xylabs/promise'
|
|
4
|
-
import { globallyUnique } from '@xyo-network/account'
|
|
5
5
|
import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
6
6
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model'
|
|
7
7
|
import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|