@xyo-network/module-resolver 5.3.29 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1679
- package/dist/neutral/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/neutral/ResolveHelper/ResolveHelper.d.ts +26 -0
- package/dist/neutral/ResolveHelper/ResolveHelper.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/ResolveHelperStatic.d.ts +7 -0
- package/dist/neutral/ResolveHelper/ResolveHelperStatic.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/index.d.ts +10 -0
- package/dist/neutral/ResolveHelper/index.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/model.d.ts +2 -0
- package/dist/neutral/ResolveHelper/model.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/resolveAddressToInstance.d.ts +9 -0
- package/dist/neutral/ResolveHelper/resolveAddressToInstance.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/resolveAll.d.ts +6 -0
- package/dist/neutral/ResolveHelper/resolveAll.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/resolveLocalNameToAddress.d.ts +8 -0
- package/dist/neutral/ResolveHelper/resolveLocalNameToAddress.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/resolveLocalNameToInstance.d.ts +7 -0
- package/dist/neutral/ResolveHelper/resolveLocalNameToInstance.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/resolvePathToAddress.d.ts +4 -0
- package/dist/neutral/ResolveHelper/resolvePathToAddress.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/resolvePathToInstance.d.ts +3 -0
- package/dist/neutral/ResolveHelper/resolvePathToInstance.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/traceModuleIdentifier.d.ts +4 -0
- package/dist/neutral/ResolveHelper/traceModuleIdentifier.d.ts.map +1 -0
- package/dist/neutral/ResolveHelper/transformModuleIdentifier.d.ts +3 -0
- package/dist/neutral/ResolveHelper/transformModuleIdentifier.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +1 -0
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +374 -32
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +21 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractModuleResolver.ts","../../src/CompositeModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/NameRegistrarTransformer.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["import type {\n Address, BaseParams, Promisable,\n} from '@xylabs/sdk-js'\nimport {\n assertEx, Base, toSafeJsonString,\n} from '@xylabs/sdk-js'\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport {\n asModuleInstance,\n ObjectResolverPriority,\n} from '@xyo-network/module-model'\n\nexport interface ModuleResolverParams extends BaseParams {\n priority?: ObjectResolverPriority\n root: ModuleInstance\n}\n\nexport abstract class AbstractModuleResolver<TParams extends ModuleResolverParams = ModuleResolverParams>\n extends Base<TParams>\n implements ModuleResolverInstance {\n get priority() {\n return this.params.priority ?? ObjectResolverPriority.Normal\n }\n\n set priority(value: ObjectResolverPriority) {\n this.params.priority = value\n }\n\n get root() {\n return assertEx(this.params.root, () => 'root is not set')\n }\n\n async resolve<T extends ModuleInstance = ModuleInstance>(): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T[] | T | undefined> {\n if (id === '*') {\n const values = await this.resolveHandler(id, options)\n assertEx(Array.isArray(values), () => 'resolveHandler returned a non-array')\n return values.map(value =>\n asModuleInstance<T>(value, () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `resolveHandler returned invalid result (*) [${(value as any)?.constructor?.name}][${toSafeJsonString(value)}]`\n }, { required: true }))\n }\n switch (typeof id) {\n case 'string': {\n const [value] = await this.resolveHandler(id, options)\n return asModuleInstance<T>(\n value,\n () =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n `resolveHandler returned invalid result (string) [${(value as any)?.constructor?.name}][${toSafeJsonString(value)}]`,\n )\n }\n default: {\n break\n }\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ObjectFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ObjectFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return await Promise.resolve([])\n }\n\n abstract addResolver(resolver: ModuleResolverInstance): this\n abstract removeResolver(resolver: ModuleResolverInstance): this\n\n abstract resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[]>\n\n abstract resolveIdentifier(id: ModuleIdentifier, options?: ObjectFilterOptions): Promisable<Address | undefined>\n}\n","/* eslint-disable max-statements */\nimport type { Address, Promisable } from '@xylabs/sdk-js'\nimport {\n assertEx,\n exists, isDefined, isString,\n} from '@xylabs/sdk-js'\nimport type {\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport {\n duplicateModules,\n ObjectResolverPriority,\n ResolveHelper,\n} from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport type { ModuleResolverParams } from './AbstractModuleResolver.ts'\nimport { AbstractModuleResolver } from './AbstractModuleResolver.ts'\nimport { SimpleModuleResolver } from './SimpleModuleResolver.ts'\n\nexport interface CompositeModuleResolverParams extends ModuleResolverParams {\n allowNameResolution?: boolean\n cache?: CacheConfig\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nconst moduleIdentifierParts = (moduleIdentifier: ModuleIdentifier): ModuleIdentifierPart[] => {\n return moduleIdentifier?.split(':') as ModuleIdentifierPart[]\n}\n\nexport class CompositeModuleResolver<T extends CompositeModuleResolverParams = CompositeModuleResolverParams>\n extends AbstractModuleResolver<T>\n implements ModuleRepository, ModuleResolverInstance {\n static readonly defaultMaxDepth = 3\n\n protected _cache: LRUCache<ModuleIdentifier, ModuleInstance>\n protected resolvers: ModuleResolverInstance[] = []\n private _allowAddResolver = true\n private _localResolver: SimpleModuleResolver\n\n constructor(params: T) {\n super(params)\n const localResolver = new SimpleModuleResolver({ allowNameResolution: params.allowNameResolution, root: params.root })\n this.addResolver(localResolver)\n const { max = 100, ttl = 1000 * 5 /* five seconds */ } = params.cache ?? {}\n this._cache = new LRUCache<ModuleIdentifier, ModuleInstance>({\n max, ttl, ...params.cache,\n })\n this._localResolver = localResolver\n }\n\n get allowAddResolver() {\n return this._allowAddResolver\n }\n\n set allowAddResolver(value: boolean) {\n this.resolvers = [this._localResolver]\n this._allowAddResolver = value\n }\n\n get allowNameResolution() {\n return this.params.allowNameResolution ?? true\n }\n\n private get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers ?? ResolveHelper.transformers\n }\n\n add(mod: ModuleInstance): this\n add(mod: ModuleInstance[]): this\n add(mod: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(mod)) {\n for (const modItem of mod) this.addSingleModule(modItem)\n } else {\n this.addSingleModule(mod)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolverInstance): this {\n if (this.allowAddResolver) {\n this.resolvers.push(resolver)\n }\n return this\n }\n\n remove(addresses: Address[] | Address): this {\n if (Array.isArray(addresses)) {\n for (const address of addresses) this.removeSingleModule(address)\n } else {\n this.removeSingleModule(addresses)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolverInstance): this {\n this.resolvers = this.resolvers.filter(item => item !== resolver)\n return this\n }\n\n // eslint-disable-next-line complexity\n async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T[]> {\n const mutatedOptions = { ...options, maxDepth: options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth }\n\n // resolve all\n if (id === '*') {\n // wen't too far?\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n\n // identity resolve?\n if (mutatedOptions.maxDepth === 0) {\n return (await this._localResolver.resolve('*', mutatedOptions)) ?? []\n }\n\n const childOptions = { ...mutatedOptions, maxDepth: mutatedOptions?.maxDepth - 1 }\n\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>('*', childOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter((v, i, a) => duplicateModules(v, i, a))\n }\n\n if (typeof id === 'string') {\n // wen't too far?\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n\n // resolve ModuleIdentifier\n const idParts = moduleIdentifierParts(id)\n if (idParts.length > 1) {\n const mod = await this.resolveMultipartIdentifier<T>(id)\n return (\n mod\n ? Array.isArray(mod)\n ? mod\n : [mod]\n : []\n )\n }\n const resolvedId = await ResolveHelper.transformModuleIdentifier(id, this.moduleIdentifierTransformers)\n if (isString(resolvedId)) {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const cachedResult = this._cache.get(resolvedId)\n if (cachedResult) {\n if (cachedResult.status === 'error') {\n this._cache.delete(id)\n } else {\n return [cachedResult] as T[]\n }\n }\n\n // identity resolve?\n if (mutatedOptions.maxDepth === 0) {\n const mod = await this._localResolver.resolve(resolvedId, mutatedOptions)\n return (\n isDefined(mod)\n ? Array.isArray(mod)\n ? mod\n : [mod]\n : []\n )\n }\n\n // recursive function to resolve by priority\n const resolvePriority = async (priority: ObjectResolverPriority): Promise<T | undefined> => {\n const resolvers = this.resolvers.filter(resolver => resolver.priority === priority)\n const results: T[] = (\n await Promise.all(\n resolvers.map(async (resolver) => {\n const result: T | undefined = await resolver.resolve<T>(resolvedId, mutatedOptions)\n return result\n }),\n )\n ).filter(exists)\n\n const result: T | undefined = results.filter(exists).findLast((v, i, a) => duplicateModules(v, i, a))\n if (result) {\n this._cache.set(resolvedId, result)\n return result\n }\n // we know that ObjectResolverPriority.VeryLow is the minimum priority, so we can subtract 1 from the rest\n return priority === ObjectResolverPriority.VeryLow ? undefined : await resolvePriority((priority - 1) as ObjectResolverPriority)\n }\n const mod = await resolvePriority(ObjectResolverPriority.VeryHigh)\n return (\n mod\n ? Array.isArray(mod)\n ? mod\n : [mod]\n : []\n )\n }\n }\n return []\n }\n\n async resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promise<Address | undefined> {\n const idParts = id.split(':')\n if (idParts.length > 1) {\n return this.resolveComplexIdentifier(id)\n }\n const results = (\n await Promise.all(\n this.resolvers.map(async (resolver) => {\n return await resolver.resolveIdentifier(id)\n }),\n )\n ).filter(exists)\n const result = results.shift()\n if (results.length > 0) {\n for (const altResult of results) {\n assertEx(altResult === result, () => `Inconsistent results for ${id} [${result}][${altResult}]`)\n }\n }\n return result\n }\n\n protected resolveComplexIdentifier(_id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<Address | undefined> {\n throw new Error('Method not implemented.')\n }\n\n private addSingleModule(mod?: ModuleInstance) {\n if (mod) {\n this._localResolver.add(mod)\n }\n }\n\n private removeSingleModule(address: Address) {\n this._localResolver.remove(address)\n }\n\n private async resolveMultipartIdentifier<T extends ModuleInstance = ModuleInstance>(moduleIdentifier: ModuleIdentifier): Promise<T | undefined> {\n const idParts = moduleIdentifierParts(moduleIdentifier)\n assertEx(idParts.length >= 2, () => 'Not a valid multipart identifier')\n const id = assertEx(idParts.shift())\n const mod = (await this.resolve<T>(id)) ?? (await this.resolvePrivate<T>(id))\n return (await mod?.resolve<T>(idParts.join(':'))) ?? (await mod?.resolvePrivate<T>(idParts.join(':')))\n }\n}\n","import type { Address, Promisable } from '@xylabs/sdk-js'\nimport {\n assertEx, exists, isAddress,\n} from '@xylabs/sdk-js'\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleName,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport { isModuleName } from '@xyo-network/module-model'\n\nimport type { ModuleResolverParams } from './AbstractModuleResolver.ts'\nimport { AbstractModuleResolver } from './AbstractModuleResolver.ts'\n\nexport type SimpleModuleResolverParams = ModuleResolverParams & {\n allowNameResolution?: boolean\n}\n\nexport class SimpleModuleResolver extends AbstractModuleResolver<SimpleModuleResolverParams> implements ModuleRepository {\n private modules: Record<Address, ModuleInstance> = {}\n private nameToModule: Record<ModuleName, ModuleInstance> = {}\n\n constructor(params: SimpleModuleResolverParams) {\n super(params)\n }\n\n get allowNameResolution() {\n return this.params.allowNameResolution ?? true\n }\n\n add(mods: ModuleInstance): this\n add(mods: ModuleInstance[]): this\n add(mods: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(mods)) {\n for (const mod of mods) this.addSingleModule(mod)\n } else {\n this.addSingleModule(mods)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolverInstance): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: Address | Address[]): this {\n if (Array.isArray(address)) {\n for (const addr of address) this.removeSingleModule(addr)\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolverInstance): this {\n throw 'Removing resolvers not supported'\n }\n\n resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[]> {\n const unfiltered = (() => {\n if (id) {\n if (typeof id === 'string') {\n if (id === '*') {\n return Object.values(this.modules) as T[]\n }\n const name = isModuleName(id) ? id : undefined\n const address = isAddress(id) ? id : undefined\n assertEx(name || address, () => 'module identifier must be a ModuleName or Address')\n return (\n (name ? this.resolveByName<T>(Object.values(this.modules), [name]).pop() : undefined)\n ?? (address ? this.resolveByAddress<T>(this.modules, [address]).pop() : undefined)\n )\n }\n } else {\n return Object.values(this.modules) as T[]\n }\n })()\n const identity = options?.identity\n if (identity) {\n return (\n Array.isArray(unfiltered)\n ? unfiltered?.filter(mod => identity(mod))\n : identity(unfiltered)\n ? [unfiltered]\n : []\n )\n } else {\n return (\n unfiltered\n ? Array.isArray(unfiltered)\n ? unfiltered\n : [unfiltered]\n : []\n )\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<Address | undefined> {\n // check if id is a name of one of modules in the resolver\n const moduleFromName = this.nameToModule[id]\n if (moduleFromName) {\n return moduleFromName.address\n }\n\n // check if any of the modules have the id as an address\n for (const mod of Object.values(this.modules)) {\n if (mod.address === id) {\n return mod.address\n }\n }\n }\n\n private addSingleModule(mod?: ModuleInstance) {\n if (mod) {\n const modName = mod.modName\n if (modName && this.allowNameResolution) {\n // check for collision\n assertEx(this.nameToModule[modName] === undefined, () => `Module with name ${modName} already added`)\n this.nameToModule[modName] = mod\n }\n this.modules[mod.address] = mod\n }\n }\n\n private removeSingleModule(address: Address) {\n assertEx(isAddress(address), () => 'Invalid address')\n const mod = assertEx(this.modules[address], () => 'Address not found in modules')\n delete this.modules[address]\n const modName = mod.modName\n if (modName) {\n delete this.nameToModule[modName]\n }\n }\n\n private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: Record<Address, ModuleInstance>, address: Address[]): T[] {\n return (\n address.map((address) => {\n return modules[address]\n })\n ).filter(exists) as T[]\n }\n\n private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name: ModuleName[]): T[] {\n return (\n name.map((name) => {\n return modules.find(mod => mod.modName === name)\n })\n ).filter(exists) as T[]\n }\n\n private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query: string[][]): T[] {\n return (\n modules.filter(mod =>\n // eslint-disable-next-line unicorn/no-array-reduce\n query?.reduce((supported, queryList) => {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n queryList.reduce((supported, query) => {\n const queryable = mod.queries.includes(query)\n return supported && queryable\n }, true) || supported\n )\n }, false))\n ).filter(exists) as T[]\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport type { DivinerInstance } from '@xyo-network/diviner-model'\nimport { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport type { ModuleIdentifier, ModuleIdentifierTransformer } from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nexport class NameRegistrarTransformer implements ModuleIdentifierTransformer {\n private _cache: LRUCache<ModuleIdentifier, ModuleIdentifier> = new LRUCache<ModuleIdentifier, ModuleIdentifier>({ max: 1000, ttl: 1000 * 5 })\n\n private registrarDiviner: DivinerInstance\n private root: string\n\n constructor(\n registrarDiviner: DivinerInstance,\n root: string,\n ) {\n this.registrarDiviner = registrarDiviner\n this.root = root\n }\n\n async transform(identifier: ModuleIdentifier): Promise<ModuleIdentifier> {\n const parts = identifier.split(':')\n const first = parts.shift()\n const nameParts = first?.split('.')\n if (nameParts?.length === 2 && nameParts[1] === this.root) {\n // check cache\n const cachedResult = this._cache.get(identifier)\n if (isDefined(cachedResult)) return cachedResult\n\n // not cached, so check registrar\n const query = {\n domain: nameParts[0], order: 'desc' as const, schema: PayloadDivinerQuerySchema, tld: nameParts[1],\n }\n const result = await this.registrarDiviner?.divine([query])\n const resultPayload = result?.shift()\n if (isUndefined(resultPayload)) {\n throw new Error(`Unable to resolve registrar name (failed) [${first}]`)\n }\n // TODO: Use proper types for this check\n if (isDefined(resultPayload)) {\n const address = (resultPayload as unknown as { address: Address[] }).address?.shift()\n if (address) {\n this._cache.set(identifier, address)\n return address\n }\n }\n throw new Error(`Unable to resolve registrar name (not found) [${first}]`)\n }\n return identifier\n }\n}\n","import type {\n ModuleIdentifier, ModuleResolver,\n QueryableModule,\n} from '@xyo-network/module-model'\n\nexport interface ModuleResolvedEventArgs {\n id?: ModuleIdentifier\n mod: QueryableModule\n}\n\nexport interface ResolverEventEmitter {\n on(event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void): void\n}\n\ntype ListenerFunction = (args: ModuleResolvedEventArgs) => void\n\nconst getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {\n const listeners: ListenerFunction[] = []\n const emit = (event: 'moduleResolved', args: ModuleResolvedEventArgs): boolean => {\n if (listeners.length === 0) return false\n for (const listener of listeners) listener(args)\n return true\n }\n const onModuleResolved = (mod: QueryableModule, id?: ModuleIdentifier) => {\n const args = { id, mod }\n emit('moduleResolved', args)\n }\n\n const { resolve } = resolver\n function originalResolve(filter?: ModuleIdentifier) {\n return resolve.bind(resolver)(filter)\n }\n\n return {\n on: (event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void) => {\n listeners.push(listener)\n },\n resolve: async (id?: ModuleIdentifier): Promise<QueryableModule[]> => {\n const modulesResult = await originalResolve(id) ?? []\n const modules = Array.isArray(modulesResult) ? modulesResult : [modulesResult]\n\n await Promise.allSettled(modules.map(mod => onModuleResolved(mod, id)))\n return modules\n },\n }\n}\n\nexport const mixinResolverEventEmitter = <T extends ModuleResolver = ModuleResolver>(resolver: T): T & ResolverEventEmitter => {\n const mixin = getMixin(resolver)\n return Object.assign(resolver, mixin)\n}\n"],"mappings":";AAGA;AAAA,EACE;AAAA,EAAU;AAAA,EAAM;AAAA,OACX;AAQP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAOA,IAAe,yBAAf,cACG,KAC0B;AAAA,EAClC,IAAI,WAAW;AACb,WAAO,KAAK,OAAO,YAAY,uBAAuB;AAAA,EACxD;AAAA,EAEA,IAAI,SAAS,OAA+B;AAC1C,SAAK,OAAO,WAAW;AAAA,EACzB;AAAA,EAEA,IAAI,OAAO;AACT,WAAO,SAAS,KAAK,OAAO,MAAM,MAAM,iBAAiB;AAAA,EAC3D;AAAA,EAKA,MAAM,QACJ,KAAuB,KACvB,SAC8B;AAC9B,QAAI,OAAO,KAAK;AACd,YAAM,SAAS,MAAM,KAAK,eAAe,IAAI,OAAO;AACpD,eAAS,MAAM,QAAQ,MAAM,GAAG,MAAM,qCAAqC;AAC3E,aAAO,OAAO,IAAI,WAChB,iBAAoB,OAAO,MAAM;AAE/B,eAAO,+CAAgD,OAAe,aAAa,IAAI,KAAK,iBAAiB,KAAK,CAAC;AAAA,MACrH,GAAG,EAAE,UAAU,KAAK,CAAC,CAAC;AAAA,IAC1B;AACA,YAAQ,OAAO,IAAI;AAAA,MACjB,KAAK,UAAU;AACb,cAAM,CAAC,KAAK,IAAI,MAAM,KAAK,eAAe,IAAI,OAAO;AACrD,eAAO;AAAA,UACL;AAAA,UACA;AAAA;AAAA,YAEE,oDAAqD,OAAe,aAAa,IAAI,KAAK,iBAAiB,KAAK,CAAC;AAAA;AAAA,QACrH;AAAA,MACF;AAAA,MACA,SAAS;AACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAIA,MAAM,eACJ,IACA,UAC8B;AAC9B,QAAI,OAAO,IAAK,QAAO,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACjD;AAWF;;;ACtFA;AAAA,EACE,YAAAA;AAAA,EACA,UAAAC;AAAA,EAAQ;AAAA,EAAW;AAAA,OACd;AAYP;AAAA,EACE;AAAA,EACA,0BAAAC;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB;;;ACrBzB;AAAA,EACE,YAAAC;AAAA,EAAU;AAAA,EAAQ;AAAA,OACb;AAUP,SAAS,oBAAoB;AAStB,IAAM,uBAAN,cAAmC,uBAA+E;AAAA,EAC/G,UAA2C,CAAC;AAAA,EAC5C,eAAmD,CAAC;AAAA,EAE5D,YAAY,QAAoC;AAC9C,UAAM,MAAM;AAAA,EACd;AAAA,EAEA,IAAI,sBAAsB;AACxB,WAAO,KAAK,OAAO,uBAAuB;AAAA,EAC5C;AAAA,EAIA,IAAI,MAA+C;AACjD,QAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,iBAAW,OAAO,KAAM,MAAK,gBAAgB,GAAG;AAAA,IAClD,OAAO;AACL,WAAK,gBAAgB,IAAI;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,WAAyC;AACnD,UAAM;AAAA,EACR;AAAA,EAEA,OAAO,SAAoC;AACzC,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,iBAAW,QAAQ,QAAS,MAAK,mBAAmB,IAAI;AAAA,IAC1D,OAAO;AACL,WAAK,mBAAmB,OAAO;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,WAAyC;AACtD,UAAM;AAAA,EACR;AAAA,EAEA,eACE,KAAuB,KACvB,SACiB;AACjB,UAAM,cAAc,MAAM;AACxB,UAAI,IAAI;AACN,YAAI,OAAO,OAAO,UAAU;AAC1B,cAAI,OAAO,KAAK;AACd,mBAAO,OAAO,OAAO,KAAK,OAAO;AAAA,UACnC;AACA,gBAAM,OAAO,aAAa,EAAE,IAAI,KAAK;AACrC,gBAAM,UAAU,UAAU,EAAE,IAAI,KAAK;AACrC,UAAAC,UAAS,QAAQ,SAAS,MAAM,mDAAmD;AACnF,kBACG,OAAO,KAAK,cAAiB,OAAO,OAAO,KAAK,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,YACvE,UAAU,KAAK,iBAAoB,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI;AAAA,QAE5E;AAAA,MACF,OAAO;AACL,eAAO,OAAO,OAAO,KAAK,OAAO;AAAA,MACnC;AAAA,IACF,GAAG;AACH,UAAM,WAAW,SAAS;AAC1B,QAAI,UAAU;AACZ,aACE,MAAM,QAAQ,UAAU,IACpB,YAAY,OAAO,SAAO,SAAS,GAAG,CAAC,IACvC,SAAS,UAAU,IACjB,CAAC,UAAU,IACX,CAAC;AAAA,IAEX,OAAO;AACL,aACE,aACI,MAAM,QAAQ,UAAU,IACtB,aACA,CAAC,UAAU,IACb,CAAC;AAAA,IAET;AAAA,EACF;AAAA,EAEA,kBAAkB,IAAsB,UAAiE;AAEvG,UAAM,iBAAiB,KAAK,aAAa,EAAE;AAC3C,QAAI,gBAAgB;AAClB,aAAO,eAAe;AAAA,IACxB;AAGA,eAAW,OAAO,OAAO,OAAO,KAAK,OAAO,GAAG;AAC7C,UAAI,IAAI,YAAY,IAAI;AACtB,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,gBAAgB,KAAsB;AAC5C,QAAI,KAAK;AACP,YAAM,UAAU,IAAI;AACpB,UAAI,WAAW,KAAK,qBAAqB;AAEvC,QAAAA,UAAS,KAAK,aAAa,OAAO,MAAM,QAAW,MAAM,oBAAoB,OAAO,gBAAgB;AACpG,aAAK,aAAa,OAAO,IAAI;AAAA,MAC/B;AACA,WAAK,QAAQ,IAAI,OAAO,IAAI;AAAA,IAC9B;AAAA,EACF;AAAA,EAEQ,mBAAmB,SAAkB;AAC3C,IAAAA,UAAS,UAAU,OAAO,GAAG,MAAM,iBAAiB;AACpD,UAAM,MAAMA,UAAS,KAAK,QAAQ,OAAO,GAAG,MAAM,8BAA8B;AAChF,WAAO,KAAK,QAAQ,OAAO;AAC3B,UAAM,UAAU,IAAI;AACpB,QAAI,SAAS;AACX,aAAO,KAAK,aAAa,OAAO;AAAA,IAClC;AAAA,EACF;AAAA,EAEQ,iBAA4D,SAA0C,SAAyB;AACrI,WACE,QAAQ,IAAI,CAACC,aAAY;AACvB,aAAO,QAAQA,QAAO;AAAA,IACxB,CAAC,EACD,OAAO,MAAM;AAAA,EACjB;AAAA,EAEQ,cAAyD,SAA2B,MAAyB;AACnH,WACE,KAAK,IAAI,CAACC,UAAS;AACjB,aAAO,QAAQ,KAAK,SAAO,IAAI,YAAYA,KAAI;AAAA,IACjD,CAAC,EACD,OAAO,MAAM;AAAA,EACjB;AAAA,EAEQ,eAA0D,SAA2B,OAAwB;AACnH,WACE,QAAQ,OAAO;AAAA;AAAA,MAEb,OAAO,OAAO,CAAC,WAAW,cAAc;AACtC;AAAA;AAAA,UAEE,UAAU,OAAO,CAACC,YAAWC,WAAU;AACrC,kBAAM,YAAY,IAAI,QAAQ,SAASA,MAAK;AAC5C,mBAAOD,cAAa;AAAA,UACtB,GAAG,IAAI,KAAK;AAAA;AAAA,MAEhB,GAAG,KAAK;AAAA,KAAC,EACX,OAAO,MAAM;AAAA,EACjB;AACF;;;AD1IA,IAAM,wBAAwB,CAAC,qBAA+D;AAC5F,SAAO,kBAAkB,MAAM,GAAG;AACpC;AAEO,IAAM,0BAAN,MAAM,iCACH,uBAC4C;AAAA,EACpD,OAAgB,kBAAkB;AAAA,EAExB;AAAA,EACA,YAAsC,CAAC;AAAA,EACzC,oBAAoB;AAAA,EACpB;AAAA,EAER,YAAY,QAAW;AACrB,UAAM,MAAM;AACZ,UAAM,gBAAgB,IAAI,qBAAqB,EAAE,qBAAqB,OAAO,qBAAqB,MAAM,OAAO,KAAK,CAAC;AACrH,SAAK,YAAY,aAAa;AAC9B,UAAM;AAAA,MAAE,MAAM;AAAA,MAAK,MAAM,MAAO;AAAA;AAAA,IAAqB,IAAI,OAAO,SAAS,CAAC;AAC1E,SAAK,SAAS,IAAI,SAA2C;AAAA,MAC3D;AAAA,MAAK;AAAA,MAAK,GAAG,OAAO;AAAA,IACtB,CAAC;AACD,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,IAAI,mBAAmB;AACrB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,iBAAiB,OAAgB;AACnC,SAAK,YAAY,CAAC,KAAK,cAAc;AACrC,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,IAAI,sBAAsB;AACxB,WAAO,KAAK,OAAO,uBAAuB;AAAA,EAC5C;AAAA,EAEA,IAAY,+BAA+B;AACzC,WAAO,KAAK,OAAO,gCAAgC,cAAc;AAAA,EACnE;AAAA,EAIA,IAAI,KAA8C;AAChD,QAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,iBAAW,WAAW,IAAK,MAAK,gBAAgB,OAAO;AAAA,IACzD,OAAO;AACL,WAAK,gBAAgB,GAAG;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,UAAwC;AAClD,QAAI,KAAK,kBAAkB;AACzB,WAAK,UAAU,KAAK,QAAQ;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,WAAsC;AAC3C,QAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,iBAAW,WAAW,UAAW,MAAK,mBAAmB,OAAO;AAAA,IAClE,OAAO;AACL,WAAK,mBAAmB,SAAS;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,UAAwC;AACrD,SAAK,YAAY,KAAK,UAAU,OAAO,UAAQ,SAAS,QAAQ;AAChE,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,eACJ,KAAuB,KACvB,UAAkC,CAAC,GACrB;AACd,UAAM,iBAAiB,EAAE,GAAG,SAAS,UAAU,SAAS,YAAY,yBAAwB,gBAAgB;AAG5G,QAAI,OAAO,KAAK;AAEd,UAAI,eAAe,WAAW,GAAG;AAC/B,eAAO,CAAC;AAAA,MACV;AAGA,UAAI,eAAe,aAAa,GAAG;AACjC,eAAQ,MAAM,KAAK,eAAe,QAAQ,KAAK,cAAc,KAAM,CAAC;AAAA,MACtE;AAEA,YAAM,eAAe,EAAE,GAAG,gBAAgB,UAAU,gBAAgB,WAAW,EAAE;AAEjF,YAAM,SAAS,MAAM,QAAQ;AAAA,QAC3B,KAAK,UAAU,IAAI,OAAO,aAAa;AACrC,gBAAME,UAAc,MAAM,SAAS,QAAW,KAAK,YAAY;AAC/D,iBAAOA;AAAA,QACT,CAAC;AAAA,MACH;AACA,YAAM,aAAkB,OAAO,KAAK,EAAE,OAAOC,OAAM;AACnD,aAAO,WAAW,OAAO,CAAC,GAAG,GAAG,MAAM,iBAAiB,GAAG,GAAG,CAAC,CAAC;AAAA,IACjE;AAEA,QAAI,OAAO,OAAO,UAAU;AAE1B,UAAI,eAAe,WAAW,GAAG;AAC/B,eAAO,CAAC;AAAA,MACV;AAGA,YAAM,UAAU,sBAAsB,EAAE;AACxC,UAAI,QAAQ,SAAS,GAAG;AACtB,cAAM,MAAM,MAAM,KAAK,2BAA8B,EAAE;AACvD,eACE,MACI,MAAM,QAAQ,GAAG,IACf,MACA,CAAC,GAAG,IACN,CAAC;AAAA,MAET;AACA,YAAM,aAAa,MAAM,cAAc,0BAA0B,IAAI,KAAK,4BAA4B;AACtG,UAAI,SAAS,UAAU,GAAG;AACxB,YAAI,eAAe,WAAW,GAAG;AAC/B,iBAAO,CAAC;AAAA,QACV;AACA,cAAM,eAAe,KAAK,OAAO,IAAI,UAAU;AAC/C,YAAI,cAAc;AAChB,cAAI,aAAa,WAAW,SAAS;AACnC,iBAAK,OAAO,OAAO,EAAE;AAAA,UACvB,OAAO;AACL,mBAAO,CAAC,YAAY;AAAA,UACtB;AAAA,QACF;AAGA,YAAI,eAAe,aAAa,GAAG;AACjC,gBAAMC,OAAM,MAAM,KAAK,eAAe,QAAQ,YAAY,cAAc;AACxE,iBACE,UAAUA,IAAG,IACT,MAAM,QAAQA,IAAG,IACfA,OACA,CAACA,IAAG,IACN,CAAC;AAAA,QAET;AAGA,cAAM,kBAAkB,OAAO,aAA6D;AAC1F,gBAAM,YAAY,KAAK,UAAU,OAAO,cAAY,SAAS,aAAa,QAAQ;AAClF,gBAAM,WACJ,MAAM,QAAQ;AAAA,YACZ,UAAU,IAAI,OAAO,aAAa;AAChC,oBAAMF,UAAwB,MAAM,SAAS,QAAW,YAAY,cAAc;AAClF,qBAAOA;AAAA,YACT,CAAC;AAAA,UACH,GACA,OAAOC,OAAM;AAEf,gBAAM,SAAwB,QAAQ,OAAOA,OAAM,EAAE,SAAS,CAAC,GAAG,GAAG,MAAM,iBAAiB,GAAG,GAAG,CAAC,CAAC;AACpG,cAAI,QAAQ;AACV,iBAAK,OAAO,IAAI,YAAY,MAAM;AAClC,mBAAO;AAAA,UACT;AAEA,iBAAO,aAAaE,wBAAuB,UAAU,SAAY,MAAM,gBAAiB,WAAW,CAA4B;AAAA,QACjI;AACA,cAAM,MAAM,MAAM,gBAAgBA,wBAAuB,QAAQ;AACjE,eACE,MACI,MAAM,QAAQ,GAAG,IACf,MACA,CAAC,GAAG,IACN,CAAC;AAAA,MAET;AAAA,IACF;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,kBAAkB,IAAsB,UAA8D;AAC1G,UAAM,UAAU,GAAG,MAAM,GAAG;AAC5B,QAAI,QAAQ,SAAS,GAAG;AACtB,aAAO,KAAK,yBAAyB,EAAE;AAAA,IACzC;AACA,UAAM,WACJ,MAAM,QAAQ;AAAA,MACZ,KAAK,UAAU,IAAI,OAAO,aAAa;AACrC,eAAO,MAAM,SAAS,kBAAkB,EAAE;AAAA,MAC5C,CAAC;AAAA,IACH,GACA,OAAOF,OAAM;AACf,UAAM,SAAS,QAAQ,MAAM;AAC7B,QAAI,QAAQ,SAAS,GAAG;AACtB,iBAAW,aAAa,SAAS;AAC/B,QAAAG,UAAS,cAAc,QAAQ,MAAM,4BAA4B,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG;AAAA,MACjG;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEU,yBAAyB,KAAuB,UAAiE;AACzH,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAAA,EAEQ,gBAAgB,KAAsB;AAC5C,QAAI,KAAK;AACP,WAAK,eAAe,IAAI,GAAG;AAAA,IAC7B;AAAA,EACF;AAAA,EAEQ,mBAAmB,SAAkB;AAC3C,SAAK,eAAe,OAAO,OAAO;AAAA,EACpC;AAAA,EAEA,MAAc,2BAAsE,kBAA4D;AAC9I,UAAM,UAAU,sBAAsB,gBAAgB;AACtD,IAAAA,UAAS,QAAQ,UAAU,GAAG,MAAM,kCAAkC;AACtE,UAAM,KAAKA,UAAS,QAAQ,MAAM,CAAC;AACnC,UAAM,MAAO,MAAM,KAAK,QAAW,EAAE,KAAO,MAAM,KAAK,eAAkB,EAAE;AAC3E,WAAQ,MAAM,KAAK,QAAW,QAAQ,KAAK,GAAG,CAAC,KAAO,MAAM,KAAK,eAAkB,QAAQ,KAAK,GAAG,CAAC;AAAA,EACtG;AACF;;;AEjQA,SAAS,aAAAC,YAAW,mBAAmB;AAEvC,SAAS,iCAAiC;AAE1C,SAAS,YAAAC,iBAAgB;AAElB,IAAM,2BAAN,MAAsE;AAAA,EACnE,SAAuD,IAAIA,UAA6C,EAAE,KAAK,KAAM,KAAK,MAAO,EAAE,CAAC;AAAA,EAEpI;AAAA,EACA;AAAA,EAER,YACE,kBACA,MACA;AACA,SAAK,mBAAmB;AACxB,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,UAAU,YAAyD;AACvE,UAAM,QAAQ,WAAW,MAAM,GAAG;AAClC,UAAM,QAAQ,MAAM,MAAM;AAC1B,UAAM,YAAY,OAAO,MAAM,GAAG;AAClC,QAAI,WAAW,WAAW,KAAK,UAAU,CAAC,MAAM,KAAK,MAAM;AAEzD,YAAM,eAAe,KAAK,OAAO,IAAI,UAAU;AAC/C,UAAID,WAAU,YAAY,EAAG,QAAO;AAGpC,YAAM,QAAQ;AAAA,QACZ,QAAQ,UAAU,CAAC;AAAA,QAAG,OAAO;AAAA,QAAiB,QAAQ;AAAA,QAA2B,KAAK,UAAU,CAAC;AAAA,MACnG;AACA,YAAM,SAAS,MAAM,KAAK,kBAAkB,OAAO,CAAC,KAAK,CAAC;AAC1D,YAAM,gBAAgB,QAAQ,MAAM;AACpC,UAAI,YAAY,aAAa,GAAG;AAC9B,cAAM,IAAI,MAAM,8CAA8C,KAAK,GAAG;AAAA,MACxE;AAEA,UAAIA,WAAU,aAAa,GAAG;AAC5B,cAAM,UAAW,cAAoD,SAAS,MAAM;AACpF,YAAI,SAAS;AACX,eAAK,OAAO,IAAI,YAAY,OAAO;AACnC,iBAAO;AAAA,QACT;AAAA,MACF;AACA,YAAM,IAAI,MAAM,iDAAiD,KAAK,GAAG;AAAA,IAC3E;AACA,WAAO;AAAA,EACT;AACF;;;ACnCA,IAAM,WAAW,CAA4C,aAAgB;AAC3E,QAAM,YAAgC,CAAC;AACvC,QAAM,OAAO,CAAC,OAAyB,SAA2C;AAChF,QAAI,UAAU,WAAW,EAAG,QAAO;AACnC,eAAW,YAAY,UAAW,UAAS,IAAI;AAC/C,WAAO;AAAA,EACT;AACA,QAAM,mBAAmB,CAAC,KAAsB,OAA0B;AACxE,UAAM,OAAO,EAAE,IAAI,IAAI;AACvB,SAAK,kBAAkB,IAAI;AAAA,EAC7B;AAEA,QAAM,EAAE,QAAQ,IAAI;AACpB,WAAS,gBAAgB,QAA2B;AAClD,WAAO,QAAQ,KAAK,QAAQ,EAAE,MAAM;AAAA,EACtC;AAEA,SAAO;AAAA,IACL,IAAI,CAAC,OAAyB,aAAsD;AAClF,gBAAU,KAAK,QAAQ;AAAA,IACzB;AAAA,IACA,SAAS,OAAO,OAAsD;AACpE,YAAM,gBAAgB,MAAM,gBAAgB,EAAE,KAAK,CAAC;AACpD,YAAM,UAAU,MAAM,QAAQ,aAAa,IAAI,gBAAgB,CAAC,aAAa;AAE7E,YAAM,QAAQ,WAAW,QAAQ,IAAI,SAAO,iBAAiB,KAAK,EAAE,CAAC,CAAC;AACtE,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,4BAA4B,CAA4C,aAA0C;AAC7H,QAAM,QAAQ,SAAS,QAAQ;AAC/B,SAAO,OAAO,OAAO,UAAU,KAAK;AACtC;","names":["assertEx","exists","ObjectResolverPriority","assertEx","assertEx","address","name","supported","query","result","exists","mod","ObjectResolverPriority","assertEx","isDefined","LRUCache"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractModuleResolver.ts","../../src/CompositeModuleResolver.ts","../../src/ResolveHelper/resolveAddressToInstance.ts","../../src/ResolveHelper/resolveAll.ts","../../src/ResolveHelper/ResolveHelper.ts","../../src/ResolveHelper/ResolveHelperStatic.ts","../../src/ResolveHelper/resolvePathToInstance.ts","../../src/ResolveHelper/resolveLocalNameToInstance.ts","../../src/ResolveHelper/resolveLocalNameToAddress.ts","../../src/ResolveHelper/transformModuleIdentifier.ts","../../src/ResolveHelper/resolvePathToAddress.ts","../../src/ResolveHelper/traceModuleIdentifier.ts","../../src/SimpleModuleResolver.ts","../../src/NameRegistrarTransformer.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["import type {\n Address, BaseParams, Promisable,\n} from '@xylabs/sdk-js'\nimport {\n assertEx, Base, toSafeJsonString,\n} from '@xylabs/sdk-js'\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport {\n asModuleInstance,\n ObjectResolverPriority,\n} from '@xyo-network/module-model'\n\nexport interface ModuleResolverParams extends BaseParams {\n priority?: ObjectResolverPriority\n root: ModuleInstance\n}\n\nexport abstract class AbstractModuleResolver<TParams extends ModuleResolverParams = ModuleResolverParams>\n extends Base<TParams>\n implements ModuleResolverInstance {\n get priority() {\n return this.params.priority ?? ObjectResolverPriority.Normal\n }\n\n set priority(value: ObjectResolverPriority) {\n this.params.priority = value\n }\n\n get root() {\n return assertEx(this.params.root, () => 'root is not set')\n }\n\n async resolve<T extends ModuleInstance = ModuleInstance>(): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T[] | T | undefined> {\n if (id === '*') {\n const values = await this.resolveHandler(id, options)\n assertEx(Array.isArray(values), () => 'resolveHandler returned a non-array')\n return values.map(value =>\n asModuleInstance<T>(value, () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `resolveHandler returned invalid result (*) [${(value as any)?.constructor?.name}][${toSafeJsonString(value)}]`\n }, { required: true }))\n }\n switch (typeof id) {\n case 'string': {\n const [value] = await this.resolveHandler(id, options)\n return asModuleInstance<T>(\n value,\n () =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n `resolveHandler returned invalid result (string) [${(value as any)?.constructor?.name}][${toSafeJsonString(value)}]`,\n )\n }\n default: {\n break\n }\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ObjectFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ObjectFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return await Promise.resolve([])\n }\n\n abstract addResolver(resolver: ModuleResolverInstance): this\n abstract removeResolver(resolver: ModuleResolverInstance): this\n\n abstract resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[]>\n\n abstract resolveIdentifier(id: ModuleIdentifier, options?: ObjectFilterOptions): Promisable<Address | undefined>\n}\n","/* eslint-disable max-statements */\nimport type { Address, Promisable } from '@xylabs/sdk-js'\nimport {\n assertEx,\n exists, isDefined, isString,\n} from '@xylabs/sdk-js'\nimport type {\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport {\n duplicateModules,\n ObjectResolverPriority,\n} from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport type { ModuleResolverParams } from './AbstractModuleResolver.ts'\nimport { AbstractModuleResolver } from './AbstractModuleResolver.ts'\nimport { ResolveHelper } from './ResolveHelper/index.ts'\nimport { SimpleModuleResolver } from './SimpleModuleResolver.ts'\n\nexport interface CompositeModuleResolverParams extends ModuleResolverParams {\n allowNameResolution?: boolean\n cache?: CacheConfig\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nconst moduleIdentifierParts = (moduleIdentifier: ModuleIdentifier): ModuleIdentifierPart[] => {\n return moduleIdentifier?.split(':') as ModuleIdentifierPart[]\n}\n\nexport class CompositeModuleResolver<T extends CompositeModuleResolverParams = CompositeModuleResolverParams>\n extends AbstractModuleResolver<T>\n implements ModuleRepository, ModuleResolverInstance {\n static readonly defaultMaxDepth = 3\n\n protected _cache: LRUCache<ModuleIdentifier, ModuleInstance>\n protected resolvers: ModuleResolverInstance[] = []\n private _allowAddResolver = true\n private _localResolver: SimpleModuleResolver\n\n constructor(params: T) {\n super(params)\n const localResolver = new SimpleModuleResolver({ allowNameResolution: params.allowNameResolution, root: params.root })\n this.addResolver(localResolver)\n const { max = 100, ttl = 1000 * 5 /* five seconds */ } = params.cache ?? {}\n this._cache = new LRUCache<ModuleIdentifier, ModuleInstance>({\n max, ttl, ...params.cache,\n })\n this._localResolver = localResolver\n }\n\n get allowAddResolver() {\n return this._allowAddResolver\n }\n\n set allowAddResolver(value: boolean) {\n this.resolvers = [this._localResolver]\n this._allowAddResolver = value\n }\n\n get allowNameResolution() {\n return this.params.allowNameResolution ?? true\n }\n\n private get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers ?? ResolveHelper.transformers\n }\n\n add(mod: ModuleInstance): this\n add(mod: ModuleInstance[]): this\n add(mod: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(mod)) {\n for (const modItem of mod) this.addSingleModule(modItem)\n } else {\n this.addSingleModule(mod)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolverInstance): this {\n if (this.allowAddResolver) {\n this.resolvers.push(resolver)\n }\n return this\n }\n\n remove(addresses: Address[] | Address): this {\n if (Array.isArray(addresses)) {\n for (const address of addresses) this.removeSingleModule(address)\n } else {\n this.removeSingleModule(addresses)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolverInstance): this {\n this.resolvers = this.resolvers.filter(item => item !== resolver)\n return this\n }\n\n // eslint-disable-next-line complexity\n async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T[]> {\n const mutatedOptions = { ...options, maxDepth: options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth }\n\n // resolve all\n if (id === '*') {\n // wen't too far?\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n\n // identity resolve?\n if (mutatedOptions.maxDepth === 0) {\n return (await this._localResolver.resolve('*', mutatedOptions)) ?? []\n }\n\n const childOptions = { ...mutatedOptions, maxDepth: mutatedOptions?.maxDepth - 1 }\n\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>('*', childOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter((v, i, a) => duplicateModules(v, i, a))\n }\n\n if (typeof id === 'string') {\n // wen't too far?\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n\n // resolve ModuleIdentifier\n const idParts = moduleIdentifierParts(id)\n if (idParts.length > 1) {\n const mod = await this.resolveMultipartIdentifier<T>(id)\n return (\n mod\n ? Array.isArray(mod)\n ? mod\n : [mod]\n : []\n )\n }\n const resolvedId = await ResolveHelper.transformModuleIdentifier(id, this.moduleIdentifierTransformers)\n if (isString(resolvedId)) {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const cachedResult = this._cache.get(resolvedId)\n if (cachedResult) {\n if (cachedResult.status === 'error') {\n this._cache.delete(id)\n } else {\n return [cachedResult] as T[]\n }\n }\n\n // identity resolve?\n if (mutatedOptions.maxDepth === 0) {\n const mod = await this._localResolver.resolve(resolvedId, mutatedOptions)\n return (\n isDefined(mod)\n ? Array.isArray(mod)\n ? mod\n : [mod]\n : []\n )\n }\n\n // recursive function to resolve by priority\n const resolvePriority = async (priority: ObjectResolverPriority): Promise<T | undefined> => {\n const resolvers = this.resolvers.filter(resolver => resolver.priority === priority)\n const results: T[] = (\n await Promise.all(\n resolvers.map(async (resolver) => {\n const result: T | undefined = await resolver.resolve<T>(resolvedId, mutatedOptions)\n return result\n }),\n )\n ).filter(exists)\n\n const result: T | undefined = results.filter(exists).findLast((v, i, a) => duplicateModules(v, i, a))\n if (result) {\n this._cache.set(resolvedId, result)\n return result\n }\n // we know that ObjectResolverPriority.VeryLow is the minimum priority, so we can subtract 1 from the rest\n return priority === ObjectResolverPriority.VeryLow ? undefined : await resolvePriority((priority - 1) as ObjectResolverPriority)\n }\n const mod = await resolvePriority(ObjectResolverPriority.VeryHigh)\n return (\n mod\n ? Array.isArray(mod)\n ? mod\n : [mod]\n : []\n )\n }\n }\n return []\n }\n\n async resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promise<Address | undefined> {\n const idParts = id.split(':')\n if (idParts.length > 1) {\n return this.resolveComplexIdentifier(id)\n }\n const results = (\n await Promise.all(\n this.resolvers.map(async (resolver) => {\n return await resolver.resolveIdentifier(id)\n }),\n )\n ).filter(exists)\n const result = results.shift()\n if (results.length > 0) {\n for (const altResult of results) {\n assertEx(altResult === result, () => `Inconsistent results for ${id} [${result}][${altResult}]`)\n }\n }\n return result\n }\n\n protected resolveComplexIdentifier(_id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<Address | undefined> {\n throw new Error('Method not implemented.')\n }\n\n private addSingleModule(mod?: ModuleInstance) {\n if (mod) {\n this._localResolver.add(mod)\n }\n }\n\n private removeSingleModule(address: Address) {\n this._localResolver.remove(address)\n }\n\n private async resolveMultipartIdentifier<T extends ModuleInstance = ModuleInstance>(moduleIdentifier: ModuleIdentifier): Promise<T | undefined> {\n const idParts = moduleIdentifierParts(moduleIdentifier)\n assertEx(idParts.length >= 2, () => 'Not a valid multipart identifier')\n const id = assertEx(idParts.shift())\n const mod = (await this.resolve<T>(id)) ?? (await this.resolvePrivate<T>(id))\n return (await mod?.resolve<T>(idParts.join(':'))) ?? (await mod?.resolvePrivate<T>(idParts.join(':')))\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\n\nimport type { ModuleResolveDirection } from './model.ts'\n\nexport const resolveAddressToInstanceDown = async (\n root: ModuleInstance,\n address: Address,\n includePrivate: boolean | undefined = undefined,\n ignore: Address[] = [],\n): Promise<ModuleInstance | undefined> => {\n if (root.address === address) {\n return root\n }\n const cache = root.addressCache?.('up', !!includePrivate)\n const privateChildren = (includePrivate ? await root.privateChildren?.() : []) ?? []\n const publicChildren = (await root.publicChildren?.()) ?? []\n const children = [...privateChildren, ...publicChildren]\n for (const child of children) {\n const found = await resolveAddressToInstanceDown(child, address, includePrivate, ignore)\n if (found) {\n cache?.set(address, new WeakRef(found))\n return found\n }\n }\n cache?.set(address, null)\n}\n\nexport const resolveAddressToInstanceSiblings = async (\n root: ModuleInstance,\n address: Address,\n includePrivate: boolean | undefined = undefined,\n ignore: Address[] = [],\n): Promise<ModuleInstance | undefined> => {\n const siblings = (await root.siblings?.()) ?? []\n for (const sibling of siblings) {\n const found = await resolveAddressToInstanceDown(sibling, address, includePrivate, ignore)\n if (found) {\n return found\n }\n }\n}\n\nexport const resolveAddressToInstanceUp = async (\n root: ModuleInstance,\n address: Address,\n includePrivate: boolean | undefined = undefined,\n ignore: Address[] = [],\n): Promise<ModuleInstance | undefined> => {\n const cache = root.addressCache?.('up', includePrivate ?? true)\n const parents = (await root.parents?.()) ?? []\n for (const parent of parents) {\n const found = await resolveAddressToInstance(parent, address, includePrivate, ignore)\n if (found) {\n cache?.set(address, new WeakRef(found))\n return found\n }\n }\n cache?.set(address, null)\n}\n\nexport const resolveAddressToInstanceAll = async (\n root: ModuleInstance,\n address: Address,\n includePrivate: boolean | undefined = undefined,\n ignore: Address[] = [],\n): Promise<ModuleInstance | undefined> => {\n const cache = root.addressCache?.('all', !!includePrivate)\n const result\n = (await resolveAddressToInstanceDown(root, address, includePrivate ?? false, ignore))\n ?? (await resolveAddressToInstanceUp(root, address, includePrivate ?? true, ignore))\n cache?.set(address, result ? new WeakRef(result) : null)\n return result\n}\n\nexport const resolveAddressToInstance = async (\n root: ModuleInstance,\n address: Address,\n includePrivate: boolean | undefined = undefined,\n ignore: Address[] = [],\n direction: ModuleResolveDirection = 'all',\n): Promise<ModuleInstance | undefined> => {\n switch (direction) {\n case 'all': {\n return await resolveAddressToInstanceAll(root, address, includePrivate, ignore)\n }\n case 'up': {\n return await resolveAddressToInstanceUp(root, address, includePrivate ?? true, ignore)\n }\n case 'down': {\n return await resolveAddressToInstanceDown(root, address, includePrivate ?? false, ignore)\n }\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { duplicateModules } from '@xyo-network/module-model'\n\nexport const resolveAllUp = async (root: ModuleInstance, maxDepth = 10, exclude: Address[] = []): Promise<ModuleInstance[]> => {\n if (maxDepth === 0) {\n return [root].filter(mod => !exclude.includes(mod.address))\n }\n const parents = (await root.parents()).filter(mod => !exclude.includes(mod.address))\n return (\n maxDepth > 1\n ? [\n ...(await Promise.all(parents.map(async mod => await resolveAllUp(mod, maxDepth - 1, [...exclude, root.address])))).flat(),\n ...(await Promise.all(parents.map(async mod => await resolveAllDown(mod, maxDepth - 1, [...exclude, root.address], true)))).flat(),\n ...parents,\n root,\n ]\n : [...parents, root])\n .filter(mod => !exclude.includes(mod.address))\n .filter(duplicateModules)\n}\n\nexport const resolveAllDown = async (\n root: ModuleInstance,\n maxDepth = 10,\n exclude: Address[] = [],\n includePrivate = false,\n): Promise<ModuleInstance[]> => {\n if (maxDepth === 0) {\n return [root]\n }\n const children = (await root.publicChildren()).filter(mod => !exclude.includes(mod.address))\n const privateChildren = includePrivate ? (await root.privateChildren()).filter(mod => !exclude.includes(mod.address)) : []\n return (\n maxDepth > 1\n ? [\n ...children,\n ...(await Promise.all(children.map(child => resolveAllDown(child, maxDepth - 1, [...exclude, root.address])))).flat(),\n ...(await Promise.all(privateChildren.map(child => resolveAllDown(child, maxDepth - 1, [...exclude, root.address])))).flat(),\n root,\n ]\n : [...children, root])\n .filter(mod => !exclude.includes(mod.address))\n .filter(duplicateModules)\n}\n\nexport const resolveAll = async (root: ModuleInstance, maxDepth = 10, exclude: Address[] = []): Promise<ModuleInstance[]> => {\n if (maxDepth === 0) {\n return [root]\n }\n return [...(await resolveAllUp(root, maxDepth, exclude)), ...(await resolveAllDown(root, maxDepth, exclude))].filter(duplicateModules)\n}\n","/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport type { Address, Logger } from '@xylabs/sdk-js'\nimport {\n assertEx,\n exists,\n IdLogger,\n isAddress,\n isDefined, isString, isTruthy,\n} from '@xylabs/sdk-js'\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleResolver,\n} from '@xyo-network/module-model'\nimport { asModuleInstance, duplicateModules } from '@xyo-network/module-model'\n\nimport { ResolveHelperStatic } from './ResolveHelperStatic.ts'\nimport { resolvePathToAddress } from './resolvePathToAddress.ts'\nimport { traceModuleIdentifier } from './traceModuleIdentifier.ts'\nimport { transformModuleIdentifier } from './transformModuleIdentifier.ts'\n\n/*\n\nResolution rules\n\n1. Resolution is always done from the perspective of the module whose resolve function was called.\n\n2. Requesting '*' will return all the modules that the resolver can see. [limited by maxDepth]\n\n3. Requesting a simple ModuleName (string w/o ':' separator) will return an immediate child that has that name.\n\n4. Requesting a complex ModuleName (string w/ ':' separator) will resolve the first part and then recursively resolve\n the remaining name by calling the first part's resolved module's resolve with the remainder of the name.\n\n5. Requesting an Address (string) will return the module with that address, regardless of how distant it is from the module. [limited by maxDepth]\n\n6. Requesting a ModuleFilter will first request all the modules '*' and then filter them based on the filter settings. [Do we need this mode?]\n\n7. When a string is passed as the ModuleIdentifier, do the following:\n Check if id is complex (contains a ':')\n a) If it is complex, go to #4 above\n b) Call isAddress in the id to see if it is a valid address.\n i) If it is a valid address, go to #5 above\n ii) If it is not a valid address, go to # 3 above\n\n 1: If someone were to name a module with a valid address, that name will not be resolvable.\n 2: If someone were to name a module with a string containing a ':', that name will not be resolvable.\n\n8. Modules have two resolvers, up and down.\n a) Up Traversal\n i) Every module's upResolver also can call it's parent's upResolver\n ii) An upResolver also can see the parent's children's downResolvers\n iii) This means that when traversing upResolvers, you can traverse all the way up. [limited by maxDepth]\n iv) At any point of the up traversal, it can start traversing down to any immediate child, public or private.\n b) Down Traversal\n i) A down traversal is limited to the public children of the module. [The same as scope as calling the 'resolve' function]\n\n9. An up or a down traversal counts against the maxDepth\n\n*/\n\nexport interface ResolveHelperConfig {\n address: Address\n dead?: boolean\n downResolver?: ModuleResolver\n logger?: Logger\n mod: ModuleInstance\n privateResolver?: ModuleResolver\n transformers: ModuleIdentifierTransformer[]\n upResolver?: ModuleResolver\n}\n\nexport class ResolveHelper extends ResolveHelperStatic {\n static async resolve<T extends ModuleInstance = ModuleInstance>(\n config: ResolveHelperConfig,\n all: '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T[]>\n static async resolve<T extends ModuleInstance = ModuleInstance>(\n config: ResolveHelperConfig,\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | undefined>\n static async resolve<T extends ModuleInstance = ModuleInstance>(\n config: ResolveHelperConfig,\n id: ModuleIdentifier = '*',\n {\n maxDepth = 3, required = 'log', ...options\n }: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const {\n transformers, mod, logger = this.defaultLogger, dead = false, upResolver, downResolver, privateResolver,\n } = config\n const log = logger ? new IdLogger(logger, () => `ResolveHelper [${mod.id}][${id}]`) : undefined\n\n const downLocalOptions: ModuleFilterOptions<T> = {\n ...options, direction: 'down', maxDepth, required: false,\n }\n const upLocalOptions: ModuleFilterOptions<T> = { ...downLocalOptions, direction: 'up' }\n\n const childOptions: ModuleFilterOptions<T> = {\n ...options, maxDepth: maxDepth - 1, required: false,\n }\n\n const direction = options?.direction ?? 'all'\n const up = direction === 'up' || direction === 'all'\n const down = direction === 'down' || direction === 'all'\n let result: T | T[] | undefined\n log?.debug('start', id, maxDepth)\n if (id === '*') {\n if (dead) {\n log?.warn('failed [dead]', id)\n return []\n }\n const modules = [\n ...(down ? await (downResolver as ModuleResolver).resolve<T>('*', downLocalOptions) : []),\n ...(up ? await (upResolver as ModuleResolver).resolve<T>('*', upLocalOptions) : []),\n ].filter(duplicateModules)\n\n if (modules.length > 0) {\n log?.debug('modules [count]', modules.length)\n }\n\n if (maxDepth === 0) {\n return modules\n }\n const childModules = (await Promise.all(modules.map(async mod => await mod.resolve<T>('*', childOptions)))).flat().filter(duplicateModules)\n return [...modules, ...childModules, mod as T].filter(duplicateModules)\n } else {\n switch (typeof id) {\n case 'string': {\n if (dead) {\n return undefined\n }\n\n const resolvedId = assertEx((await resolvePathToAddress(mod, id, false, transformers)) ?? id, () => 'Invalid resolvedId')\n\n const resolvers = [\n [downResolver, downLocalOptions],\n [up ? upResolver : undefined, upLocalOptions],\n [up ? privateResolver : undefined, upLocalOptions],\n ].filter(([resolver]) => exists(resolver)) as [ModuleResolver, ModuleFilterOptions<T>][]\n\n for (const resolver of resolvers) {\n const [resolverInstance] = resolver\n if (!result) {\n result = await this.resolveModuleIdentifier<T>(resolverInstance, resolvedId)\n }\n }\n\n break\n }\n default: {\n break\n }\n }\n }\n this.validateRequiredResolve(required, result, id, logger)\n return result\n }\n\n // resolves a complex module path to addresses\n static async resolveModuleIdentifier<T extends ModuleInstance = ModuleInstance>(\n resolver: ModuleResolver,\n path: ModuleIdentifier,\n required?: boolean,\n ): Promise<T | undefined> {\n const parts = path.split(':')\n const first = parts.shift()\n const firstIsAddress = isAddress(first)\n const resolvedModule\n = (await resolver.resolve(first, { maxDepth: firstIsAddress ? 10 : 1 }))\n ?? (isString(first) ? await resolver.resolvePrivate(first, { maxDepth: firstIsAddress ? 10 : 1 }) : undefined)\n const finalModule = required ? assertEx(resolvedModule, () => `Failed to resolve [${first}] [${firstIsAddress}]`) : resolvedModule\n const firstModule = asModuleInstance(finalModule, () => `Resolved invalid module instance [${first}]`)\n return isDefined(firstModule) ? (parts.length > 0 ? await this.resolveModuleIdentifier<T>(firstModule, parts.join(':')) : firstModule as T) : undefined\n }\n\n // translates a complex module path to addresses\n static traceModuleIdentifier(resolver: ModuleResolver, path: ModuleIdentifier) {\n return traceModuleIdentifier(resolver, path)\n }\n\n static transformModuleIdentifier(identifier: ModuleIdentifier, transformers: ModuleIdentifierTransformer[] = ResolveHelper.transformers) {\n return transformModuleIdentifier(identifier, transformers)\n }\n\n static validateRequiredResolve(\n required: boolean | 'warn' | 'log',\n result: ModuleInstance[] | ModuleInstance | undefined,\n id: ModuleIdentifier,\n logger = this.defaultLogger,\n ) {\n const log = logger ? new IdLogger(logger, () => `validateRequiredResolve [${id}][${result}]`) : undefined\n if (isTruthy(required) && (result === undefined || (Array.isArray(result) && result.length > 0))) {\n switch (required) {\n case 'warn': {\n log?.warn('resolve failed', id)\n break\n }\n case 'log': {\n log?.log('resolve failed', id)\n break\n }\n default: {\n throw new Error(`resolve failed [${id}]`)\n }\n }\n }\n }\n}\n","import type { Logger } from '@xylabs/sdk-js'\nimport type { ModuleIdentifierTransformer } from '@xyo-network/module-model'\n\nexport class ResolveHelperStatic {\n static readonly defaultLogger?: Logger\n static transformers: ModuleIdentifierTransformer[] = []\n}\n","import { asAddress, assertEx } from '@xylabs/sdk-js'\nimport type { ModuleIdentifierTransformer, ModuleInstance } from '@xyo-network/module-model'\nimport { MODULE_PATH_SEPARATOR } from '@xyo-network/module-model'\n\nimport { resolveAddressToInstance } from './resolveAddressToInstance.ts'\nimport { ResolveHelperStatic } from './ResolveHelperStatic.ts'\nimport { resolveLocalNameToAddress } from './resolveLocalNameToAddress.ts'\nimport { transformModuleIdentifier } from './transformModuleIdentifier.ts'\n\nexport const resolvePathToInstance = async (\n root: ModuleInstance,\n path: string,\n includePrivate: boolean | undefined = undefined,\n transformers: ModuleIdentifierTransformer[] = ResolveHelperStatic.transformers,\n): Promise<ModuleInstance | undefined> => {\n const parts = path.split(MODULE_PATH_SEPARATOR)\n const first = await transformModuleIdentifier(\n assertEx(parts.shift(), () => `First part is invalid [${path}]`),\n transformers,\n )\n\n if (!first) {\n return undefined\n }\n\n const firstAddress = asAddress(first) ?? (await resolveLocalNameToAddress(root, first, includePrivate))\n\n if (firstAddress) {\n const firstModule = await resolveAddressToInstance(root, firstAddress, includePrivate)\n if (firstModule && parts.length > 0) {\n return resolvePathToInstance(firstModule, parts.join(MODULE_PATH_SEPARATOR))\n }\n return firstModule\n }\n}\n","import type { ModuleInstance, ModuleName } from '@xyo-network/module-model'\n\nimport type { ModuleResolveDirection } from './model.ts'\n\nexport const resolveLocalNameToInstanceUp = async (root: ModuleInstance, modName: ModuleName): Promise<ModuleInstance | undefined> => {\n const parents = (await root.parents?.()) ?? []\n return parents.find(parent => parent.config.name === modName)\n}\n\n// since this is a modName, it only checks the children of the root module\nexport const resolveLocalNameToInstanceDown = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate: boolean | undefined = undefined,\n): Promise<ModuleInstance | undefined> => {\n const privateChildren = (includePrivate ? await root.privateChildren?.() : []) ?? []\n const publicChildren = (await root.publicChildren?.()) ?? []\n const children = [...privateChildren, ...publicChildren]\n return children.find(child => child.config.name === modName)\n}\n\nexport const resolveLocalNameToInstanceAll = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate = false,\n): Promise<ModuleInstance | undefined> => {\n return (await resolveLocalNameToInstanceDown(root, modName, includePrivate)) ?? (await resolveLocalNameToInstanceUp(root, modName))\n}\n\nexport const resolveLocalNameToInstance = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate = false,\n direction: ModuleResolveDirection = 'all',\n): Promise<ModuleInstance | undefined> => {\n switch (direction) {\n case 'all': {\n return await resolveLocalNameToInstanceAll(root, modName, includePrivate)\n }\n case 'up': {\n return await resolveLocalNameToInstanceUp(root, modName)\n }\n case 'down': {\n return await resolveLocalNameToInstanceDown(root, modName, includePrivate)\n }\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport type { ModuleInstance, ModuleName } from '@xyo-network/module-model'\n\nimport type { ModuleResolveDirection } from './model.ts'\nimport {\n resolveLocalNameToInstance,\n resolveLocalNameToInstanceAll,\n resolveLocalNameToInstanceDown,\n resolveLocalNameToInstanceUp,\n} from './resolveLocalNameToInstance.ts'\n\nexport const resolveLocalNameToAddressUp = async (root: ModuleInstance, modName: ModuleName): Promise<Address | undefined> => {\n return (await resolveLocalNameToInstanceUp(root, modName))?.address\n}\n\nexport const resolveLocalNameToAddressDown = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate: boolean | undefined = undefined,\n): Promise<Address | undefined> => {\n return (await resolveLocalNameToInstanceDown(root, modName, includePrivate))?.address\n}\n\nexport const resolveLocalNameToAddressAll = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate: boolean | undefined = undefined,\n): Promise<Address | undefined> => {\n return (await resolveLocalNameToInstanceAll(root, modName, includePrivate))?.address\n}\n\nexport const resolveLocalNameToAddress = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate: boolean | undefined = undefined,\n direction: ModuleResolveDirection = 'all',\n): Promise<Address | undefined> => {\n return (await resolveLocalNameToInstance(root, modName, includePrivate, direction))?.address\n}\n","import type { ModuleIdentifier, ModuleIdentifierTransformer } from '@xyo-network/module-model'\n\nexport const transformModuleIdentifier = async (\n id: ModuleIdentifier,\n transformers: ModuleIdentifierTransformer[],\n): Promise<ModuleIdentifier | undefined> => {\n let result: ModuleIdentifier | undefined = id\n for (const transformer of transformers) {\n result = await transformer.transform(id)\n }\n return result\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport type { ModuleIdentifierTransformer, ModuleInstance } from '@xyo-network/module-model'\n\nimport { ResolveHelperStatic } from './ResolveHelperStatic.ts'\nimport { resolvePathToInstance } from './resolvePathToInstance.ts'\n\nexport const resolvePathToAddress = async (\n root: ModuleInstance,\n path: string,\n includePrivate: boolean | undefined = undefined,\n transformers: ModuleIdentifierTransformer[] = ResolveHelperStatic.transformers,\n): Promise<Address | undefined> => {\n return (await resolvePathToInstance(root, path, includePrivate, transformers))?.address\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { ModuleIdentifier, ModuleResolver } from '@xyo-network/module-model'\nimport { asModuleInstance } from '@xyo-network/module-model'\n\nexport const traceModuleIdentifier = async (resolver: ModuleResolver, path: ModuleIdentifier): Promise<Address[]> => {\n const parts = path.split(':')\n const first = parts.shift()\n const firstModule = asModuleInstance(\n assertEx(await resolver.resolve(first, { maxDepth: 1 }), () => `Failed to resolve [${first}]`),\n () => `Resolved invalid module instance [${first}]`,\n )\n if (firstModule) {\n return parts.length > 0 ? [firstModule.address, ...(await traceModuleIdentifier(firstModule, parts.join(':')))] : [firstModule.address]\n }\n return []\n}\n","import type { Address, Promisable } from '@xylabs/sdk-js'\nimport {\n assertEx, exists, isAddress,\n} from '@xylabs/sdk-js'\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleName,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport { isModuleName } from '@xyo-network/module-model'\n\nimport type { ModuleResolverParams } from './AbstractModuleResolver.ts'\nimport { AbstractModuleResolver } from './AbstractModuleResolver.ts'\n\nexport type SimpleModuleResolverParams = ModuleResolverParams & {\n allowNameResolution?: boolean\n}\n\nexport class SimpleModuleResolver extends AbstractModuleResolver<SimpleModuleResolverParams> implements ModuleRepository {\n private modules: Record<Address, ModuleInstance> = {}\n private nameToModule: Record<ModuleName, ModuleInstance> = {}\n\n constructor(params: SimpleModuleResolverParams) {\n super(params)\n }\n\n get allowNameResolution() {\n return this.params.allowNameResolution ?? true\n }\n\n add(mods: ModuleInstance): this\n add(mods: ModuleInstance[]): this\n add(mods: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(mods)) {\n for (const mod of mods) this.addSingleModule(mod)\n } else {\n this.addSingleModule(mods)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolverInstance): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: Address | Address[]): this {\n if (Array.isArray(address)) {\n for (const addr of address) this.removeSingleModule(addr)\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolverInstance): this {\n throw 'Removing resolvers not supported'\n }\n\n resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[]> {\n const unfiltered = (() => {\n if (id) {\n if (typeof id === 'string') {\n if (id === '*') {\n return Object.values(this.modules) as T[]\n }\n const name = isModuleName(id) ? id : undefined\n const address = isAddress(id) ? id : undefined\n assertEx(name || address, () => 'module identifier must be a ModuleName or Address')\n return (\n (name ? this.resolveByName<T>(Object.values(this.modules), [name]).pop() : undefined)\n ?? (address ? this.resolveByAddress<T>(this.modules, [address]).pop() : undefined)\n )\n }\n } else {\n return Object.values(this.modules) as T[]\n }\n })()\n const identity = options?.identity\n if (identity) {\n return (\n Array.isArray(unfiltered)\n ? unfiltered?.filter(mod => identity(mod))\n : identity(unfiltered)\n ? [unfiltered]\n : []\n )\n } else {\n return (\n unfiltered\n ? Array.isArray(unfiltered)\n ? unfiltered\n : [unfiltered]\n : []\n )\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<Address | undefined> {\n // check if id is a name of one of modules in the resolver\n const moduleFromName = this.nameToModule[id]\n if (moduleFromName) {\n return moduleFromName.address\n }\n\n // check if any of the modules have the id as an address\n for (const mod of Object.values(this.modules)) {\n if (mod.address === id) {\n return mod.address\n }\n }\n }\n\n private addSingleModule(mod?: ModuleInstance) {\n if (mod) {\n const modName = mod.modName\n if (modName && this.allowNameResolution) {\n // check for collision\n assertEx(this.nameToModule[modName] === undefined, () => `Module with name ${modName} already added`)\n this.nameToModule[modName] = mod\n }\n this.modules[mod.address] = mod\n }\n }\n\n private removeSingleModule(address: Address) {\n assertEx(isAddress(address), () => 'Invalid address')\n const mod = assertEx(this.modules[address], () => 'Address not found in modules')\n delete this.modules[address]\n const modName = mod.modName\n if (modName) {\n delete this.nameToModule[modName]\n }\n }\n\n private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: Record<Address, ModuleInstance>, address: Address[]): T[] {\n return (\n address.map((address) => {\n return modules[address]\n })\n ).filter(exists) as T[]\n }\n\n private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name: ModuleName[]): T[] {\n return (\n name.map((name) => {\n return modules.find(mod => mod.modName === name)\n })\n ).filter(exists) as T[]\n }\n\n private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query: string[][]): T[] {\n return (\n modules.filter(mod =>\n // eslint-disable-next-line unicorn/no-array-reduce\n query?.reduce((supported, queryList) => {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n queryList.reduce((supported, query) => {\n const queryable = mod.queries.includes(query)\n return supported && queryable\n }, true) || supported\n )\n }, false))\n ).filter(exists) as T[]\n }\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport type { DivinerInstance } from '@xyo-network/diviner-model'\nimport { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model'\nimport type { ModuleIdentifier, ModuleIdentifierTransformer } from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nexport class NameRegistrarTransformer implements ModuleIdentifierTransformer {\n private _cache: LRUCache<ModuleIdentifier, ModuleIdentifier> = new LRUCache<ModuleIdentifier, ModuleIdentifier>({ max: 1000, ttl: 1000 * 5 })\n\n private registrarDiviner: DivinerInstance\n private root: string\n\n constructor(\n registrarDiviner: DivinerInstance,\n root: string,\n ) {\n this.registrarDiviner = registrarDiviner\n this.root = root\n }\n\n async transform(identifier: ModuleIdentifier): Promise<ModuleIdentifier> {\n const parts = identifier.split(':')\n const first = parts.shift()\n const nameParts = first?.split('.')\n if (nameParts?.length === 2 && nameParts[1] === this.root) {\n // check cache\n const cachedResult = this._cache.get(identifier)\n if (isDefined(cachedResult)) return cachedResult\n\n // not cached, so check registrar\n const query = {\n domain: nameParts[0], order: 'desc' as const, schema: PayloadDivinerQuerySchema, tld: nameParts[1],\n }\n const result = await this.registrarDiviner?.divine([query])\n const resultPayload = result?.shift()\n if (isUndefined(resultPayload)) {\n throw new Error(`Unable to resolve registrar name (failed) [${first}]`)\n }\n // TODO: Use proper types for this check\n if (isDefined(resultPayload)) {\n const address = (resultPayload as unknown as { address: Address[] }).address?.shift()\n if (address) {\n this._cache.set(identifier, address)\n return address\n }\n }\n throw new Error(`Unable to resolve registrar name (not found) [${first}]`)\n }\n return identifier\n }\n}\n","import type {\n ModuleIdentifier, ModuleResolver,\n QueryableModule,\n} from '@xyo-network/module-model'\n\nexport interface ModuleResolvedEventArgs {\n id?: ModuleIdentifier\n mod: QueryableModule\n}\n\nexport interface ResolverEventEmitter {\n on(event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void): void\n}\n\ntype ListenerFunction = (args: ModuleResolvedEventArgs) => void\n\nconst getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {\n const listeners: ListenerFunction[] = []\n const emit = (event: 'moduleResolved', args: ModuleResolvedEventArgs): boolean => {\n if (listeners.length === 0) return false\n for (const listener of listeners) listener(args)\n return true\n }\n const onModuleResolved = (mod: QueryableModule, id?: ModuleIdentifier) => {\n const args = { id, mod }\n emit('moduleResolved', args)\n }\n\n const { resolve } = resolver\n function originalResolve(filter?: ModuleIdentifier) {\n return resolve.bind(resolver)(filter)\n }\n\n return {\n on: (event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void) => {\n listeners.push(listener)\n },\n resolve: async (id?: ModuleIdentifier): Promise<QueryableModule[]> => {\n const modulesResult = await originalResolve(id) ?? []\n const modules = Array.isArray(modulesResult) ? modulesResult : [modulesResult]\n\n await Promise.allSettled(modules.map(mod => onModuleResolved(mod, id)))\n return modules\n },\n }\n}\n\nexport const mixinResolverEventEmitter = <T extends ModuleResolver = ModuleResolver>(resolver: T): T & ResolverEventEmitter => {\n const mixin = getMixin(resolver)\n return Object.assign(resolver, mixin)\n}\n"],"mappings":"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","names":["assertEx","exists","isDefined","isString","duplicateModules","ObjectResolverPriority","assertEx","asModuleInstance","duplicateModules","assertEx","assertEx","assertEx","asModuleInstance","duplicateModules","mod","assertEx","asModuleInstance","assertEx","exists","isAddress","isAddress","assertEx","address","exists","name","supported","query","result","exists","duplicateModules","isString","mod","isDefined","ObjectResolverPriority","assertEx","isDefined","LRUCache"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/module-resolver",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -22,12 +22,10 @@
|
|
|
22
22
|
"exports": {
|
|
23
23
|
".": {
|
|
24
24
|
"types": "./dist/neutral/index.d.ts",
|
|
25
|
-
"import": "./dist/neutral/index.mjs",
|
|
26
25
|
"default": "./dist/neutral/index.mjs"
|
|
27
26
|
},
|
|
28
27
|
"./package.json": "./package.json"
|
|
29
28
|
},
|
|
30
|
-
"types": "dist/neutral/index.d.ts",
|
|
31
29
|
"files": [
|
|
32
30
|
"dist",
|
|
33
31
|
"!**/*.bench.*",
|
|
@@ -36,37 +34,35 @@
|
|
|
36
34
|
"README.md"
|
|
37
35
|
],
|
|
38
36
|
"dependencies": {
|
|
39
|
-
"lru-cache": "~11.3.
|
|
37
|
+
"lru-cache": "~11.3.5"
|
|
40
38
|
},
|
|
41
39
|
"devDependencies": {
|
|
42
40
|
"@opentelemetry/api": "^1.9.1",
|
|
43
|
-
"@types/node": "^25.
|
|
44
|
-
"@xylabs/sdk-js": "^5.0.
|
|
45
|
-
"@xylabs/
|
|
46
|
-
"@xylabs/
|
|
47
|
-
"@xylabs/
|
|
48
|
-
"@xylabs/vitest-
|
|
49
|
-
"@xylabs/vitest-matchers": "~5.0.95",
|
|
50
|
-
"axios": "^1.14.0",
|
|
41
|
+
"@types/node": "^25.6.0",
|
|
42
|
+
"@xylabs/sdk-js": "^5.0.97",
|
|
43
|
+
"@xylabs/toolchain": "~7.10.8",
|
|
44
|
+
"@xylabs/tsconfig": "~7.10.8",
|
|
45
|
+
"@xylabs/vitest-extended": "~5.0.97",
|
|
46
|
+
"@xylabs/vitest-matchers": "~5.0.97",
|
|
51
47
|
"esbuild": "^0.28.0",
|
|
52
48
|
"pako": "~2.1.0",
|
|
53
49
|
"typescript": "~5.9.3",
|
|
54
|
-
"vite": "^8.0.
|
|
55
|
-
"vitest": "~4.1.
|
|
50
|
+
"vite": "^8.0.8",
|
|
51
|
+
"vitest": "~4.1.4",
|
|
56
52
|
"zod": "^4.3.6",
|
|
57
|
-
"@xyo-network/
|
|
58
|
-
"@xyo-network/diviner-
|
|
59
|
-
"@xyo-network/
|
|
60
|
-
"@xyo-network/manifest-model": "~5.
|
|
61
|
-
"@xyo-network/
|
|
62
|
-
"@xyo-network/
|
|
63
|
-
"@xyo-network/previous-hash-store-model": "~5.
|
|
53
|
+
"@xyo-network/account-model": "~5.4.0",
|
|
54
|
+
"@xyo-network/diviner-model": "~5.4.0",
|
|
55
|
+
"@xyo-network/diviner-payload-model": "~5.4.0",
|
|
56
|
+
"@xyo-network/manifest-model": "~5.4.0",
|
|
57
|
+
"@xyo-network/module-model": "~5.4.0",
|
|
58
|
+
"@xyo-network/payload-model": "~5.4.0",
|
|
59
|
+
"@xyo-network/previous-hash-store-model": "~5.4.0"
|
|
64
60
|
},
|
|
65
61
|
"peerDependencies": {
|
|
66
|
-
"@xylabs/sdk-js": "^5",
|
|
67
|
-
"@xyo-network/diviner-model": "~5.
|
|
68
|
-
"@xyo-network/diviner-payload-model": "~5.
|
|
69
|
-
"@xyo-network/module-model": "~5.
|
|
62
|
+
"@xylabs/sdk-js": "^5.0.97",
|
|
63
|
+
"@xyo-network/diviner-model": "~5.4",
|
|
64
|
+
"@xyo-network/diviner-payload-model": "~5.4",
|
|
65
|
+
"@xyo-network/module-model": "~5.4"
|
|
70
66
|
},
|
|
71
67
|
"publishConfig": {
|
|
72
68
|
"access": "public"
|