{
  "version": 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"],
  "sourcesContent": ["import type { Promisable } from '@ariestools/sdk'\nimport {\n  assertEx, exists, forget,\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\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"],
  "mappings": "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",
  "names": ["assertEx", "exists", "forget", "Account", "isPayloadOfSchemaType", "QueryBoundWitnessWrapper", "AbstractModuleInstance", "assertEx", "exists", "ObjectResolverPriority", "CompositeModuleResolver", "CompositeModuleResolver", "ObjectResolverPriority", "exists", "assertEx", "AbstractModuleInstance", "assertEx", "isPayloadOfSchemaType", "exists", "Account", "forget", "QueryBoundWitnessWrapper"]
}
