@xyo-network/sdk 7.2.1 → 7.2.2
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/neutral/bridge-abstract.mjs +2 -2
- package/dist/neutral/bridge-abstract.mjs.map +2 -2
- package/dist/neutral/module-resolver.mjs +1 -1
- package/dist/neutral/module-resolver.mjs.map +2 -2
- package/dist/neutral/module-wrapper.mjs +1 -1
- package/dist/neutral/module-wrapper.mjs.map +2 -2
- package/package.json +7 -7
|
@@ -321,7 +321,7 @@ var ModuleProxyResolver = class {
|
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
async resolvePrivate(id, _options) {
|
|
324
|
-
if (id === "*") return
|
|
324
|
+
if (id === "*") return [];
|
|
325
325
|
}
|
|
326
326
|
};
|
|
327
327
|
|
|
@@ -490,7 +490,7 @@ var AbstractModuleProxy = class extends AbstractModuleInstance2 {
|
|
|
490
490
|
throw new Error("queryHandler should never be called");
|
|
491
491
|
}
|
|
492
492
|
async queryable(_query, _payloads, _queryConfig) {
|
|
493
|
-
return
|
|
493
|
+
return true;
|
|
494
494
|
}
|
|
495
495
|
async resolveArchivingArchivists() {
|
|
496
496
|
return await this.params.archiving?.resolveArchivists() ?? [];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/modules/bridge-abstract/AbstractBridge.ts", "../../src/modules/bridge-abstract/AbstractBridgeModuleResolver.ts", "../../src/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.ts", "../../src/modules/bridge-abstract/AbstractModuleProxy/ModuleProxyResolver.ts", "../../src/modules/bridge-abstract/wrapModuleWithType.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx, exists, forget,\n globallyUnique,\n} from '@ariestools/sdk'\nimport type {\n Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, QueryBoundWitnessWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport { asArchivistInstance } from '#archivist-model'\nimport type {\n AttachableBridgeInstance,\n BridgeExposeOptions,\n BridgeModuleEventData,\n BridgeParams,\n BridgeQueries,\n BridgeUnexposeOptions,\n ModuleFilterPayload,\n} from '#bridge-model'\nimport {\n BridgeConfigSchema,\n BridgeConnectQuerySchema,\n BridgeDisconnectQuerySchema,\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n ModuleFilterPayloadSchema,\n} from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPayload,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleResolverInstance,\n} from '#module-model'\nimport { AddressSchema } from '#module-model'\nimport {\n resolveAddressToInstance,\n resolvePathToAddress,\n transformModuleIdentifier,\n} from '#module-resolver'\n\nexport abstract class AbstractBridge<TParams extends BridgeParams = BridgeParams>\n extends AbstractModuleInstance<TParams, BridgeModuleEventData>\n implements AttachableBridgeInstance<TParams, BridgeModuleEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = BridgeConfigSchema\n static override readonly uniqueName: string = globallyUnique('AbstractBridge', AbstractBridge, 'xyo')\n\n protected _roots?: ModuleInstance[]\n\n override get allowNameResolution(): boolean {\n // we default to false here to prevent name collisions\n return this.params.allowNameResolution ?? true\n }\n\n get discoverRoots(): false | 'start' | 'lazy' {\n return this.config.client?.discoverRoots ?? (this.config.client === undefined ? false : 'start')\n }\n\n override get queries(): Schema[] {\n return [BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ...super.queries]\n }\n\n get resolver(): Promisable<ModuleResolverInstance> {\n return assertEx(this.params.resolver, () => 'No resolver provided')\n }\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions): Promise<ModuleInstance[]> {\n this._noOverride('expose')\n assertEx(id !== '*', () => \"Exposing '*' not supported\")\n const addressToExpose = assertEx(await resolvePathToAddress(this, id), () => `Module to expose not found [${id}]`)\n console.log(`expose: ${addressToExpose}`)\n const modules = await this.exposeHandler(addressToExpose, options)\n await this.emit('exposed', { mod: this, modules })\n return modules\n }\n\n async exposed(): Promise<XyoAddress[]> {\n this._noOverride('exposed')\n return await this.exposedHandler()\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const roots = (this._roots ?? []) as T[]\n const workingSet = (options.direction === 'up' ? [this as ModuleInstance] : [...roots, this]) as T[]\n if (id === '*') {\n const remainingDepth = (options.maxDepth ?? 5) - 1\n return remainingDepth <= 0\n ? workingSet\n : (\n // eslint-disable-next-line @typescript-eslint/await-thenable\n [...workingSet, ...(await Promise.all(roots.map(mod => mod.resolve('*', { ...options, maxDepth: remainingDepth })))).flat()]\n )\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = assertEx(parts.shift(), () => 'Missing module identifier')\n const firstId = await transformModuleIdentifier(first, this.moduleIdentifierTransformers)\n const result = workingSet.find((mod) => {\n return firstId === mod.address || firstId === mod.modName\n })\n return parts.length === 0 ? result : result?.resolve(parts.join(':'), options)\n }\n default: {\n return\n }\n }\n }\n\n override async startHandler(): Promise<void> {\n if (this.discoverRoots === 'lazy') {\n forget(this.getRoots())\n } else if (this.discoverRoots === 'start') {\n await this.getRoots()\n }\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions): Promise<XyoAddress[]> {\n this._noOverride('unexpose')\n const addressToUnexpose = assertEx(await resolvePathToAddress(this, id), () => `Module to unexpose not found [${id}]`)\n const modules = await this.unexposeHandler(addressToUnexpose, options)\n await this.emit('unexposed', { mod: this, modules })\n return modules.map(mod => mod.address)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n query: T,\n payloads?: Payload[],\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<BridgeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case BridgeExposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const modules = await this.expose(id, options)\n for (const mod of modules) {\n const addressPayload: AddressPayload = {\n address: mod.address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n case BridgeUnexposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const moduleAddresses = await this.unexpose(id, options)\n for (const address of moduleAddresses) {\n const addressPayload: AddressPayload = {\n address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolvedAddresses = (\n await Promise.all(\n archivists.map(async archivist =>\n (await Promise.all((await this.parents()).map(parent => resolvePathToAddress(parent, archivist)))).filter(exists)),\n )\n )\n .flat()\n .filter(exists)\n const resolved = (await Promise.all(resolvedAddresses.map(address => resolveAddressToInstance(this, address)))).filter(exists)\n return resolved.map(mod => asArchivistInstance(mod)).filter(exists)\n }\n\n abstract exposeHandler(address: XyoAddress, options?: BridgeExposeOptions): Promisable<ModuleInstance[]>\n\n abstract exposedHandler(): Promisable<XyoAddress[]>\n\n abstract getRoots(force?: boolean): Promise<ModuleInstance[]>\n\n abstract unexposeHandler(address: XyoAddress, options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]>\n}\n", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type {\n BridgeInstance, QuerySendFinishedEventArgs, QuerySendStartedEventArgs,\n} from '#bridge-model'\nimport type {\n ArchivingModuleConfig,\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport type { ModuleResolverParams } from '#module-resolver'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport type { ModuleProxyParams } from './AbstractModuleProxy/index.ts'\n\nexport interface BridgeModuleResolverParams extends ModuleResolverParams {\n additionalSigners?: AccountInstance[]\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n bridge: BridgeInstance\n cacheConfig?: CacheConfig\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n wrapperAccount: AccountInstance\n}\n\nexport abstract class AbstractBridgeModuleResolver<\n TParams extends BridgeModuleResolverParams = BridgeModuleResolverParams,\n TProxyParams extends ModuleProxyParams = ModuleProxyParams,\n> extends CompositeModuleResolver<TParams> {\n override get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n _params?: Partial<TProxyParams>,\n ): Promise<T[]> {\n if (id === '*') {\n return []\n }\n return await super.resolveHandler(id, options)\n }\n}\n", "import {\n asAddress, assertEx,\n exists,\n forget,\n isAddress, toSafeJsonString,\n} from '@ariestools/sdk'\nimport type {\n AccountInstance, ModuleError, ModuleManifestPayload, NodeManifestPayload,\n Payload, QueryBoundWitness, QueryPayload, Schema, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport {\n Account, BoundWitnessWrapper, isPayloadOfSchemaType, isSchema, ModuleErrorSchema, ModuleManifestPayloadSchema, NodeManifestPayloadSchema, PayloadBuilder,\n QueryBoundWitnessWrapper, QuerySchema,\n} from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type { QuerySendFinishedEventArgs, QuerySendStartedEventArgs } from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPreviousHashPayload,\n AnyConfigSchema,\n ArchivingModuleConfig,\n AttachableModuleInstance,\n ModuleAddressQuery,\n ModuleConfig,\n ModuleEventData,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolver,\n QueryableModule,\n QueryableModuleParams,\n} from '#module-model'\nimport {\n AddressPreviousHashSchema,\n DeadModuleError,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n} from '#module-model'\nimport { ModuleWrapper } from '#module-wrapper'\n\nimport { ModuleProxyResolver } from './ModuleProxyResolver.ts'\n\nexport interface ModuleProxyParams extends QueryableModuleParams\n{\n account: AccountInstance\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n host: ModuleResolver\n manifest?: ModuleManifestPayload\n moduleAddress: XyoAddress\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n state?: Payload[]\n}\n\nexport abstract class AbstractModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends ModuleProxyParams = ModuleProxyParams,\n>\n extends AbstractModuleInstance<TParams, TWrappedModule['eventData']>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static readonly requiredQueries: string[] = [ModuleStateQuerySchema]\n\n protected _config?: TWrappedModule['config']\n protected _publicChildren?: ModuleInstance[]\n protected _state: Payload[] | undefined = undefined\n protected _stateInProcess = false\n\n private _spamTrap = new LRUCache<string, number>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n override get address(): (Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress {\n return this.params.moduleAddress\n }\n\n override get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.params?.archiving\n }\n\n override get config(): TWrappedModule['config'] & { schema: Schema } {\n return { ...this._config, schema: (this._config?.schema ?? ModuleConfigSchema) }\n }\n\n override get queries(): Schema[] {\n const queryPayloads = assertEx(this._state, () => 'Module state not found. Make sure proxy has been started').filter(item =>\n isPayloadOfSchemaType<QueryPayload>(QuerySchema)(item))\n return queryPayloads.map(payload => payload.query)\n }\n\n static hasRequiredQueries(mod: QueryableModule): boolean {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static override isAllowedSchema(schema: Schema): boolean {\n return isSchema(schema)\n }\n\n static missingRequiredQueries(mod: QueryableModule): string[] {\n const moduleQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n static override async paramsHandler<T extends AttachableModuleInstance<QueryableModuleParams, ModuleEventData>>(\n inParams?: Partial<T['params']>,\n ): Promise<T['params']> {\n const superParams = await super.paramsHandler(inParams)\n return {\n ...superParams,\n account: (superParams.account === 'random') ? await Account.random() : superParams.account,\n addToResolvers: superParams.addToResolvers ?? true,\n }\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n const result: AddressPreviousHashPayload = assertEx(\n (await this.sendQuery(queryPayload, undefined, this.account)).find(\n isPayloadOfSchemaType<AddressPreviousHashPayload>(AddressPreviousHashSchema),\n ),\n () => 'Result did not include correct payload',\n )\n return result\n }\n\n childAddressByName(name: ModuleName): XyoAddress | undefined {\n const nodeManifests = this._state?.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n const childPairs = nodeManifests?.flatMap(nodeManifest => Object.entries(nodeManifest.status?.children ?? {}) as [XyoAddress, ModuleName | null][])\n return asAddress(childPairs?.find(([_, childName]) => childName === name)?.[0])\n }\n\n async childAddressMap(): Promise<Record<XyoAddress, ModuleName | null>> {\n let nodeManifests: NodeManifestPayload[] | undefined\n = isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(this.params.manifest) ? [this.params.manifest] : undefined\n const result: Record<XyoAddress, ModuleName | null> = {}\n if (nodeManifests === undefined) {\n const state = await this.state()\n nodeManifests = state.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n }\n for (const manifest of nodeManifests ?? []) {\n const children = manifest.modules?.public ?? []\n for (const child of children) {\n if (typeof child === 'object') {\n const address = child.status?.address\n if (isAddress(address)) {\n result[address] = child.config.name ?? null\n }\n }\n }\n }\n return result\n }\n\n override async createHandler(): Promise<void> {\n await super.createHandler()\n let manifest: ModuleManifestPayload | NodeManifestPayload | undefined = this.params.manifest\n if (!manifest) {\n const state = await this.state()\n const manifestPayload = state.find(\n payload => isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(payload)\n || isPayloadOfSchemaType<ModuleManifestPayload>(ModuleManifestPayloadSchema)(payload),\n )\n manifest = assertEx(manifestPayload, () => \"Can't find manifest payload\")\n }\n this.setConfig({ ...manifest.config })\n this.downResolver.addResolver(\n new ModuleProxyResolver({\n childAddressMap: await this.childAddressMap(),\n host: this.params.host,\n mod: this,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n }),\n )\n }\n\n override async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as ModuleManifestPayload\n }\n\n override async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload))\n }\n\n override async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as AddressPreviousHashPayload).previousHash\n }\n\n override async publicChildren(): Promise<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]> {\n this._publicChildren = this._publicChildren ?? (await super.publicChildren())\n return this._publicChildren\n }\n\n override async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n this._checkDead()\n return await this.busy(async () => {\n try {\n await this.checkSpam(query)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n this.params.onQuerySendStarted?.({ payloads, query })\n const result = await this.proxyQueryHandler<T>(query, payloads)\n this.params.onQuerySendFinished?.({\n payloads, query, result, status: 'success',\n })\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n forget(this.emit('moduleQueried', {\n mod: this, payloads, query, result,\n }))\n return result\n } catch (ex) {\n this.params.onQuerySendFinished?.({\n payloads, query, status: 'failure',\n })\n const error = ex as Error\n this._lastError = error\n // this.status = 'dead'\n const deadError = new DeadModuleError(this.address, error)\n const errorPayload: ModuleError = {\n message: deadError.message,\n name: deadError.name,\n schema: ModuleErrorSchema,\n }\n const sourceQuery = assertEx(QueryBoundWitnessWrapper.unwrap(query), () => 'Invalid query')\n return await this.bindQueryResult(sourceQuery, [], undefined, [errorPayload])\n }\n })\n }\n\n override queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<ModuleQueryHandlerResult> {\n throw new Error('queryHandler should never be called')\n }\n\n override async queryable<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<boolean> {\n return await Promise.resolve(true)\n }\n\n override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n return (await this.params.archiving?.resolveArchivists()) ?? []\n }\n\n setConfig(config: TWrappedModule['params']['config']): void {\n this._config = config\n }\n\n setState(state: Payload[]): void {\n this._state = state\n }\n\n override async state(): Promise<Payload[]> {\n if (this._state === undefined) {\n // temporarily add ModuleStateQuerySchema to the schema list so we can wrap it and get the real query list\n const stateQueryPayload: QueryPayload = { query: ModuleStateQuerySchema, schema: QuerySchema }\n const manifestQueryPayload: QueryPayload = { query: ModuleManifestQuerySchema, schema: QuerySchema }\n this._state = [stateQueryPayload, manifestQueryPayload]\n const wrapper = ModuleWrapper.wrap(this, await Account.random())\n this._state = await wrapper.state()\n }\n return this._state\n }\n\n protected filterErrors(result: ModuleQueryResult): ModuleError[] {\n const wrapper = BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n protected override async startHandler(): Promise<void> {\n return await super.startHandler()\n }\n\n // this checks and warns if we are getting spammed by the same query\n private async checkSpam(query: QueryBoundWitness) {\n const hash = await PayloadBuilder.hash(query)\n const previousCount = this._spamTrap.get(hash) ?? 0\n if (previousCount > 0) {\n this.logger?.warn(`Spam trap triggered for query: ${hash} from ${toSafeJsonString(query.addresses)}`)\n }\n this._spamTrap.set(hash, previousCount + 1)\n }\n\n abstract proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(_query: T, _payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n", "import type { Promisable } from '@ariestools/sdk'\nimport { assertEx, exists } from '@ariestools/sdk'\nimport type {\n ModuleManifestPayload, XyoAddress, XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport { Account } from '@xyo-network/sdk-protocol'\n\nimport type {\n AnyConfigSchema,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleName,\n ModuleResolver,\n ModuleResolverInstance,\n ObjectFilterOptions,\n QueryableModuleParams,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport { wrapModuleWithType } from '../wrapModuleWithType.ts'\n\nexport interface ModuleProxyResolverOptions {\n childAddressMap: Record<XyoAddress, ModuleName | null>\n childManifests?: Record<XyoAddress, ModuleManifestPayload>\n childStates?: Record<XyoAddress, ModuleManifestPayload>\n host: ModuleResolver\n mod: ModuleInstance\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nexport class ModuleProxyResolver<T extends ModuleProxyResolverOptions = ModuleProxyResolverOptions> implements ModuleResolverInstance {\n private downResolver: CompositeModuleResolver\n private options: T\n\n constructor(options: T) {\n this.options = options\n this.downResolver = new CompositeModuleResolver({ moduleIdentifierTransformers: options.moduleIdentifierTransformers, root: this.root })\n }\n\n get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n get root(): ModuleInstance {\n return this.options.mod\n }\n\n protected get childAddressMap(): Record<(Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress, string | null> {\n return this.options.childAddressMap\n }\n\n protected get host(): ModuleResolver<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>> {\n return this.options.host\n }\n\n protected get mod(): ModuleInstance {\n return this.options.mod\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n childManifest(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childManifests?.[address]\n }\n\n childState(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childStates?.[address]\n }\n\n removeResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\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 // eslint-disable-next-line complexity\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n // console.log(`childAddressMap: ${toSafeJsonString(this.childAddressMap, 10)}`)\n const direction = options?.direction ?? 'all'\n if (id === '*') {\n // get all the child addresses. if they have been resolved before, they should be in downResolver\n const childAddresses = Object.keys(this.childAddressMap)\n const resolvedChildren = await Promise.all(childAddresses.map<Promise<T | undefined>>(address => this.resolve<T>(address, options)))\n return resolvedChildren.filter(exists)\n } else if (typeof id === 'string') {\n const idParts = id.split(':')\n const firstPart: ModuleIdentifier = assertEx(idParts.shift(), () => 'Invalid module identifier at first position')\n const firstPartAddress = await this.resolveIdentifier(firstPart)\n if (firstPartAddress) {\n const remainingParts = idParts.length > 0 ? idParts.join(':') : undefined\n if (direction === 'down' || direction === 'all') {\n const downResolverModule = await this.downResolver.resolve<T>(firstPartAddress)\n if (downResolverModule) {\n return remainingParts ? downResolverModule.resolve(remainingParts, options) : downResolverModule\n }\n\n console.log(`ModuleProxyResolver: ${firstPartAddress} | ${this.root.address}`)\n if (firstPartAddress === this.root.address) {\n const wrapped = wrapModuleWithType(this.root, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n\n // if it is a known child, create a proxy\n const addressToProxy\n = Object.keys(this.childAddressMap).includes(firstPartAddress)\n ? (firstPartAddress)\n : (Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)?.[0] as XyoAddress | undefined)\n if (addressToProxy) {\n const proxy = await this.host.resolve(addressToProxy, { ...options, direction: 'down' })\n if (proxy) {\n const wrapped = wrapModuleWithType(proxy, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n return\n }\n }\n }\n return\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<XyoAddress | undefined> {\n // check if any of the modules have the id as an address\n if (this.childAddressMap[id as XyoAddress]) {\n return id as XyoAddress\n }\n\n if (this.root.address === id) {\n return this.root.address\n }\n\n if (this.root.modName === id) {\n return this.root.address\n }\n\n // check if id is a name of one of modules in the resolver\n const addressFromName = Object.entries(this.childAddressMap).find(([, name]) => name === id)?.[0] as XyoAddress | undefined\n if (addressFromName) {\n return addressFromName\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", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport { isArchivistModule } from '#archivist-model'\nimport { ArchivistWrapper } from '#archivist-wrapper'\nimport { isDivinerModule } from '#diviner-model'\nimport { DivinerWrapper } from '#diviner-wrapper'\nimport type { QueryableModule } from '#module-model'\nimport type { ModuleWrapper } from '#module-wrapper'\nimport { isNodeModule } from '#node-model'\nimport { NodeWrapper } from '#node-wrapper'\nimport { isSentinelModule } from '#sentinel-model'\nimport { SentinelWrapper } from '#sentinel-wrapper'\nimport { isWitnessModule } from '#witness-model'\nimport { WitnessWrapper } from '#witness-wrapper'\n\nexport const wrapModuleWithType = (mod: QueryableModule, account: AccountInstance): ModuleWrapper => {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, account)\n }\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, account)\n }\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, account)\n }\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, account)\n }\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, account)\n }\n throw new Error('Failed to wrap')\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx, exists, forget,\n globallyUnique,\n} from '@ariestools/sdk'\nimport type {\n Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, QueryBoundWitnessWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport { asArchivistInstance } from '#archivist-model'\nimport type {\n AttachableBridgeInstance,\n BridgeExposeOptions,\n BridgeModuleEventData,\n BridgeParams,\n BridgeQueries,\n BridgeUnexposeOptions,\n ModuleFilterPayload,\n} from '#bridge-model'\nimport {\n BridgeConfigSchema,\n BridgeConnectQuerySchema,\n BridgeDisconnectQuerySchema,\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n ModuleFilterPayloadSchema,\n} from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPayload,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleResolverInstance,\n} from '#module-model'\nimport { AddressSchema } from '#module-model'\nimport {\n resolveAddressToInstance,\n resolvePathToAddress,\n transformModuleIdentifier,\n} from '#module-resolver'\n\nexport abstract class AbstractBridge<TParams extends BridgeParams = BridgeParams>\n extends AbstractModuleInstance<TParams, BridgeModuleEventData>\n implements AttachableBridgeInstance<TParams, BridgeModuleEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = BridgeConfigSchema\n static override readonly uniqueName: string = globallyUnique('AbstractBridge', AbstractBridge, 'xyo')\n\n protected _roots?: ModuleInstance[]\n\n override get allowNameResolution(): boolean {\n // we default to false here to prevent name collisions\n return this.params.allowNameResolution ?? true\n }\n\n get discoverRoots(): false | 'start' | 'lazy' {\n return this.config.client?.discoverRoots ?? (this.config.client === undefined ? false : 'start')\n }\n\n override get queries(): Schema[] {\n return [BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ...super.queries]\n }\n\n get resolver(): Promisable<ModuleResolverInstance> {\n return assertEx(this.params.resolver, () => 'No resolver provided')\n }\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions): Promise<ModuleInstance[]> {\n this._noOverride('expose')\n assertEx(id !== '*', () => \"Exposing '*' not supported\")\n const addressToExpose = assertEx(await resolvePathToAddress(this, id), () => `Module to expose not found [${id}]`)\n console.log(`expose: ${addressToExpose}`)\n const modules = await this.exposeHandler(addressToExpose, options)\n await this.emit('exposed', { mod: this, modules })\n return modules\n }\n\n async exposed(): Promise<XyoAddress[]> {\n this._noOverride('exposed')\n return await this.exposedHandler()\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const roots = (this._roots ?? []) as T[]\n const workingSet = (options.direction === 'up' ? [this as ModuleInstance] : [...roots, this]) as T[]\n if (id === '*') {\n const remainingDepth = (options.maxDepth ?? 5) - 1\n return remainingDepth <= 0\n ? workingSet\n : (\n // eslint-disable-next-line @typescript-eslint/await-thenable\n [...workingSet, ...(await Promise.all(roots.map(mod => mod.resolve('*', { ...options, maxDepth: remainingDepth })))).flat()]\n )\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = assertEx(parts.shift(), () => 'Missing module identifier')\n const firstId = await transformModuleIdentifier(first, this.moduleIdentifierTransformers)\n const result = workingSet.find((mod) => {\n return firstId === mod.address || firstId === mod.modName\n })\n return parts.length === 0 ? result : result?.resolve(parts.join(':'), options)\n }\n default: {\n return\n }\n }\n }\n\n override async startHandler(): Promise<void> {\n if (this.discoverRoots === 'lazy') {\n forget(this.getRoots())\n } else if (this.discoverRoots === 'start') {\n await this.getRoots()\n }\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions): Promise<XyoAddress[]> {\n this._noOverride('unexpose')\n const addressToUnexpose = assertEx(await resolvePathToAddress(this, id), () => `Module to unexpose not found [${id}]`)\n const modules = await this.unexposeHandler(addressToUnexpose, options)\n await this.emit('unexposed', { mod: this, modules })\n return modules.map(mod => mod.address)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n query: T,\n payloads?: Payload[],\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<BridgeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case BridgeExposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const modules = await this.expose(id, options)\n for (const mod of modules) {\n const addressPayload: AddressPayload = {\n address: mod.address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n case BridgeUnexposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const moduleAddresses = await this.unexpose(id, options)\n for (const address of moduleAddresses) {\n const addressPayload: AddressPayload = {\n address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolvedAddresses = (\n await Promise.all(\n archivists.map(async archivist =>\n (await Promise.all((await this.parents()).map(parent => resolvePathToAddress(parent, archivist)))).filter(exists)),\n )\n )\n .flat()\n .filter(exists)\n const resolved = (await Promise.all(resolvedAddresses.map(address => resolveAddressToInstance(this, address)))).filter(exists)\n return resolved.map(mod => asArchivistInstance(mod)).filter(exists)\n }\n\n abstract exposeHandler(address: XyoAddress, options?: BridgeExposeOptions): Promisable<ModuleInstance[]>\n\n abstract exposedHandler(): Promisable<XyoAddress[]>\n\n abstract getRoots(force?: boolean): Promise<ModuleInstance[]>\n\n abstract unexposeHandler(address: XyoAddress, options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]>\n}\n", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type {\n BridgeInstance, QuerySendFinishedEventArgs, QuerySendStartedEventArgs,\n} from '#bridge-model'\nimport type {\n ArchivingModuleConfig,\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport type { ModuleResolverParams } from '#module-resolver'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport type { ModuleProxyParams } from './AbstractModuleProxy/index.ts'\n\nexport interface BridgeModuleResolverParams extends ModuleResolverParams {\n additionalSigners?: AccountInstance[]\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n bridge: BridgeInstance\n cacheConfig?: CacheConfig\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n wrapperAccount: AccountInstance\n}\n\nexport abstract class AbstractBridgeModuleResolver<\n TParams extends BridgeModuleResolverParams = BridgeModuleResolverParams,\n TProxyParams extends ModuleProxyParams = ModuleProxyParams,\n> extends CompositeModuleResolver<TParams> {\n override get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n _params?: Partial<TProxyParams>,\n ): Promise<T[]> {\n if (id === '*') {\n return []\n }\n return await super.resolveHandler(id, options)\n }\n}\n", "import {\n asAddress, assertEx,\n exists,\n forget,\n isAddress, toSafeJsonString,\n} from '@ariestools/sdk'\nimport type {\n AccountInstance, ModuleError, ModuleManifestPayload, NodeManifestPayload,\n Payload, QueryBoundWitness, QueryPayload, Schema, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport {\n Account, BoundWitnessWrapper, isPayloadOfSchemaType, isSchema, ModuleErrorSchema, ModuleManifestPayloadSchema, NodeManifestPayloadSchema, PayloadBuilder,\n QueryBoundWitnessWrapper, QuerySchema,\n} from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type { QuerySendFinishedEventArgs, QuerySendStartedEventArgs } from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPreviousHashPayload,\n AnyConfigSchema,\n ArchivingModuleConfig,\n AttachableModuleInstance,\n ModuleAddressQuery,\n ModuleConfig,\n ModuleEventData,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolver,\n QueryableModule,\n QueryableModuleParams,\n} from '#module-model'\nimport {\n AddressPreviousHashSchema,\n DeadModuleError,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n} from '#module-model'\nimport { ModuleWrapper } from '#module-wrapper'\n\nimport { ModuleProxyResolver } from './ModuleProxyResolver.ts'\n\nexport interface ModuleProxyParams extends QueryableModuleParams\n{\n account: AccountInstance\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n host: ModuleResolver\n manifest?: ModuleManifestPayload\n moduleAddress: XyoAddress\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n state?: Payload[]\n}\n\nexport abstract class AbstractModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends ModuleProxyParams = ModuleProxyParams,\n>\n extends AbstractModuleInstance<TParams, TWrappedModule['eventData']>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static readonly requiredQueries: string[] = [ModuleStateQuerySchema]\n\n protected _config?: TWrappedModule['config']\n protected _publicChildren?: ModuleInstance[]\n protected _state: Payload[] | undefined = undefined\n protected _stateInProcess = false\n\n private _spamTrap = new LRUCache<string, number>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n override get address(): (Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress {\n return this.params.moduleAddress\n }\n\n override get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.params?.archiving\n }\n\n override get config(): TWrappedModule['config'] & { schema: Schema } {\n return { ...this._config, schema: (this._config?.schema ?? ModuleConfigSchema) }\n }\n\n override get queries(): Schema[] {\n const queryPayloads = assertEx(this._state, () => 'Module state not found. Make sure proxy has been started').filter(item =>\n isPayloadOfSchemaType<QueryPayload>(QuerySchema)(item))\n return queryPayloads.map(payload => payload.query)\n }\n\n static hasRequiredQueries(mod: QueryableModule): boolean {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static override isAllowedSchema(schema: Schema): boolean {\n return isSchema(schema)\n }\n\n static missingRequiredQueries(mod: QueryableModule): string[] {\n const moduleQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n static override async paramsHandler<T extends AttachableModuleInstance<QueryableModuleParams, ModuleEventData>>(\n inParams?: Partial<T['params']>,\n ): Promise<T['params']> {\n const superParams = await super.paramsHandler(inParams)\n return {\n ...superParams,\n account: (superParams.account === 'random') ? await Account.random() : superParams.account,\n addToResolvers: superParams.addToResolvers ?? true,\n }\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n const result: AddressPreviousHashPayload = assertEx(\n (await this.sendQuery(queryPayload, undefined, this.account)).find(\n isPayloadOfSchemaType<AddressPreviousHashPayload>(AddressPreviousHashSchema),\n ),\n () => 'Result did not include correct payload',\n )\n return result\n }\n\n childAddressByName(name: ModuleName): XyoAddress | undefined {\n const nodeManifests = this._state?.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n const childPairs = nodeManifests?.flatMap(nodeManifest => Object.entries(nodeManifest.status?.children ?? {}) as [XyoAddress, ModuleName | null][])\n return asAddress(childPairs?.find(([_, childName]) => childName === name)?.[0])\n }\n\n async childAddressMap(): Promise<Record<XyoAddress, ModuleName | null>> {\n let nodeManifests: NodeManifestPayload[] | undefined\n = isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(this.params.manifest) ? [this.params.manifest] : undefined\n const result: Record<XyoAddress, ModuleName | null> = {}\n if (nodeManifests === undefined) {\n const state = await this.state()\n nodeManifests = state.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n }\n for (const manifest of nodeManifests ?? []) {\n const children = manifest.modules?.public ?? []\n for (const child of children) {\n if (typeof child === 'object') {\n const address = child.status?.address\n if (isAddress(address)) {\n result[address] = child.config.name ?? null\n }\n }\n }\n }\n return result\n }\n\n override async createHandler(): Promise<void> {\n await super.createHandler()\n let manifest: ModuleManifestPayload | NodeManifestPayload | undefined = this.params.manifest\n if (!manifest) {\n const state = await this.state()\n const manifestPayload = state.find(\n payload => isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(payload)\n || isPayloadOfSchemaType<ModuleManifestPayload>(ModuleManifestPayloadSchema)(payload),\n )\n manifest = assertEx(manifestPayload, () => \"Can't find manifest payload\")\n }\n this.setConfig({ ...manifest.config })\n this.downResolver.addResolver(\n new ModuleProxyResolver({\n childAddressMap: await this.childAddressMap(),\n host: this.params.host,\n mod: this,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n }),\n )\n }\n\n override async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as ModuleManifestPayload\n }\n\n override async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload))\n }\n\n override async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as AddressPreviousHashPayload).previousHash\n }\n\n override async publicChildren(): Promise<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]> {\n this._publicChildren = this._publicChildren ?? (await super.publicChildren())\n return this._publicChildren\n }\n\n override async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n this._checkDead()\n return await this.busy(async () => {\n try {\n await this.checkSpam(query)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n this.params.onQuerySendStarted?.({ payloads, query })\n const result = await this.proxyQueryHandler<T>(query, payloads)\n this.params.onQuerySendFinished?.({\n payloads, query, result, status: 'success',\n })\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n forget(this.emit('moduleQueried', {\n mod: this, payloads, query, result,\n }))\n return result\n } catch (ex) {\n this.params.onQuerySendFinished?.({\n payloads, query, status: 'failure',\n })\n const error = ex as Error\n this._lastError = error\n // this.status = 'dead'\n const deadError = new DeadModuleError(this.address, error)\n const errorPayload: ModuleError = {\n message: deadError.message,\n name: deadError.name,\n schema: ModuleErrorSchema,\n }\n const sourceQuery = assertEx(QueryBoundWitnessWrapper.unwrap(query), () => 'Invalid query')\n return await this.bindQueryResult(sourceQuery, [], undefined, [errorPayload])\n }\n })\n }\n\n override queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<ModuleQueryHandlerResult> {\n throw new Error('queryHandler should never be called')\n }\n\n override async queryable<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<boolean> {\n return true\n }\n\n override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n return (await this.params.archiving?.resolveArchivists()) ?? []\n }\n\n setConfig(config: TWrappedModule['params']['config']): void {\n this._config = config\n }\n\n setState(state: Payload[]): void {\n this._state = state\n }\n\n override async state(): Promise<Payload[]> {\n if (this._state === undefined) {\n // temporarily add ModuleStateQuerySchema to the schema list so we can wrap it and get the real query list\n const stateQueryPayload: QueryPayload = { query: ModuleStateQuerySchema, schema: QuerySchema }\n const manifestQueryPayload: QueryPayload = { query: ModuleManifestQuerySchema, schema: QuerySchema }\n this._state = [stateQueryPayload, manifestQueryPayload]\n const wrapper = ModuleWrapper.wrap(this, await Account.random())\n this._state = await wrapper.state()\n }\n return this._state\n }\n\n protected filterErrors(result: ModuleQueryResult): ModuleError[] {\n const wrapper = BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n protected override async startHandler(): Promise<void> {\n return await super.startHandler()\n }\n\n // this checks and warns if we are getting spammed by the same query\n private async checkSpam(query: QueryBoundWitness) {\n const hash = await PayloadBuilder.hash(query)\n const previousCount = this._spamTrap.get(hash) ?? 0\n if (previousCount > 0) {\n this.logger?.warn(`Spam trap triggered for query: ${hash} from ${toSafeJsonString(query.addresses)}`)\n }\n this._spamTrap.set(hash, previousCount + 1)\n }\n\n abstract proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(_query: T, _payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n", "import type { Promisable } from '@ariestools/sdk'\nimport { assertEx, exists } from '@ariestools/sdk'\nimport type {\n ModuleManifestPayload, XyoAddress, XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport { Account } from '@xyo-network/sdk-protocol'\n\nimport type {\n AnyConfigSchema,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleName,\n ModuleResolver,\n ModuleResolverInstance,\n ObjectFilterOptions,\n QueryableModuleParams,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport { wrapModuleWithType } from '../wrapModuleWithType.ts'\n\nexport interface ModuleProxyResolverOptions {\n childAddressMap: Record<XyoAddress, ModuleName | null>\n childManifests?: Record<XyoAddress, ModuleManifestPayload>\n childStates?: Record<XyoAddress, ModuleManifestPayload>\n host: ModuleResolver\n mod: ModuleInstance\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nexport class ModuleProxyResolver<T extends ModuleProxyResolverOptions = ModuleProxyResolverOptions> implements ModuleResolverInstance {\n private downResolver: CompositeModuleResolver\n private options: T\n\n constructor(options: T) {\n this.options = options\n this.downResolver = new CompositeModuleResolver({ moduleIdentifierTransformers: options.moduleIdentifierTransformers, root: this.root })\n }\n\n get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n get root(): ModuleInstance {\n return this.options.mod\n }\n\n protected get childAddressMap(): Record<(Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress, string | null> {\n return this.options.childAddressMap\n }\n\n protected get host(): ModuleResolver<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>> {\n return this.options.host\n }\n\n protected get mod(): ModuleInstance {\n return this.options.mod\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n childManifest(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childManifests?.[address]\n }\n\n childState(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childStates?.[address]\n }\n\n removeResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\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 // eslint-disable-next-line complexity\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n // console.log(`childAddressMap: ${toSafeJsonString(this.childAddressMap, 10)}`)\n const direction = options?.direction ?? 'all'\n if (id === '*') {\n // get all the child addresses. if they have been resolved before, they should be in downResolver\n const childAddresses = Object.keys(this.childAddressMap)\n const resolvedChildren = await Promise.all(childAddresses.map<Promise<T | undefined>>(address => this.resolve<T>(address, options)))\n return resolvedChildren.filter(exists)\n } else if (typeof id === 'string') {\n const idParts = id.split(':')\n const firstPart: ModuleIdentifier = assertEx(idParts.shift(), () => 'Invalid module identifier at first position')\n const firstPartAddress = await this.resolveIdentifier(firstPart)\n if (firstPartAddress) {\n const remainingParts = idParts.length > 0 ? idParts.join(':') : undefined\n if (direction === 'down' || direction === 'all') {\n const downResolverModule = await this.downResolver.resolve<T>(firstPartAddress)\n if (downResolverModule) {\n return remainingParts ? downResolverModule.resolve(remainingParts, options) : downResolverModule\n }\n\n console.log(`ModuleProxyResolver: ${firstPartAddress} | ${this.root.address}`)\n if (firstPartAddress === this.root.address) {\n const wrapped = wrapModuleWithType(this.root, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n\n // if it is a known child, create a proxy\n const addressToProxy\n = Object.keys(this.childAddressMap).includes(firstPartAddress)\n ? (firstPartAddress)\n : (Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)?.[0] as XyoAddress | undefined)\n if (addressToProxy) {\n const proxy = await this.host.resolve(addressToProxy, { ...options, direction: 'down' })\n if (proxy) {\n const wrapped = wrapModuleWithType(proxy, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n return\n }\n }\n }\n return\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<XyoAddress | undefined> {\n // check if any of the modules have the id as an address\n if (this.childAddressMap[id as XyoAddress]) {\n return id as XyoAddress\n }\n\n if (this.root.address === id) {\n return this.root.address\n }\n\n if (this.root.modName === id) {\n return this.root.address\n }\n\n // check if id is a name of one of modules in the resolver\n const addressFromName = Object.entries(this.childAddressMap).find(([, name]) => name === id)?.[0] as XyoAddress | undefined\n if (addressFromName) {\n return addressFromName\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 []\n }\n}\n", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport { isArchivistModule } from '#archivist-model'\nimport { ArchivistWrapper } from '#archivist-wrapper'\nimport { isDivinerModule } from '#diviner-model'\nimport { DivinerWrapper } from '#diviner-wrapper'\nimport type { QueryableModule } from '#module-model'\nimport type { ModuleWrapper } from '#module-wrapper'\nimport { isNodeModule } from '#node-model'\nimport { NodeWrapper } from '#node-wrapper'\nimport { isSentinelModule } from '#sentinel-model'\nimport { SentinelWrapper } from '#sentinel-wrapper'\nimport { isWitnessModule } from '#witness-model'\nimport { WitnessWrapper } from '#witness-wrapper'\n\nexport const wrapModuleWithType = (mod: QueryableModule, account: AccountInstance): ModuleWrapper => {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, account)\n }\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, account)\n }\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, account)\n }\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, account)\n }\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, account)\n }\n throw new Error('Failed to wrap')\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["assertEx", "exists", "forget", "Account", "isPayloadOfSchemaType", "QueryBoundWitnessWrapper", "AbstractModuleInstance", "assertEx", "exists", "ObjectResolverPriority", "CompositeModuleResolver", "CompositeModuleResolver", "ObjectResolverPriority", "exists", "assertEx", "AbstractModuleInstance", "assertEx", "isPayloadOfSchemaType", "exists", "Account", "forget", "QueryBoundWitnessWrapper"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/modules/module-resolver/AbstractModuleResolver.ts", "../../src/modules/module-resolver/CompositeModuleResolver.ts", "../../src/modules/module-resolver/ResolveHelper/resolveAddressToInstance.ts", "../../src/modules/module-resolver/ResolveHelper/resolveAll.ts", "../../src/modules/module-resolver/ResolveHelper/ResolveHelper.ts", "../../src/modules/module-resolver/ResolveHelper/ResolveHelperStatic.ts", "../../src/modules/module-resolver/ResolveHelper/resolvePathToInstance.ts", "../../src/modules/module-resolver/ResolveHelper/resolveLocalNameToInstance.ts", "../../src/modules/module-resolver/ResolveHelper/resolveLocalNameToAddress.ts", "../../src/modules/module-resolver/ResolveHelper/transformModuleIdentifier.ts", "../../src/modules/module-resolver/ResolveHelper/resolvePathToAddress.ts", "../../src/modules/module-resolver/ResolveHelper/traceModuleIdentifier.ts", "../../src/modules/module-resolver/SimpleModuleResolver.ts", "../../src/modules/module-resolver/NameRegistrarTransformer.ts", "../../src/modules/module-resolver/ResolverEventEmitter.ts"],
|
|
4
|
-
"sourcesContent": ["import type { BaseParams, Promisable } from '@ariestools/sdk'\nimport {\n assertEx, Base, toSafeJsonString,\n} from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '#module-model'\nimport {\n asModuleInstance,\n ObjectResolverPriority,\n} from '#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(): ModuleInstance {\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, @typescript-eslint/no-unsafe-member-access\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, @typescript-eslint/no-unsafe-member-access\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<XyoAddress | undefined>\n}\n", "/* eslint-disable max-statements */\nimport type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx,\n exists, isDefined, isString,\n} from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type {\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '#module-model'\nimport {\n duplicateModules,\n ObjectResolverPriority,\n} from '#module-model'\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(':')\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(): boolean {\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: XyoAddress[] | XyoAddress): 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<XyoAddress | 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<XyoAddress | 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: XyoAddress) {\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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleInstance } from '#module-model'\n\nimport type { ModuleResolveDirection } from './model.ts'\n\nexport const resolveAddressToInstanceDown = async (\n root: ModuleInstance,\n address: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleInstance } from '#module-model'\nimport { duplicateModules } from '#module-model'\n\nexport const resolveAllUp = async (root: ModuleInstance, maxDepth = 10, exclude: XyoAddress[] = []): 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: XyoAddress[] = [],\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: XyoAddress[] = []): 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 { Logger } from '@ariestools/sdk'\nimport {\n assertEx,\n exists,\n IdLogger,\n isAddress,\n isDefined, isString, isTruthy,\n} from '@ariestools/sdk'\nimport type { XyoAddress, XyoQuantAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleResolver,\n} from '#module-model'\nimport { asModuleInstance, duplicateModules } from '#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: XyoAddress\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!).resolve<T>('*', downLocalOptions) : []),\n ...(up ? await (upResolver!).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 result ??= await this.resolveModuleIdentifier<T>(resolverInstance, resolvedId)\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): Promise<((Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress)[]> {\n return traceModuleIdentifier(resolver, path)\n }\n\n static transformModuleIdentifier(identifier: ModuleIdentifier, transformers: ModuleIdentifierTransformer[] = ResolveHelper.transformers): Promise<ModuleIdentifier | undefined> {\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: Logger | undefined = this.defaultLogger,\n ): void {\n const log = logger ? new IdLogger(logger, () => `validateRequiredResolve [${id}][${JSON.stringify(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 '@ariestools/sdk'\n\nimport type { ModuleIdentifierTransformer } from '#module-model'\n\nexport class ResolveHelperStatic {\n static readonly defaultLogger?: Logger\n static transformers: ModuleIdentifierTransformer[] = []\n}\n", "import { asAddress, assertEx } from '@ariestools/sdk'\n\nimport type { ModuleIdentifierTransformer, ModuleInstance } from '#module-model'\nimport { MODULE_PATH_SEPARATOR } from '#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,\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 '#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,\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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleInstance, ModuleName } from '#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<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstanceUp(root, modName))?.address\n}\n\nexport const resolveLocalNameToAddressDown = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate?: boolean,\n): Promise<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstanceDown(root, modName, includePrivate))?.address\n}\n\nexport const resolveLocalNameToAddressAll = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate?: boolean,\n): Promise<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstanceAll(root, modName, includePrivate))?.address\n}\n\nexport const resolveLocalNameToAddress = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate?: boolean,\n direction: ModuleResolveDirection = 'all',\n): Promise<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstance(root, modName, includePrivate, direction))?.address\n}\n", "import type { ModuleIdentifier, ModuleIdentifierTransformer } from '#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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleIdentifierTransformer, ModuleInstance } from '#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,\n transformers: ModuleIdentifierTransformer[] = ResolveHelperStatic.transformers,\n): Promise<XyoAddress | undefined> => {\n return (await resolvePathToInstance(root, path, includePrivate, transformers))?.address\n}\n", "import { assertEx } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleIdentifier, ModuleResolver } from '#module-model'\nimport { asModuleInstance } from '#module-model'\n\nexport const traceModuleIdentifier = async (resolver: ModuleResolver, path: ModuleIdentifier): Promise<XyoAddress[]> => {\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 { Promisable } from '@ariestools/sdk'\nimport {\n assertEx, exists, isAddress,\n} from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleName,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '#module-model'\nimport { isModuleName } from '#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<XyoAddress, ModuleInstance> = {}\n private nameToModule: Record<ModuleName, ModuleInstance> = {}\n\n constructor(params: SimpleModuleResolverParams) {\n super(params)\n }\n\n get allowNameResolution(): boolean {\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 new Error('Adding resolvers not supported')\n }\n\n remove(address: XyoAddress | XyoAddress[]): 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 new Error('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<XyoAddress | 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: XyoAddress) {\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<XyoAddress, ModuleInstance>, address: XyoAddress[]): 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\n query?.reduce((supported, queryList) => {\n return (\n\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 { isDefined, isUndefined } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type { DivinerInstance } from '#diviner-model'\nimport { PayloadDivinerQuerySchema } from '#diviner-payload-model'\nimport type { ModuleIdentifier, ModuleIdentifierTransformer } from '#module-model'\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: XyoAddress[] }).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 '#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 // eslint-disable-next-line @typescript-eslint/unbound-method\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 // eslint-disable-next-line @typescript-eslint/await-thenable\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"],
|
|
5
|
-
"mappings": ";AACA;AAAA,EACE;AAAA,EAAU;AAAA,EAAM;AAAA,OACX;AAUP;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,OAAuB;AACzB,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,aAAAC;AAAA,EAAW,YAAAC;AAAA,OACd;AAEP,SAAS,gBAAgB;AAazB;AAAA,EACE,oBAAAC;AAAA,EACA,0BAAAC;AAAA,OACK;;;ACjBA,IAAM,+BAA+B,OAC1C,MACA,SACA,gBACA,SAAuB,CAAC,MACgB;AACxC,MAAI,KAAK,YAAY,SAAS;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,KAAK,eAAe,MAAM,CAAC,CAAC,cAAc;AACxD,QAAM,mBAAmB,iBAAiB,MAAM,KAAK,kBAAkB,IAAI,CAAC,MAAM,CAAC;AACnF,QAAM,iBAAkB,MAAM,KAAK,iBAAiB,KAAM,CAAC;AAC3D,QAAM,WAAW,CAAC,GAAG,iBAAiB,GAAG,cAAc;AACvD,aAAW,SAAS,UAAU;AAC5B,UAAM,QAAQ,MAAM,6BAA6B,OAAO,SAAS,gBAAgB,MAAM;AACvF,QAAI,OAAO;AACT,aAAO,IAAI,SAAS,IAAI,QAAQ,KAAK,CAAC;AACtC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,IAAI,SAAS,IAAI;AAC1B;AAEO,IAAM,mCAAmC,OAC9C,MACA,SACA,gBACA,SAAuB,CAAC,MACgB;AACxC,QAAM,WAAY,MAAM,KAAK,WAAW,KAAM,CAAC;AAC/C,aAAW,WAAW,UAAU;AAC9B,UAAM,QAAQ,MAAM,6BAA6B,SAAS,SAAS,gBAAgB,MAAM;AACzF,QAAI,OAAO;AACT,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,6BAA6B,OACxC,MACA,SACA,gBACA,SAAuB,CAAC,MACgB;AACxC,QAAM,QAAQ,KAAK,eAAe,MAAM,kBAAkB,IAAI;AAC9D,QAAM,UAAW,MAAM,KAAK,UAAU,KAAM,CAAC;AAC7C,aAAW,UAAU,SAAS;AAC5B,UAAM,QAAQ,MAAM,yBAAyB,QAAQ,SAAS,gBAAgB,MAAM;AACpF,QAAI,OAAO;AACT,aAAO,IAAI,SAAS,IAAI,QAAQ,KAAK,CAAC;AACtC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,IAAI,SAAS,IAAI;AAC1B;AAEO,IAAM,8BAA8B,OACzC,MACA,SACA,gBACA,SAAuB,CAAC,MACgB;AACxC,QAAM,QAAQ,KAAK,eAAe,OAAO,CAAC,CAAC,cAAc;AACzD,QAAM,SACD,MAAM,6BAA6B,MAAM,SAAS,kBAAkB,OAAO,MAAM,KAC9E,MAAM,2BAA2B,MAAM,SAAS,kBAAkB,MAAM,MAAM;AACtF,SAAO,IAAI,SAAS,SAAS,IAAI,QAAQ,MAAM,IAAI,IAAI;AACvD,SAAO;AACT;AAEO,IAAM,2BAA2B,OACtC,MACA,SACA,gBACA,SAAuB,CAAC,GACxB,YAAoC,UACI;AACxC,UAAQ,WAAW;AAAA,IACjB,KAAK,OAAO;AACV,aAAO,MAAM,4BAA4B,MAAM,SAAS,gBAAgB,MAAM;AAAA,IAChF;AAAA,IACA,KAAK,MAAM;AACT,aAAO,MAAM,2BAA2B,MAAM,SAAS,kBAAkB,MAAM,MAAM;AAAA,IACvF;AAAA,IACA,KAAK,QAAQ;AACX,aAAO,MAAM,6BAA6B,MAAM,SAAS,kBAAkB,OAAO,MAAM;AAAA,IAC1F;AAAA,EACF;AACF;;;AC3FA,SAAS,wBAAwB;AAE1B,IAAM,eAAe,OAAO,MAAsB,WAAW,IAAI,UAAwB,CAAC,MAAiC;AAChI,MAAI,aAAa,GAAG;AAClB,WAAO,CAAC,IAAI,EAAE,OAAO,SAAO,CAAC,QAAQ,SAAS,IAAI,OAAO,CAAC;AAAA,EAC5D;AACA,QAAM,WAAW,MAAM,KAAK,QAAQ,GAAG,OAAO,SAAO,CAAC,QAAQ,SAAS,IAAI,OAAO,CAAC;AACnF,UACE,WAAW,IACP;AAAA,IACE,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,OAAM,QAAO,MAAM,aAAa,KAAK,WAAW,GAAG,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AAAA,IACzH,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,OAAM,QAAO,MAAM,eAAe,KAAK,WAAW,GAAG,CAAC,GAAG,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK;AAAA,IACjI,GAAG;AAAA,IACH;AAAA,EACF,IACA,CAAC,GAAG,SAAS,IAAI,GACpB,OAAO,SAAO,CAAC,QAAQ,SAAS,IAAI,OAAO,CAAC,EAC5C,OAAO,gBAAgB;AAC5B;AAEO,IAAM,iBAAiB,OAC5B,MACA,WAAW,IACX,UAAwB,CAAC,GACzB,iBAAiB,UACa;AAC9B,MAAI,aAAa,GAAG;AAClB,WAAO,CAAC,IAAI;AAAA,EACd;AACA,QAAM,YAAY,MAAM,KAAK,eAAe,GAAG,OAAO,SAAO,CAAC,QAAQ,SAAS,IAAI,OAAO,CAAC;AAC3F,QAAM,kBAAkB,kBAAkB,MAAM,KAAK,gBAAgB,GAAG,OAAO,SAAO,CAAC,QAAQ,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;AACzH,UACE,WAAW,IACP;AAAA,IACE,GAAG;AAAA,IACH,IAAI,MAAM,QAAQ,IAAI,SAAS,IAAI,WAAS,eAAe,OAAO,WAAW,GAAG,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AAAA,IACpH,IAAI,MAAM,QAAQ,IAAI,gBAAgB,IAAI,WAAS,eAAe,OAAO,WAAW,GAAG,CAAC,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AAAA,IAC3H;AAAA,EACF,IACA,CAAC,GAAG,UAAU,IAAI,GACrB,OAAO,SAAO,CAAC,QAAQ,SAAS,IAAI,OAAO,CAAC,EAC5C,OAAO,gBAAgB;AAC5B;AAEO,IAAM,aAAa,OAAO,MAAsB,WAAW,IAAI,UAAwB,CAAC,MAAiC;AAC9H,MAAI,aAAa,GAAG;AAClB,WAAO,CAAC,IAAI;AAAA,EACd;AACA,SAAO,CAAC,GAAI,MAAM,aAAa,MAAM,UAAU,OAAO,GAAI,GAAI,MAAM,eAAe,MAAM,UAAU,OAAO,CAAE,EAAE,OAAO,gBAAgB;AACvI;;;ACjDA;AAAA,EACE,YAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAW;AAAA,EAAU;AAAA,OAChB;AAUP,SAAS,oBAAAC,mBAAkB,oBAAAC,yBAAwB;;;ACf5C,IAAM,sBAAN,MAA0B;AAAA,EAC/B,OAAgB;AAAA,EAChB,OAAO,eAA8C,CAAC;AACxD;;;ACPA,SAAS,WAAW,YAAAC,iBAAgB;AAGpC,SAAS,6BAA6B;;;ACC/B,IAAM,+BAA+B,OAAO,MAAsB,YAA6D;AACpI,QAAM,UAAW,MAAM,KAAK,UAAU,KAAM,CAAC;AAC7C,SAAO,QAAQ,KAAK,YAAU,OAAO,OAAO,SAAS,OAAO;AAC9D;AAGO,IAAM,iCAAiC,OAC5C,MACA,SACA,mBACwC;AACxC,QAAM,mBAAmB,iBAAiB,MAAM,KAAK,kBAAkB,IAAI,CAAC,MAAM,CAAC;AACnF,QAAM,iBAAkB,MAAM,KAAK,iBAAiB,KAAM,CAAC;AAC3D,QAAM,WAAW,CAAC,GAAG,iBAAiB,GAAG,cAAc;AACvD,SAAO,SAAS,KAAK,WAAS,MAAM,OAAO,SAAS,OAAO;AAC7D;AAEO,IAAM,gCAAgC,OAC3C,MACA,SACA,iBAAiB,UACuB;AACxC,SAAQ,MAAM,+BAA+B,MAAM,SAAS,cAAc,KAAO,MAAM,6BAA6B,MAAM,OAAO;AACnI;AAEO,IAAM,6BAA6B,OACxC,MACA,SACA,iBAAiB,OACjB,YAAoC,UACI;AACxC,UAAQ,WAAW;AAAA,IACjB,KAAK,OAAO;AACV,aAAO,MAAM,8BAA8B,MAAM,SAAS,cAAc;AAAA,IAC1E;AAAA,IACA,KAAK,MAAM;AACT,aAAO,MAAM,6BAA6B,MAAM,OAAO;AAAA,IACzD;AAAA,IACA,KAAK,QAAQ;AACX,aAAO,MAAM,+BAA+B,MAAM,SAAS,cAAc;AAAA,IAC3E;AAAA,EACF;AACF;;;AClCO,IAAM,8BAA8B,OAAO,MAAsB,YAAyD;AAC/H,UAAQ,MAAM,6BAA6B,MAAM,OAAO,IAAI;AAC9D;AAEO,IAAM,gCAAgC,OAC3C,MACA,SACA,mBACoC;AACpC,UAAQ,MAAM,+BAA+B,MAAM,SAAS,cAAc,IAAI;AAChF;AAEO,IAAM,+BAA+B,OAC1C,MACA,SACA,mBACoC;AACpC,UAAQ,MAAM,8BAA8B,MAAM,SAAS,cAAc,IAAI;AAC/E;AAEO,IAAM,4BAA4B,OACvC,MACA,SACA,gBACA,YAAoC,UACA;AACpC,UAAQ,MAAM,2BAA2B,MAAM,SAAS,gBAAgB,SAAS,IAAI;AACvF;;;ACrCO,IAAM,4BAA4B,OACvC,IACA,iBAC0C;AAC1C,MAAI,SAAuC;AAC3C,aAAW,eAAe,cAAc;AACtC,aAAS,MAAM,YAAY,UAAU,EAAE;AAAA,EACzC;AACA,SAAO;AACT;;;AHDO,IAAM,wBAAwB,OACnC,MACA,MACA,gBACA,eAA8C,oBAAoB,iBAC1B;AACxC,QAAM,QAAQ,KAAK,MAAM,qBAAqB;AAC9C,QAAM,QAAQ,MAAM;AAAA,IAClBC,UAAS,MAAM,MAAM,GAAG,MAAM,0BAA0B,IAAI,GAAG;AAAA,IAC/D;AAAA,EACF;AAEA,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,UAAU,KAAK,KAAM,MAAM,0BAA0B,MAAM,OAAO,cAAc;AAErG,MAAI,cAAc;AAChB,UAAM,cAAc,MAAM,yBAAyB,MAAM,cAAc,cAAc;AACrF,QAAI,eAAe,MAAM,SAAS,GAAG;AACnC,aAAO,sBAAsB,aAAa,MAAM,KAAK,qBAAqB,CAAC;AAAA,IAC7E;AACA,WAAO;AAAA,EACT;AACF;;;AI5BO,IAAM,uBAAuB,OAClC,MACA,MACA,gBACA,eAA8C,oBAAoB,iBAC9B;AACpC,UAAQ,MAAM,sBAAsB,MAAM,MAAM,gBAAgB,YAAY,IAAI;AAClF;;;ACdA,SAAS,YAAAC,iBAAgB;AAIzB,SAAS,oBAAAC,yBAAwB;AAE1B,IAAM,wBAAwB,OAAO,UAA0B,SAAkD;AACtH,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,QAAM,QAAQ,MAAM,MAAM;AAC1B,QAAM,cAAcA;AAAA,IAClBD,UAAS,MAAM,SAAS,QAAQ,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,sBAAsB,KAAK,GAAG;AAAA,IAC7F,MAAM,qCAAqC,KAAK;AAAA,EAClD;AACA,MAAI,aAAa;AACf,WAAO,MAAM,SAAS,IAAI,CAAC,YAAY,SAAS,GAAI,MAAM,sBAAsB,aAAa,MAAM,KAAK,GAAG,CAAC,CAAE,IAAI,CAAC,YAAY,OAAO;AAAA,EACxI;AACA,SAAO,CAAC;AACV;;;AP4DO,IAAM,gBAAN,MAAM,uBAAsB,oBAAoB;AAAA,EAWrD,aAAa,QACX,QACA,KAAuB,KACvB;AAAA,IACE,WAAW;AAAA,IAAG,WAAW;AAAA,IAAO,GAAG;AAAA,EACrC,IAA4B,CAAC,GACC;AAC9B,UAAM;AAAA,MACJ;AAAA,MAAc;AAAA,MAAK,SAAS,KAAK;AAAA,MAAe,OAAO;AAAA,MAAO;AAAA,MAAY;AAAA,MAAc;AAAA,IAC1F,IAAI;AACJ,UAAM,MAAM,SAAS,IAAI,SAAS,QAAQ,MAAM,kBAAkB,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI;AAEtF,UAAM,mBAA2C;AAAA,MAC/C,GAAG;AAAA,MAAS,WAAW;AAAA,MAAQ;AAAA,MAAU,UAAU;AAAA,IACrD;AACA,UAAM,iBAAyC,EAAE,GAAG,kBAAkB,WAAW,KAAK;AAEtF,UAAM,eAAuC;AAAA,MAC3C,GAAG;AAAA,MAAS,UAAU,WAAW;AAAA,MAAG,UAAU;AAAA,IAChD;AAEA,UAAM,YAAY,SAAS,aAAa;AACxC,UAAM,KAAK,cAAc,QAAQ,cAAc;AAC/C,UAAM,OAAO,cAAc,UAAU,cAAc;AACnD,QAAI;AACJ,SAAK,MAAM,SAAS,IAAI,QAAQ;AAChC,QAAI,OAAO,KAAK;AACd,UAAI,MAAM;AACR,aAAK,KAAK,iBAAiB,EAAE;AAC7B,eAAO,CAAC;AAAA,MACV;AACA,YAAM,UAAU;AAAA,QACd,GAAI,OAAO,MAAO,aAAe,QAAW,KAAK,gBAAgB,IAAI,CAAC;AAAA,QACtE,GAAI,KAAK,MAAO,WAAa,QAAW,KAAK,cAAc,IAAI,CAAC;AAAA,MAClE,EAAE,OAAOE,iBAAgB;AAEzB,UAAI,QAAQ,SAAS,GAAG;AACtB,aAAK,MAAM,mBAAmB,QAAQ,MAAM;AAAA,MAC9C;AAEA,UAAI,aAAa,GAAG;AAClB,eAAO;AAAA,MACT;AACA,YAAM,gBAAgB,MAAM,QAAQ,IAAI,QAAQ,IAAI,OAAMC,SAAO,MAAMA,KAAI,QAAW,KAAK,YAAY,CAAC,CAAC,GAAG,KAAK,EAAE,OAAOD,iBAAgB;AAC1I,aAAO,CAAC,GAAG,SAAS,GAAG,cAAc,GAAQ,EAAE,OAAOA,iBAAgB;AAAA,IACxE,OAAO;AACL,cAAQ,OAAO,IAAI;AAAA,QACjB,KAAK,UAAU;AACb,cAAI,MAAM;AACR,mBAAO;AAAA,UACT;AAEA,gBAAM,aAAaE,UAAU,MAAM,qBAAqB,KAAK,IAAI,OAAO,YAAY,KAAM,IAAI,MAAM,oBAAoB;AAExH,gBAAM,YAAY;AAAA,YAChB,CAAC,cAAc,gBAAgB;AAAA,YAC/B,CAAC,KAAK,aAAa,QAAW,cAAc;AAAA,YAC5C,CAAC,KAAK,kBAAkB,QAAW,cAAc;AAAA,UACnD,EAAE,OAAO,CAAC,CAAC,QAAQ,MAAM,OAAO,QAAQ,CAAC;AAEzC,qBAAW,YAAY,WAAW;AAChC,kBAAM,CAAC,gBAAgB,IAAI;AAC3B,uBAAW,MAAM,KAAK,wBAA2B,kBAAkB,UAAU;AAAA,UAC/E;AAEA;AAAA,QACF;AAAA,QACA,SAAS;AACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,SAAK,wBAAwB,UAAU,QAAQ,IAAI,MAAM;AACzD,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,aAAa,wBACX,UACA,MACA,UACwB;AACxB,UAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,UAAM,QAAQ,MAAM,MAAM;AAC1B,UAAM,iBAAiB,UAAU,KAAK;AACtC,UAAM,iBACD,MAAM,SAAS,QAAQ,OAAO,EAAE,UAAU,iBAAiB,KAAK,EAAE,CAAC,MAChE,SAAS,KAAK,IAAI,MAAM,SAAS,eAAe,OAAO,EAAE,UAAU,iBAAiB,KAAK,EAAE,CAAC,IAAI;AACxG,UAAM,cAAc,WAAWA,UAAS,gBAAgB,MAAM,sBAAsB,KAAK,MAAM,cAAc,GAAG,IAAI;AACpH,UAAM,cAAcC,kBAAiB,aAAa,MAAM,qCAAqC,KAAK,GAAG;AACrG,WAAO,UAAU,WAAW,IAAK,MAAM,SAAS,IAAI,MAAM,KAAK,wBAA2B,aAAa,MAAM,KAAK,GAAG,CAAC,IAAI,cAAoB;AAAA,EAChJ;AAAA;AAAA,EAGA,OAAO,sBAAsB,UAA0B,MAI9B;AACvB,WAAO,sBAAsB,UAAU,IAAI;AAAA,EAC7C;AAAA,EAEA,OAAO,0BAA0B,YAA8B,eAA8C,eAAc,cAAqD;AAC9K,WAAO,0BAA0B,YAAY,YAAY;AAAA,EAC3D;AAAA,EAEA,OAAO,wBACL,UACA,QACA,IACA,SAA6B,KAAK,eAC5B;AACN,UAAM,MAAM,SAAS,IAAI,SAAS,QAAQ,MAAM,4BAA4B,EAAE,KAAK,KAAK,UAAU,MAAM,CAAC,GAAG,IAAI;AAChH,QAAI,SAAS,QAAQ,MAAM,WAAW,UAAc,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,IAAK;AAChG,cAAQ,UAAU;AAAA,QAChB,KAAK,QAAQ;AACX,eAAK,KAAK,kBAAkB,EAAE;AAC9B;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV,eAAK,IAAI,kBAAkB,EAAE;AAC7B;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,IAAI,MAAM,mBAAmB,EAAE,GAAG;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AQxNA;AAAA,EACE,YAAAC;AAAA,EAAU,UAAAC;AAAA,EAAQ,aAAAC;AAAA,OACb;AAYP,SAAS,oBAAoB;AAStB,IAAM,uBAAN,cAAmC,uBAA+E;AAAA,EAC/G,UAA8C,CAAC;AAAA,EAC/C,eAAmD,CAAC;AAAA,EAE5D,YAAY,QAAoC;AAC9C,UAAM,MAAM;AAAA,EACd;AAAA,EAEA,IAAI,sBAA+B;AACjC,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,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAAA,EAEA,OAAO,SAA0C;AAC/C,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,IAAI,MAAM,kCAAkC;AAAA,EACpD;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,UAAUC,WAAU,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,UAAoE;AAE1G,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,SAAqB;AAC9C,IAAAA,UAASD,WAAU,OAAO,GAAG,MAAM,iBAAiB;AACpD,UAAM,MAAMC,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,SAA6C,SAA4B;AAC3I,WACE,QAAQ,IAAI,CAACC,aAAY;AACvB,aAAO,QAAQA,QAAO;AAAA,IACxB,CAAC,EACD,OAAOC,OAAM;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,OAAOD,OAAM;AAAA,EACjB;AAAA,EAEQ,eAA0D,SAA2B,OAAwB;AACnH,WACE,QAAQ,OAAO,SAEb,OAAO,OAAO,CAAC,WAAW,cAAc;AACtC,aAEE,UAAU,OAAO,CAACE,YAAWC,WAAU;AACrC,cAAM,YAAY,IAAI,QAAQ,SAASA,MAAK;AAC5C,eAAOD,cAAa;AAAA,MACtB,GAAG,IAAI,KAAK;AAAA,IAEhB,GAAG,KAAK,CAAC,EACX,OAAOF,OAAM;AAAA,EACjB;AACF;;;AX1IA,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,sBAA+B;AACjC,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,WAA4C;AACjD,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,gBAAMI,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,MAAMC,kBAAiB,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,UAAIC,UAAS,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,iBACEC,WAAUD,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,oBAAMJ,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,MAAMC,kBAAiB,GAAG,GAAG,CAAC,CAAC;AACpG,cAAI,QAAQ;AACV,iBAAK,OAAO,IAAI,YAAY,MAAM;AAClC,mBAAO;AAAA,UACT;AAEA,iBAAO,aAAaI,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,UAAiE;AAC7G,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,OAAOL,OAAM;AACf,UAAM,SAAS,QAAQ,MAAM;AAC7B,QAAI,QAAQ,SAAS,GAAG;AACtB,iBAAW,aAAa,SAAS;AAC/B,QAAAM,UAAS,cAAc,QAAQ,MAAM,4BAA4B,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG;AAAA,MACjG;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEU,yBAAyB,KAAuB,UAAoE;AAC5H,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,SAAqB;AAC9C,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;;;AYpQA,SAAS,aAAAC,YAAW,mBAAmB;AAEvC,SAAS,YAAAC,iBAAgB;AAGzB,SAAS,iCAAiC;AAGnC,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,cAAuD,SAAS,MAAM;AACvF,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;;;ACpCA,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;AAGA,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;AAG7E,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;",
|
|
4
|
+
"sourcesContent": ["import type { BaseParams, Promisable } from '@ariestools/sdk'\nimport {\n assertEx, Base, toSafeJsonString,\n} from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '#module-model'\nimport {\n asModuleInstance,\n ObjectResolverPriority,\n} from '#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(): ModuleInstance {\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, @typescript-eslint/no-unsafe-member-access\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, @typescript-eslint/no-unsafe-member-access\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 []\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<XyoAddress | undefined>\n}\n", "/* eslint-disable max-statements */\nimport type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx,\n exists, isDefined, isString,\n} from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type {\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '#module-model'\nimport {\n duplicateModules,\n ObjectResolverPriority,\n} from '#module-model'\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(':')\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(): boolean {\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: XyoAddress[] | XyoAddress): 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<XyoAddress | 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<XyoAddress | 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: XyoAddress) {\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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleInstance } from '#module-model'\n\nimport type { ModuleResolveDirection } from './model.ts'\n\nexport const resolveAddressToInstanceDown = async (\n root: ModuleInstance,\n address: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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: XyoAddress,\n includePrivate?: boolean,\n ignore: XyoAddress[] = [],\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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleInstance } from '#module-model'\nimport { duplicateModules } from '#module-model'\n\nexport const resolveAllUp = async (root: ModuleInstance, maxDepth = 10, exclude: XyoAddress[] = []): 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: XyoAddress[] = [],\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: XyoAddress[] = []): 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 { Logger } from '@ariestools/sdk'\nimport {\n assertEx,\n exists,\n IdLogger,\n isAddress,\n isDefined, isString, isTruthy,\n} from '@ariestools/sdk'\nimport type { XyoAddress, XyoQuantAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleResolver,\n} from '#module-model'\nimport { asModuleInstance, duplicateModules } from '#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: XyoAddress\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!).resolve<T>('*', downLocalOptions) : []),\n ...(up ? await (upResolver!).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 result ??= await this.resolveModuleIdentifier<T>(resolverInstance, resolvedId)\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): Promise<((Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress)[]> {\n return traceModuleIdentifier(resolver, path)\n }\n\n static transformModuleIdentifier(identifier: ModuleIdentifier, transformers: ModuleIdentifierTransformer[] = ResolveHelper.transformers): Promise<ModuleIdentifier | undefined> {\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: Logger | undefined = this.defaultLogger,\n ): void {\n const log = logger ? new IdLogger(logger, () => `validateRequiredResolve [${id}][${JSON.stringify(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 '@ariestools/sdk'\n\nimport type { ModuleIdentifierTransformer } from '#module-model'\n\nexport class ResolveHelperStatic {\n static readonly defaultLogger?: Logger\n static transformers: ModuleIdentifierTransformer[] = []\n}\n", "import { asAddress, assertEx } from '@ariestools/sdk'\n\nimport type { ModuleIdentifierTransformer, ModuleInstance } from '#module-model'\nimport { MODULE_PATH_SEPARATOR } from '#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,\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 '#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,\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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleInstance, ModuleName } from '#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<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstanceUp(root, modName))?.address\n}\n\nexport const resolveLocalNameToAddressDown = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate?: boolean,\n): Promise<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstanceDown(root, modName, includePrivate))?.address\n}\n\nexport const resolveLocalNameToAddressAll = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate?: boolean,\n): Promise<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstanceAll(root, modName, includePrivate))?.address\n}\n\nexport const resolveLocalNameToAddress = async (\n root: ModuleInstance,\n modName: ModuleName,\n includePrivate?: boolean,\n direction: ModuleResolveDirection = 'all',\n): Promise<XyoAddress | undefined> => {\n return (await resolveLocalNameToInstance(root, modName, includePrivate, direction))?.address\n}\n", "import type { ModuleIdentifier, ModuleIdentifierTransformer } from '#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 { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleIdentifierTransformer, ModuleInstance } from '#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,\n transformers: ModuleIdentifierTransformer[] = ResolveHelperStatic.transformers,\n): Promise<XyoAddress | undefined> => {\n return (await resolvePathToInstance(root, path, includePrivate, transformers))?.address\n}\n", "import { assertEx } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleIdentifier, ModuleResolver } from '#module-model'\nimport { asModuleInstance } from '#module-model'\n\nexport const traceModuleIdentifier = async (resolver: ModuleResolver, path: ModuleIdentifier): Promise<XyoAddress[]> => {\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 { Promisable } from '@ariestools/sdk'\nimport {\n assertEx, exists, isAddress,\n} from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleName,\n ModuleRepository,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '#module-model'\nimport { isModuleName } from '#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<XyoAddress, ModuleInstance> = {}\n private nameToModule: Record<ModuleName, ModuleInstance> = {}\n\n constructor(params: SimpleModuleResolverParams) {\n super(params)\n }\n\n get allowNameResolution(): boolean {\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 new Error('Adding resolvers not supported')\n }\n\n remove(address: XyoAddress | XyoAddress[]): 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 new Error('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<XyoAddress | 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: XyoAddress) {\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<XyoAddress, ModuleInstance>, address: XyoAddress[]): 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\n query?.reduce((supported, queryList) => {\n return (\n\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 { isDefined, isUndefined } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type { DivinerInstance } from '#diviner-model'\nimport { PayloadDivinerQuerySchema } from '#diviner-payload-model'\nimport type { ModuleIdentifier, ModuleIdentifierTransformer } from '#module-model'\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: XyoAddress[] }).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 '#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 // eslint-disable-next-line @typescript-eslint/unbound-method\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 // eslint-disable-next-line @typescript-eslint/await-thenable\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"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"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"]
|
|
7
7
|
}
|
|
@@ -251,7 +251,7 @@ var ModuleWrapper = class extends Base {
|
|
|
251
251
|
return typeof id === "string" && id !== "*" ? void 0 : [];
|
|
252
252
|
}
|
|
253
253
|
async resolvePrivate(id, _options) {
|
|
254
|
-
if (id === "*") return
|
|
254
|
+
if (id === "*") return [];
|
|
255
255
|
}
|
|
256
256
|
async siblings() {
|
|
257
257
|
return (await Promise.all((await this.parents()).map((parent) => parent.publicChildren()))).flat().filter(duplicateModules);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/modules/module-wrapper/ModuleWrapper.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n CreatableName, EventAnyListener, EventEmitter, EventListener, EventUnsubscribeFunction, Logger,\n Promisable,\n} from '@ariestools/sdk'\nimport {\n assertEx,\n Base,\n exists,\n isDefined, PromiseEx,\n} from '@ariestools/sdk'\nimport type {\n AccountInstance, ModuleError, ModuleManifestPayload,\n Payload, Query, QueryBoundWitness, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport {\n BoundWitnessWrapper, ModuleErrorSchema, QueryBoundWitnessBuilder,\n} from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type {\n AddressPreviousHashPayload,\n AnyConfigSchema,\n AttachableModuleInstance,\n InstanceTypeCheck,\n ModuleAddressQuery,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n ModuleStatus,\n QueryableModule,\n QueryableModuleParams,\n QueryableModuleTypeCheck,\n} from '#module-model'\nimport {\n AddressPreviousHashSchema,\n asAttachableModuleInstance,\n asModuleInstance,\n duplicateModules,\n isModuleInstance,\n isQueryableModule,\n ModuleAddressQuerySchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n ObjectResolverPriority,\n} from '#module-model'\n\nimport type { ModuleWrapperParams } from './models.ts'\n\nexport interface ConstructableModuleWrapper<TWrapper extends ModuleWrapper> {\n defaultLogger?: Logger\n instanceIdentityCheck: InstanceTypeCheck\n moduleIdentityCheck: QueryableModuleTypeCheck\n requiredQueries: string[]\n new (params: ModuleWrapperParams<TWrapper['mod']>): TWrapper\n\n canWrap(mod: QueryableModule | undefined): boolean\n\n is<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrapper?: any,\n ): wrapper is TModuleWrapper\n\n tryWrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity?: boolean,\n ): TModuleWrapper | undefined\n\n wrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity?: boolean,\n ): TModuleWrapper\n}\n\nexport function constructableModuleWrapper<TWrapper extends ModuleWrapper>() {\n return <U extends ConstructableModuleWrapper<TWrapper>>(constructor: U): void => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n constructor\n }\n}\n\n@constructableModuleWrapper()\nexport class ModuleWrapper<TWrappedModule extends QueryableModule = QueryableModule>\n extends Base<Exclude<Omit<TWrappedModule['params'], 'config'> & { config: Exclude<TWrappedModule['params']['config'], undefined> }, undefined>>\n implements AttachableModuleInstance<TWrappedModule['params'], TWrappedModule['eventData']> {\n static readonly instanceIdentityCheck: InstanceTypeCheck = isModuleInstance\n static readonly moduleIdentityCheck: QueryableModuleTypeCheck = isQueryableModule\n static readonly requiredQueries: string[] = [ModuleStateQuerySchema]\n\n eventData = {} as TWrappedModule['eventData']\n\n protected readonly cachedCalls: LRUCache<string, Payload[], unknown> = new LRUCache<string, Payload[]>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n protected readonly wrapperParams: ModuleWrapperParams<TWrappedModule>\n\n private _parents: ModuleInstance[] = []\n private _status: ModuleStatus = 'wrapped'\n\n constructor(params: ModuleWrapperParams<TWrappedModule>) {\n const mutatedWrapperParams = { ...params } as ModuleWrapperParams<TWrappedModule>\n const mutatedParams = { ...params.mod.params, config: { ...params.mod.params.config } } as Exclude<\n Omit<TWrappedModule['params'], 'config'> & { config: Exclude<TWrappedModule['params']['config'], undefined> },\n undefined\n >\n\n // set the root params to the wrapped mod params\n super(mutatedParams)\n\n this.wrapperParams = mutatedWrapperParams\n }\n\n get account(): AccountInstance {\n return this.wrapperParams.account\n }\n\n get additionalSigners(): AccountInstance[] {\n return this.wrapperParams.additionalSigners ?? []\n }\n\n get address(): (Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress {\n return this.mod.address\n }\n\n get config() {\n return this.mod.config as Exclude<TWrappedModule['params']['config'], undefined>\n }\n\n get downResolver(): ModuleResolverInstance {\n // Should we be allowing this?\n const instance: AttachableModuleInstance | undefined = asAttachableModuleInstance(this.mod)\n if (instance) {\n return instance.downResolver\n }\n throw new Error('Unsupported')\n }\n\n get id(): string {\n return this.mod.id\n }\n\n get mod(): TWrappedModule {\n return this.wrapperParams.mod\n }\n\n get modName(): string | undefined {\n return this.mod.modName\n }\n\n get name() {\n return 'ModuleWrapper' as CreatableName\n }\n\n get priority(): 1 {\n return ObjectResolverPriority.Low\n }\n\n get privateResolver(): ModuleResolverInstance {\n // Should we be allowing this?\n const instance = asAttachableModuleInstance(this.mod)\n if (instance) {\n return instance.privateResolver\n }\n throw new Error('Unsupported')\n }\n\n get queries(): string[] {\n return this.mod.queries\n }\n\n get upResolver(): ModuleResolverInstance {\n // Should we be allowing this?\n const instance = asAttachableModuleInstance(this.mod)\n if (instance) {\n return instance.upResolver\n }\n throw new Error('Unsupported')\n }\n\n // Getter/setter adjacency conflicts with the class member-ordering rule here.\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get status() {\n return this._status\n }\n\n protected set status(value: ModuleStatus) {\n this._status = value\n }\n\n /** Narrowed view of `mod` typed against the wrapped module's actual `eventData` so generic event method calls type-check across the constraint boundary. */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n protected get modEvents(): EventEmitter<TWrappedModule['eventData']> {\n return this.wrapperParams.mod\n }\n\n static canWrap(mod?: QueryableModule): mod is QueryableModule<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>> {\n return !!mod && this.moduleIdentityCheck(mod)\n }\n\n static hasRequiredQueries(mod: QueryableModule): boolean {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static is<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrapper: any,\n ): wrapper is TModuleWrapper {\n return wrapper instanceof this\n }\n\n static missingRequiredQueries(mod: QueryableModule): string[] {\n const modQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return modQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n static tryWrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity = true,\n ): TModuleWrapper | undefined {\n if (!checkIdentity || this.canWrap(mod)) {\n return new this({ account, mod: mod as TModuleWrapper['mod'] })\n }\n }\n\n static with<TModuleWrapper extends ModuleWrapper, R extends Promisable<void> = void>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mod: any,\n\n closure: (mod: TModuleWrapper) => R,\n ): R | undefined {\n return this.is(mod) ? closure(mod) : undefined\n }\n\n static wrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity = true,\n ): TModuleWrapper {\n assertEx(!checkIdentity || (mod && this.moduleIdentityCheck(mod)), () => `Passed mod failed identity check: ${mod?.config?.schema}`)\n return assertEx(this.tryWrap(mod, account, checkIdentity), () => 'Unable to wrap mod as ModuleWrapper')\n }\n\n addParent(mod: ModuleInstance): void {\n const hasExistingEntry = this._parents.some(parent => parent.address === mod.address)\n if (!hasExistingEntry) {\n this._parents.push(mod)\n }\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return assertEx(\n (await this.sendQuery(queryPayload)).find(payload => payload.schema === AddressPreviousHashSchema) as AddressPreviousHashPayload,\n () => 'Result did not include correct payload',\n )\n }\n\n clearListeners(eventNames: Parameters<TWrappedModule['clearListeners']>[0]): void {\n return this.mod.clearListeners(eventNames)\n }\n\n emit<TEventName extends keyof TWrappedModule['eventData']>(\n eventName: TEventName,\n eventArgs: TWrappedModule['eventData'][TEventName],\n ): Promise<void> {\n return this.modEvents.emit(eventName, eventArgs)\n }\n\n emitSerial<TEventName extends keyof TWrappedModule['eventData']>(\n eventName: TEventName,\n eventArgs: TWrappedModule['eventData'][TEventName],\n ): Promise<void> {\n return this.modEvents.emitSerial(eventName, eventArgs)\n }\n\n listenerCount(eventNames: Parameters<TWrappedModule['listenerCount']>[0]): number {\n return this.mod.listenerCount(eventNames)\n }\n\n async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as ModuleManifestPayload\n }\n\n async manifestQuery(account: AccountInstance, maxDepth?: number): Promise<ModuleQueryResult<ModuleManifestPayload>> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload))\n }\n\n off<TEventName extends keyof TWrappedModule['eventData']>(\n eventNames: TEventName,\n listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): void {\n return this.modEvents.off(eventNames, listener)\n }\n\n offAny(listener: EventAnyListener): void {\n return this.mod.offAny(listener)\n }\n\n on<TEventName extends keyof TWrappedModule['eventData']>(eventNames: TEventName, listener: EventListener<TWrappedModule['eventData'][TEventName]>): EventUnsubscribeFunction {\n return this.modEvents.on(eventNames, listener)\n }\n\n onAny(listener: EventAnyListener): EventUnsubscribeFunction {\n return this.mod.onAny(listener)\n }\n\n once<TEventName extends keyof TWrappedModule['eventData']>(\n eventName: TEventName,\n listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): EventUnsubscribeFunction {\n return this.modEvents.once(eventName, listener)\n }\n\n parents(): Promisable<ModuleInstance[]> {\n return this._parents\n }\n\n async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as AddressPreviousHashPayload).previousHash\n }\n\n async previousHashQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPreviousHashPayload>> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async privateChildren(): Promise<ModuleInstance[]> {\n if (isModuleInstance(this.mod)) {\n return await this.mod.privateChildren()\n }\n return []\n }\n\n async publicChildren(): Promise<ModuleInstance[]> {\n if (isModuleInstance(this.mod)) {\n return await this.mod.publicChildren()\n }\n return []\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.mod.query(query, payloads)\n }\n\n queryable<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promisable<boolean> {\n return this.mod.queryable(query, payloads)\n }\n\n removeParent(address: XyoAddress): void {\n this._parents = this._parents.filter(item => item.address !== address)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\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>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<ModuleInstance>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const instance = asModuleInstance(this.mod)\n if (instance?.resolve) {\n if (id === '*') {\n return await instance.resolve<T>('*', options)\n }\n switch (typeof id) {\n case 'string': {\n return await instance.resolve<T>(id, options)\n }\n default: {\n return\n }\n }\n }\n return typeof id === 'string' && id !== '*' ? undefined : []\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return await Promise.resolve([])\n }\n\n async siblings(): Promise<ModuleInstance[]> {\n // eslint-disable-next-line @typescript-eslint/await-thenable\n return (await Promise.all((await this.parents()).map(parent => parent.publicChildren()))).flat().filter(duplicateModules)\n }\n\n start(): Promise<boolean> {\n throw new Error('Cannot start a wrapped module')\n }\n\n async state(): Promise<Payload[]> {\n const cachedResult = this.cachedCalls.get('state')\n if (cachedResult) {\n return cachedResult\n }\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const result = await this.sendQuery(queryPayload)\n this.cachedCalls.set('state', result)\n return result\n }\n\n async stateQuery(_account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n return await this.sendQueryRaw(queryPayload)\n }\n\n stop(): Promise<boolean> {\n throw new Error('Cannot stop a wrapped module')\n }\n\n protected bindQuery<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance = this.account,\n additionalSigners: AccountInstance[] = this.additionalSigners,\n ): PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return new PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance>(async (resolve) => {\n const result = await this.bindQueryInternal(query, payloads, account, additionalSigners)\n resolve?.(result)\n return result\n }, account)\n }\n\n protected async bindQueryInternal<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance = this.account,\n additionalSigners: AccountInstance[] = this.additionalSigners,\n ): Promise<[QueryBoundWitness, Payload[], ModuleError[]]> {\n const builder = new QueryBoundWitnessBuilder().payloads(payloads).query(query)\n const accounts = [account, ...additionalSigners].filter(exists)\n return await (accounts.length > 0 ? builder.signers(accounts) : builder).build()\n }\n\n protected filterErrors([bw, payloads]: ModuleQueryResult): ModuleError[] {\n const wrapper = BoundWitnessWrapper.wrap(bw, payloads)\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n protected async sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n ): Promise<R[]> {\n const queryResults = await this.sendQueryRaw(queryPayload, payloads)\n const [, resultPayloads, errors] = queryResults\n\n /* TODO: Figure out what to do with the returning BW. Should we store them in a queue in case the caller wants to see them? */\n\n if (isDefined(errors) && errors.length > 0) {\n /* TODO: Figure out how to rollup multiple Errors */\n throw new Error(JSON.stringify(errors[0]))\n }\n\n return resultPayloads as R[]\n }\n\n protected async sendQueryRaw<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n account?: AccountInstance,\n ): Promise<ModuleQueryResult<R>> {\n // Bind them\n const query = await this.bindQuery(queryPayload, payloads, account)\n\n // Send them off\n return (await this.query(query[0], query[1])) as ModuleQueryResult<R>\n }\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import type {\n CreatableName, EventAnyListener, EventEmitter, EventListener, EventUnsubscribeFunction, Logger,\n Promisable,\n} from '@ariestools/sdk'\nimport {\n assertEx,\n Base,\n exists,\n isDefined, PromiseEx,\n} from '@ariestools/sdk'\nimport type {\n AccountInstance, ModuleError, ModuleManifestPayload,\n Payload, Query, QueryBoundWitness, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport {\n BoundWitnessWrapper, ModuleErrorSchema, QueryBoundWitnessBuilder,\n} from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type {\n AddressPreviousHashPayload,\n AnyConfigSchema,\n AttachableModuleInstance,\n InstanceTypeCheck,\n ModuleAddressQuery,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n ModuleStatus,\n QueryableModule,\n QueryableModuleParams,\n QueryableModuleTypeCheck,\n} from '#module-model'\nimport {\n AddressPreviousHashSchema,\n asAttachableModuleInstance,\n asModuleInstance,\n duplicateModules,\n isModuleInstance,\n isQueryableModule,\n ModuleAddressQuerySchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n ObjectResolverPriority,\n} from '#module-model'\n\nimport type { ModuleWrapperParams } from './models.ts'\n\nexport interface ConstructableModuleWrapper<TWrapper extends ModuleWrapper> {\n defaultLogger?: Logger\n instanceIdentityCheck: InstanceTypeCheck\n moduleIdentityCheck: QueryableModuleTypeCheck\n requiredQueries: string[]\n new (params: ModuleWrapperParams<TWrapper['mod']>): TWrapper\n\n canWrap(mod: QueryableModule | undefined): boolean\n\n is<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrapper?: any,\n ): wrapper is TModuleWrapper\n\n tryWrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity?: boolean,\n ): TModuleWrapper | undefined\n\n wrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity?: boolean,\n ): TModuleWrapper\n}\n\nexport function constructableModuleWrapper<TWrapper extends ModuleWrapper>() {\n return <U extends ConstructableModuleWrapper<TWrapper>>(constructor: U): void => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n constructor\n }\n}\n\n@constructableModuleWrapper()\nexport class ModuleWrapper<TWrappedModule extends QueryableModule = QueryableModule>\n extends Base<Exclude<Omit<TWrappedModule['params'], 'config'> & { config: Exclude<TWrappedModule['params']['config'], undefined> }, undefined>>\n implements AttachableModuleInstance<TWrappedModule['params'], TWrappedModule['eventData']> {\n static readonly instanceIdentityCheck: InstanceTypeCheck = isModuleInstance\n static readonly moduleIdentityCheck: QueryableModuleTypeCheck = isQueryableModule\n static readonly requiredQueries: string[] = [ModuleStateQuerySchema]\n\n eventData = {} as TWrappedModule['eventData']\n\n protected readonly cachedCalls: LRUCache<string, Payload[], unknown> = new LRUCache<string, Payload[]>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n protected readonly wrapperParams: ModuleWrapperParams<TWrappedModule>\n\n private _parents: ModuleInstance[] = []\n private _status: ModuleStatus = 'wrapped'\n\n constructor(params: ModuleWrapperParams<TWrappedModule>) {\n const mutatedWrapperParams = { ...params } as ModuleWrapperParams<TWrappedModule>\n const mutatedParams = { ...params.mod.params, config: { ...params.mod.params.config } } as Exclude<\n Omit<TWrappedModule['params'], 'config'> & { config: Exclude<TWrappedModule['params']['config'], undefined> },\n undefined\n >\n\n // set the root params to the wrapped mod params\n super(mutatedParams)\n\n this.wrapperParams = mutatedWrapperParams\n }\n\n get account(): AccountInstance {\n return this.wrapperParams.account\n }\n\n get additionalSigners(): AccountInstance[] {\n return this.wrapperParams.additionalSigners ?? []\n }\n\n get address(): (Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress {\n return this.mod.address\n }\n\n get config() {\n return this.mod.config as Exclude<TWrappedModule['params']['config'], undefined>\n }\n\n get downResolver(): ModuleResolverInstance {\n // Should we be allowing this?\n const instance: AttachableModuleInstance | undefined = asAttachableModuleInstance(this.mod)\n if (instance) {\n return instance.downResolver\n }\n throw new Error('Unsupported')\n }\n\n get id(): string {\n return this.mod.id\n }\n\n get mod(): TWrappedModule {\n return this.wrapperParams.mod\n }\n\n get modName(): string | undefined {\n return this.mod.modName\n }\n\n get name() {\n return 'ModuleWrapper' as CreatableName\n }\n\n get priority(): 1 {\n return ObjectResolverPriority.Low\n }\n\n get privateResolver(): ModuleResolverInstance {\n // Should we be allowing this?\n const instance = asAttachableModuleInstance(this.mod)\n if (instance) {\n return instance.privateResolver\n }\n throw new Error('Unsupported')\n }\n\n get queries(): string[] {\n return this.mod.queries\n }\n\n get upResolver(): ModuleResolverInstance {\n // Should we be allowing this?\n const instance = asAttachableModuleInstance(this.mod)\n if (instance) {\n return instance.upResolver\n }\n throw new Error('Unsupported')\n }\n\n // Getter/setter adjacency conflicts with the class member-ordering rule here.\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get status() {\n return this._status\n }\n\n protected set status(value: ModuleStatus) {\n this._status = value\n }\n\n /** Narrowed view of `mod` typed against the wrapped module's actual `eventData` so generic event method calls type-check across the constraint boundary. */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n protected get modEvents(): EventEmitter<TWrappedModule['eventData']> {\n return this.wrapperParams.mod\n }\n\n static canWrap(mod?: QueryableModule): mod is QueryableModule<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>> {\n return !!mod && this.moduleIdentityCheck(mod)\n }\n\n static hasRequiredQueries(mod: QueryableModule): boolean {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static is<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrapper: any,\n ): wrapper is TModuleWrapper {\n return wrapper instanceof this\n }\n\n static missingRequiredQueries(mod: QueryableModule): string[] {\n const modQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return modQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n static tryWrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity = true,\n ): TModuleWrapper | undefined {\n if (!checkIdentity || this.canWrap(mod)) {\n return new this({ account, mod: mod as TModuleWrapper['mod'] })\n }\n }\n\n static with<TModuleWrapper extends ModuleWrapper, R extends Promisable<void> = void>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mod: any,\n\n closure: (mod: TModuleWrapper) => R,\n ): R | undefined {\n return this.is(mod) ? closure(mod) : undefined\n }\n\n static wrap<TModuleWrapper extends ModuleWrapper>(\n this: ConstructableModuleWrapper<TModuleWrapper>,\n mod: QueryableModule | undefined,\n account: AccountInstance,\n checkIdentity = true,\n ): TModuleWrapper {\n assertEx(!checkIdentity || (mod && this.moduleIdentityCheck(mod)), () => `Passed mod failed identity check: ${mod?.config?.schema}`)\n return assertEx(this.tryWrap(mod, account, checkIdentity), () => 'Unable to wrap mod as ModuleWrapper')\n }\n\n addParent(mod: ModuleInstance): void {\n const hasExistingEntry = this._parents.some(parent => parent.address === mod.address)\n if (!hasExistingEntry) {\n this._parents.push(mod)\n }\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return assertEx(\n (await this.sendQuery(queryPayload)).find(payload => payload.schema === AddressPreviousHashSchema) as AddressPreviousHashPayload,\n () => 'Result did not include correct payload',\n )\n }\n\n clearListeners(eventNames: Parameters<TWrappedModule['clearListeners']>[0]): void {\n return this.mod.clearListeners(eventNames)\n }\n\n emit<TEventName extends keyof TWrappedModule['eventData']>(\n eventName: TEventName,\n eventArgs: TWrappedModule['eventData'][TEventName],\n ): Promise<void> {\n return this.modEvents.emit(eventName, eventArgs)\n }\n\n emitSerial<TEventName extends keyof TWrappedModule['eventData']>(\n eventName: TEventName,\n eventArgs: TWrappedModule['eventData'][TEventName],\n ): Promise<void> {\n return this.modEvents.emitSerial(eventName, eventArgs)\n }\n\n listenerCount(eventNames: Parameters<TWrappedModule['listenerCount']>[0]): number {\n return this.mod.listenerCount(eventNames)\n }\n\n async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as ModuleManifestPayload\n }\n\n async manifestQuery(account: AccountInstance, maxDepth?: number): Promise<ModuleQueryResult<ModuleManifestPayload>> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload))\n }\n\n off<TEventName extends keyof TWrappedModule['eventData']>(\n eventNames: TEventName,\n listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): void {\n return this.modEvents.off(eventNames, listener)\n }\n\n offAny(listener: EventAnyListener): void {\n return this.mod.offAny(listener)\n }\n\n on<TEventName extends keyof TWrappedModule['eventData']>(eventNames: TEventName, listener: EventListener<TWrappedModule['eventData'][TEventName]>): EventUnsubscribeFunction {\n return this.modEvents.on(eventNames, listener)\n }\n\n onAny(listener: EventAnyListener): EventUnsubscribeFunction {\n return this.mod.onAny(listener)\n }\n\n once<TEventName extends keyof TWrappedModule['eventData']>(\n eventName: TEventName,\n listener: EventListener<TWrappedModule['eventData'][TEventName]>,\n ): EventUnsubscribeFunction {\n return this.modEvents.once(eventName, listener)\n }\n\n parents(): Promisable<ModuleInstance[]> {\n return this._parents\n }\n\n async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as AddressPreviousHashPayload).previousHash\n }\n\n async previousHashQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPreviousHashPayload>> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return await this.sendQueryRaw(queryPayload, undefined, account)\n }\n\n async privateChildren(): Promise<ModuleInstance[]> {\n if (isModuleInstance(this.mod)) {\n return await this.mod.privateChildren()\n }\n return []\n }\n\n async publicChildren(): Promise<ModuleInstance[]> {\n if (isModuleInstance(this.mod)) {\n return await this.mod.publicChildren()\n }\n return []\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.mod.query(query, payloads)\n }\n\n queryable<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promisable<boolean> {\n return this.mod.queryable(query, payloads)\n }\n\n removeParent(address: XyoAddress): void {\n this._parents = this._parents.filter(item => item.address !== address)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\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>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<ModuleInstance>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const instance = asModuleInstance(this.mod)\n if (instance?.resolve) {\n if (id === '*') {\n return await instance.resolve<T>('*', options)\n }\n switch (typeof id) {\n case 'string': {\n return await instance.resolve<T>(id, options)\n }\n default: {\n return\n }\n }\n }\n return typeof id === 'string' && id !== '*' ? undefined : []\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return []\n }\n\n async siblings(): Promise<ModuleInstance[]> {\n // eslint-disable-next-line @typescript-eslint/await-thenable\n return (await Promise.all((await this.parents()).map(parent => parent.publicChildren()))).flat().filter(duplicateModules)\n }\n\n start(): Promise<boolean> {\n throw new Error('Cannot start a wrapped module')\n }\n\n async state(): Promise<Payload[]> {\n const cachedResult = this.cachedCalls.get('state')\n if (cachedResult) {\n return cachedResult\n }\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const result = await this.sendQuery(queryPayload)\n this.cachedCalls.set('state', result)\n return result\n }\n\n async stateQuery(_account: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n return await this.sendQueryRaw(queryPayload)\n }\n\n stop(): Promise<boolean> {\n throw new Error('Cannot stop a wrapped module')\n }\n\n protected bindQuery<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance = this.account,\n additionalSigners: AccountInstance[] = this.additionalSigners,\n ): PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return new PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance>(async (resolve) => {\n const result = await this.bindQueryInternal(query, payloads, account, additionalSigners)\n resolve?.(result)\n return result\n }, account)\n }\n\n protected async bindQueryInternal<T extends Query>(\n query: T,\n payloads?: Payload[],\n account: AccountInstance = this.account,\n additionalSigners: AccountInstance[] = this.additionalSigners,\n ): Promise<[QueryBoundWitness, Payload[], ModuleError[]]> {\n const builder = new QueryBoundWitnessBuilder().payloads(payloads).query(query)\n const accounts = [account, ...additionalSigners].filter(exists)\n return await (accounts.length > 0 ? builder.signers(accounts) : builder).build()\n }\n\n protected filterErrors([bw, payloads]: ModuleQueryResult): ModuleError[] {\n const wrapper = BoundWitnessWrapper.wrap(bw, payloads)\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n protected async sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n ): Promise<R[]> {\n const queryResults = await this.sendQueryRaw(queryPayload, payloads)\n const [, resultPayloads, errors] = queryResults\n\n /* TODO: Figure out what to do with the returning BW. Should we store them in a queue in case the caller wants to see them? */\n\n if (isDefined(errors) && errors.length > 0) {\n /* TODO: Figure out how to rollup multiple Errors */\n throw new Error(JSON.stringify(errors[0]))\n }\n\n return resultPayloads as R[]\n }\n\n protected async sendQueryRaw<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n queryPayload: T,\n payloads?: P[],\n account?: AccountInstance,\n ): Promise<ModuleQueryResult<R>> {\n // Bind them\n const query = await this.bindQuery(queryPayload, payloads, account)\n\n // Send them off\n return (await this.query(query[0], query[1])) as ModuleQueryResult<R>\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAW;AAAA,OACN;AAMP;AAAA,EACE;AAAA,EAAqB;AAAA,EAAmB;AAAA,OACnC;AACP,SAAS,gBAAgB;AAsBzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAkCA,SAAS,6BAA6D;AAC3E,SAAO,CAAiD,gBAAyB;AAE/E;AAAA,EACF;AACF;AAGO,IAAM,gBAAN,cACG,KACmF;AAAA,EAK3F,YAAY,CAAC;AAAA,EAEM,cAAoD,IAAI,SAA4B;AAAA,IACrG,KAAK;AAAA,IAAM,KAAK,MAAO;AAAA,IAAI,cAAc;AAAA,EAC3C,CAAC;AAAA,EAEkB;AAAA,EAEX,WAA6B,CAAC;AAAA,EAC9B,UAAwB;AAAA,EAEhC,YAAY,QAA6C;AACvD,UAAM,uBAAuB,EAAE,GAAG,OAAO;AACzC,UAAM,gBAAgB,EAAE,GAAG,OAAO,IAAI,QAAQ,QAAQ,EAAE,GAAG,OAAO,IAAI,OAAO,OAAO,EAAE;AAMtF,UAAM,aAAa;AAEnB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,IAAI,UAA2B;AAC7B,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,IAAI,oBAAuC;AACzC,WAAO,KAAK,cAAc,qBAAqB,CAAC;AAAA,EAClD;AAAA,EAEA,IAAI,UAIiB;AACnB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,eAAuC;AAEzC,UAAM,WAAiD,2BAA2B,KAAK,GAAG;AAC1F,QAAI,UAAU;AACZ,aAAO,SAAS;AAAA,IAClB;AACA,UAAM,IAAI,MAAM,aAAa;AAAA,EAC/B;AAAA,EAEA,IAAI,KAAa;AACf,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,MAAsB;AACxB,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,IAAI,UAA8B;AAChC,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,OAAO;AACT,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,WAAc;AAChB,WAAO,uBAAuB;AAAA,EAChC;AAAA,EAEA,IAAI,kBAA0C;AAE5C,UAAM,WAAW,2BAA2B,KAAK,GAAG;AACpD,QAAI,UAAU;AACZ,aAAO,SAAS;AAAA,IAClB;AACA,UAAM,IAAI,MAAM,aAAa;AAAA,EAC/B;AAAA,EAEA,IAAI,UAAoB;AACtB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,aAAqC;AAEvC,UAAM,WAAW,2BAA2B,KAAK,GAAG;AACpD,QAAI,UAAU;AACZ,aAAO,SAAS;AAAA,IAClB;AACA,UAAM,IAAI,MAAM,aAAa;AAAA,EAC/B;AAAA;AAAA;AAAA,EAIA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAc,OAAO,OAAqB;AACxC,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA,EAIA,IAAc,YAAuD;AACnE,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,OAAO,QAAQ,KAA8H;AAC3I,WAAO,CAAC,CAAC,OAAO,KAAK,oBAAoB,GAAG;AAAA,EAC9C;AAAA,EAEA,OAAO,mBAAmB,KAA+B;AACvD,WAAO,KAAK,uBAAuB,GAAG,EAAE,WAAW;AAAA,EACrD;AAAA,EAEA,OAAO,GAGL,SAC2B;AAC3B,WAAO,mBAAmB;AAAA,EAC5B;AAAA,EAEA,OAAO,uBAAuB,KAAgC;AAC5D,UAAM,aAAa,IAAI;AACvB,WACE,KAAK,gBAAgB,IAAI,CAAC,UAAU;AAClC,aAAO,WAAW,SAAS,KAAK,IAAI,OAAO;AAAA,IAC7C,CAAC,EACD,OAAO,MAAM;AAAA,EACjB;AAAA,EAEA,OAAO,QAEL,KACA,SACA,gBAAgB,MACY;AAC5B,QAAI,CAAC,iBAAiB,KAAK,QAAQ,GAAG,GAAG;AACvC,aAAO,IAAI,KAAK,EAAE,SAAS,IAAkC,CAAC;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,OAAO,KAGL,KAEA,SACe;AACf,WAAO,KAAK,GAAG,GAAG,IAAI,QAAQ,GAAG,IAAI;AAAA,EACvC;AAAA,EAEA,OAAO,KAEL,KACA,SACA,gBAAgB,MACA;AAChB,aAAS,CAAC,iBAAkB,OAAO,KAAK,oBAAoB,GAAG,GAAI,MAAM,qCAAqC,KAAK,QAAQ,MAAM,EAAE;AACnI,WAAO,SAAS,KAAK,QAAQ,KAAK,SAAS,aAAa,GAAG,MAAM,qCAAqC;AAAA,EACxG;AAAA,EAEA,UAAU,KAA2B;AACnC,UAAM,mBAAmB,KAAK,SAAS,KAAK,YAAU,OAAO,YAAY,IAAI,OAAO;AACpF,QAAI,CAAC,kBAAkB;AACrB,WAAK,SAAS,KAAK,GAAG;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAM,sBAA2D;AAC/D,UAAM,eAAmC,EAAE,QAAQ,yBAAyB;AAC5E,WAAO;AAAA,OACJ,MAAM,KAAK,UAAU,YAAY,GAAG,KAAK,aAAW,QAAQ,WAAW,yBAAyB;AAAA,MACjG,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,eAAe,YAAmE;AAChF,WAAO,KAAK,IAAI,eAAe,UAAU;AAAA,EAC3C;AAAA,EAEA,KACE,WACA,WACe;AACf,WAAO,KAAK,UAAU,KAAK,WAAW,SAAS;AAAA,EACjD;AAAA,EAEA,WACE,WACA,WACe;AACf,WAAO,KAAK,UAAU,WAAW,WAAW,SAAS;AAAA,EACvD;AAAA,EAEA,cAAc,YAAoE;AAChF,WAAO,KAAK,IAAI,cAAc,UAAU;AAAA,EAC1C;AAAA,EAEA,MAAM,SAAS,UAAmD;AAChE,UAAM,eAAoC,EAAE,QAAQ,2BAA2B,GAAI,aAAa,SAAY,CAAC,IAAI,EAAE,SAAS,EAAG;AAC/H,YAAQ,MAAM,KAAK,UAAU,YAAY,GAAG,CAAC;AAAA,EAC/C;AAAA,EAEA,MAAM,cAAc,SAA0B,UAAsE;AAClH,UAAM,eAAoC,EAAE,QAAQ,2BAA2B,GAAI,aAAa,SAAY,CAAC,IAAI,EAAE,SAAS,EAAG;AAC/H,WAAO,MAAM,KAAK,aAAa,cAAc,QAAW,OAAO;AAAA,EACjE;AAAA,EAEA,MAAM,gBAAuD;AAC3D,UAAM,eAAmC,EAAE,QAAQ,yBAAyB;AAC5E,WAAQ,MAAM,KAAK,UAAU,YAAY;AAAA,EAC3C;AAAA,EAEA,IACE,YACA,UACM;AACN,WAAO,KAAK,UAAU,IAAI,YAAY,QAAQ;AAAA,EAChD;AAAA,EAEA,OAAO,UAAkC;AACvC,WAAO,KAAK,IAAI,OAAO,QAAQ;AAAA,EACjC;AAAA,EAEA,GAAyD,YAAwB,UAA4F;AAC3K,WAAO,KAAK,UAAU,GAAG,YAAY,QAAQ;AAAA,EAC/C;AAAA,EAEA,MAAM,UAAsD;AAC1D,WAAO,KAAK,IAAI,MAAM,QAAQ;AAAA,EAChC;AAAA,EAEA,KACE,WACA,UAC0B;AAC1B,WAAO,KAAK,UAAU,KAAK,WAAW,QAAQ;AAAA,EAChD;AAAA,EAEA,UAAwC;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,eAA4C;AAChD,UAAM,eAAmC,EAAE,QAAQ,yBAAyB;AAC5E,YAAS,MAAM,KAAK,UAAU,YAAY,GAAG,IAAI,EAAiC;AAAA,EACpF;AAAA,EAEA,MAAM,kBAAkB,SAAmF;AACzG,UAAM,eAAmC,EAAE,QAAQ,yBAAyB;AAC5E,WAAO,MAAM,KAAK,aAAa,cAAc,QAAW,OAAO;AAAA,EACjE;AAAA,EAEA,MAAM,kBAA6C;AACjD,QAAI,iBAAiB,KAAK,GAAG,GAAG;AAC9B,aAAO,MAAM,KAAK,IAAI,gBAAgB;AAAA,IACxC;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,iBAA4C;AAChD,QAAI,iBAAiB,KAAK,GAAG,GAAG;AAC9B,aAAO,MAAM,KAAK,IAAI,eAAe;AAAA,IACvC;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,MAAuD,OAAU,UAAkD;AACvH,WAAO,MAAM,KAAK,IAAI,MAAM,OAAO,QAAQ;AAAA,EAC7C;AAAA,EAEA,UAA2D,OAAU,UAA2C;AAC9G,WAAO,KAAK,IAAI,UAAU,OAAO,QAAQ;AAAA,EAC3C;AAAA,EAEA,aAAa,SAA2B;AACtC,SAAK,WAAW,KAAK,SAAS,OAAO,UAAQ,KAAK,YAAY,OAAO;AAAA,EACvE;AAAA,EASA,MAAM,QACJ,KAAuB,KACvB,SAC8B;AAC9B,UAAM,WAAW,iBAAiB,KAAK,GAAG;AAC1C,QAAI,UAAU,SAAS;AACrB,UAAI,OAAO,KAAK;AACd,eAAO,MAAM,SAAS,QAAW,KAAK,OAAO;AAAA,MAC/C;AACA,cAAQ,OAAO,IAAI;AAAA,QACjB,KAAK,UAAU;AACb,iBAAO,MAAM,SAAS,QAAW,IAAI,OAAO;AAAA,QAC9C;AAAA,QACA,SAAS;AACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO,OAAO,OAAO,YAAY,OAAO,MAAM,SAAY,CAAC;AAAA,EAC7D;AAAA,EAIA,MAAM,eACJ,IACA,UAC8B;AAC9B,QAAI,OAAO,IAAK,QAAO,CAAC;AAAA,EAC1B;AAAA,EAEA,MAAM,WAAsC;AAE1C,YAAQ,MAAM,QAAQ,KAAK,MAAM,KAAK,QAAQ,GAAG,IAAI,YAAU,OAAO,eAAe,CAAC,CAAC,GAAG,KAAK,EAAE,OAAO,gBAAgB;AAAA,EAC1H;AAAA,EAEA,QAA0B;AACxB,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAAA,EAEA,MAAM,QAA4B;AAChC,UAAM,eAAe,KAAK,YAAY,IAAI,OAAO;AACjD,QAAI,cAAc;AAChB,aAAO;AAAA,IACT;AACA,UAAM,eAAiC,EAAE,QAAQ,uBAAuB;AACxE,UAAM,SAAS,MAAM,KAAK,UAAU,YAAY;AAChD,SAAK,YAAY,IAAI,SAAS,MAAM;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,WAAW,UAAuD;AACtE,UAAM,eAAiC,EAAE,QAAQ,uBAAuB;AACxE,WAAO,MAAM,KAAK,aAAa,YAAY;AAAA,EAC7C;AAAA,EAEA,OAAyB;AACvB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAAA,EAEU,UACR,OACA,UACA,UAA2B,KAAK,SAChC,oBAAuC,KAAK,mBAC+B;AAE3E,WAAO,IAAI,UAA0E,OAAO,YAAY;AACtG,YAAM,SAAS,MAAM,KAAK,kBAAkB,OAAO,UAAU,SAAS,iBAAiB;AACvF,gBAAU,MAAM;AAChB,aAAO;AAAA,IACT,GAAG,OAAO;AAAA,EACZ;AAAA,EAEA,MAAgB,kBACd,OACA,UACA,UAA2B,KAAK,SAChC,oBAAuC,KAAK,mBACY;AACxD,UAAM,UAAU,IAAI,yBAAyB,EAAE,SAAS,QAAQ,EAAE,MAAM,KAAK;AAC7E,UAAM,WAAW,CAAC,SAAS,GAAG,iBAAiB,EAAE,OAAO,MAAM;AAC9D,WAAO,OAAO,SAAS,SAAS,IAAI,QAAQ,QAAQ,QAAQ,IAAI,SAAS,MAAM;AAAA,EACjF;AAAA,EAEU,aAAa,CAAC,IAAI,QAAQ,GAAqC;AACvE,UAAM,UAAU,oBAAoB,KAAK,IAAI,QAAQ;AACrD,WAAO,QAAQ,iBAA8B,iBAAiB;AAAA,EAChE;AAAA,EAEA,MAAgB,UACd,cACA,UACc;AACd,UAAM,eAAe,MAAM,KAAK,aAAa,cAAc,QAAQ;AACnE,UAAM,CAAC,EAAE,gBAAgB,MAAM,IAAI;AAInC,QAAI,UAAU,MAAM,KAAK,OAAO,SAAS,GAAG;AAE1C,YAAM,IAAI,MAAM,KAAK,UAAU,OAAO,CAAC,CAAC,CAAC;AAAA,IAC3C;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAgB,aACd,cACA,UACA,SAC+B;AAE/B,UAAM,QAAQ,MAAM,KAAK,UAAU,cAAc,UAAU,OAAO;AAGlE,WAAQ,MAAM,KAAK,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,EAC7C;AACF;AA7ZE,cAHW,eAGK,yBAA2C;AAC3D,cAJW,eAIK,uBAAgD;AAChE,cALW,eAKK,mBAA4B,CAAC,sBAAsB;AALxD,gBAAN;AAAA,EADN,2BAA2B;AAAA,GACf;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/sdk",
|
|
3
|
-
"version": "7.2.
|
|
3
|
+
"version": "7.2.2",
|
|
4
4
|
"description": "Self-contained all-in-one SDK for XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -358,22 +358,22 @@
|
|
|
358
358
|
"README.md"
|
|
359
359
|
],
|
|
360
360
|
"dependencies": {
|
|
361
|
-
"@ariestools/sdk": "~8.1.
|
|
362
|
-
"@xyo-network/sdk-protocol": "~7.2.
|
|
361
|
+
"@ariestools/sdk": "~8.1.6",
|
|
362
|
+
"@xyo-network/sdk-protocol": "~7.2.2",
|
|
363
363
|
"async-mutex": "~0.5.0",
|
|
364
364
|
"lru-cache": "~11.5.2"
|
|
365
365
|
},
|
|
366
366
|
"devDependencies": {
|
|
367
|
-
"@ariestools/toolchain": "~8.7.
|
|
368
|
-
"@ariestools/tsconfig": "~8.7.
|
|
367
|
+
"@ariestools/toolchain": "~8.7.26",
|
|
368
|
+
"@ariestools/tsconfig": "~8.7.26",
|
|
369
369
|
"@ariestools/vitest-extended": "~8.0.3",
|
|
370
370
|
"@ariestools/vitest-matchers": "~8.0.3",
|
|
371
371
|
"@opentelemetry/api": "~1.9.1",
|
|
372
|
-
"eslint": "~10.
|
|
372
|
+
"eslint": "~10.8.0",
|
|
373
373
|
"eslint-import-resolver-typescript": "~4.4.5",
|
|
374
374
|
"tslib": "~2.8.1",
|
|
375
375
|
"typescript": "~6.0.3",
|
|
376
|
-
"vite": "~8.1.
|
|
376
|
+
"vite": "~8.1.5",
|
|
377
377
|
"vitest": "~4.1.10",
|
|
378
378
|
"zod": "~4.4.3"
|
|
379
379
|
},
|