{
  "version": 3,
  "sources": ["../../src/modules/module-abstract/AbstractModule.ts", "../../src/modules/module-abstract/determineAccount.ts", "../../src/modules/module-abstract/Error.ts", "../../src/modules/module-abstract/QueryValidator/ModuleConfigQueryValidator.ts", "../../src/modules/module-abstract/QueryValidator/SupportedQueryValidator.ts", "../../src/modules/module-abstract/AbstractModuleInstance.ts", "../../src/modules/module-abstract/LoggerModuleStatusReporter.ts"],
  "sourcesContent": ["/* eslint-disable max-lines */\nimport type {\n  CreatableInstance, Hash, Logger,\n  Promisable, SpanConfig,\n} from '@ariestools/sdk'\nimport {\n  AbstractCreatable,\n  assertEx,\n  ConsoleLogger, exists,\n  forget,\n  handleErrorAsync,\n  IdLogger,\n  isDefined, isObject, isString, isUndefined, LevelLogger,\n  LogLevel,\n  PromiseEx,\n  spanRoot, spanRootAsync,\n} from '@ariestools/sdk'\nimport type {\n  AccountInstance, BoundWitness, ConfigPayload,\n  ModuleError, ModuleManifestPayload, Payload, Query, QueryBoundWitness, Schema, WalletInstance, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport {\n  Account, asSchema, BoundWitnessBuilder, ConfigSchema, isAccountInstance,\n  isQueryBoundWitness, PayloadBuilder, QueryBoundWitnessBuilder, QueryBoundWitnessWrapper, QuerySchema,\n} from '@xyo-network/sdk-protocol'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport { asArchivistInstance } from '#archivist-model'\nimport type {\n  AddressPayload,\n  AddressPreviousHashPayload,\n  ArchivingModuleConfig,\n  AttachableModuleInstance,\n  CreatableModule,\n  CreatableModuleFactory,\n  CreatableModuleInstance,\n  Labels,\n  ModuleBusyEventArgs,\n  ModuleConfig,\n  ModuleDescriptionPayload,\n  ModuleDetailsError,\n  ModuleEventData,\n  ModuleManifestQuery,\n  ModuleQueriedEventArgs,\n  ModuleQueries,\n  ModuleQueryHandlerResult,\n  ModuleQueryResult,\n  ModuleResolverInstance,\n  QueryableModule,\n  QueryableModuleParams,\n} from '#module-model'\nimport {\n  AddressPreviousHashSchema,\n  AddressSchema,\n  DeadModuleError,\n  isModuleName,\n  isSerializable,\n  ModuleAddressQuerySchema,\n  ModuleConfigSchema,\n  ModuleDescriptionSchema,\n  ModuleFactory,\n  ModuleManifestQuerySchema,\n  ModuleStateQuerySchema,\n  ModuleSubscribeQuerySchema,\n  ObjectResolverPriority,\n} from '#module-model'\n\nimport { determineAccount } from './determineAccount.ts'\nimport { ModuleErrorBuilder } from './Error.ts'\nimport type { Queryable } from './QueryValidator/index.ts'\nimport { ModuleConfigQueryValidator, SupportedQueryValidator } from './QueryValidator/index.ts'\n\nexport const DefaultModuleQueries = [ModuleAddressQuerySchema, ModuleSubscribeQuerySchema, ModuleManifestQuerySchema, ModuleStateQuerySchema]\n\nexport abstract class AbstractModule<TParams extends QueryableModuleParams = QueryableModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n  extends AbstractCreatable<TParams, TEventData>\n  implements QueryableModule<TParams, TEventData> {\n  static readonly allowRandomAccount: boolean = true\n  static readonly configSchemas: Schema[] = [ModuleConfigSchema]\n  static readonly defaultConfigSchema: Schema = ModuleConfigSchema\n  static override defaultLogger: Logger = new ConsoleLogger(LogLevel.warn)\n  static enableLazyLoad = false\n  static readonly labels: Labels = {}\n\n  protected static privateConstructorKey = Date.now().toString()\n\n  protected _account: AccountInstance | undefined\n\n  // cache manifest based on maxDepth\n  protected _cachedManifests = new LRUCache<number, ModuleManifestPayload>({ max: 10, ttl: 1000 * 60 * 5 })\n\n  protected _globalReentrancyMutex: Mutex | undefined\n\n  protected _lastError?: ModuleDetailsError\n\n  protected _moduleConfigQueryValidator: Queryable | undefined\n  protected _supportedQueryValidator: Queryable | undefined\n\n  private _busyCount = 0\n  private _logger: Logger | undefined | null = undefined\n\n  get account() {\n    return assertEx(this._account, () => 'Missing account')\n  }\n\n  get additionalSigners(): AccountInstance[] {\n    return this.params.additionalSigners ?? []\n  }\n\n  get address() {\n    return this.account.address\n  }\n\n  get allowAnonymous() {\n    return !!this.config.security?.allowAnonymous\n  }\n\n  get allowNameResolution() {\n    return this.params.allowNameResolution ?? true\n  }\n\n  get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n    return this.config.archiving\n  }\n\n  get archivist() {\n    return this.config.archivist\n  }\n\n  get config(): TParams['config'] & { schema: Schema } {\n    return { ...this.params.config, schema: this.params.config.schema ?? ModuleConfigSchema }\n  }\n\n  get dead() {\n    return this.status === 'error'\n  }\n\n  get ephemeralQueryAccountEnabled(): boolean {\n    return !!this.params.ephemeralQueryAccountEnabled\n  }\n\n  get globalReentrancyMutex() {\n    this._globalReentrancyMutex = this._globalReentrancyMutex ?? (this.reentrancy?.scope === 'global' ? new Mutex() : undefined)\n    return this._globalReentrancyMutex\n  }\n\n  get id() {\n    return this.modName ?? this.address\n  }\n\n  override get logger() {\n    // we use null to prevent a second round of not creating a logger\n    if (isUndefined(this._logger)) {\n      const logLevel = this.config.logLevel\n      const newLogger = this._logger ?? (this.params?.logger ? new IdLogger(this.params.logger, () => `${this.constructor.name}[${this.id}]`) : null)\n      this._logger = (isObject(newLogger) && isDefined(logLevel)) ? new LevelLogger(newLogger, logLevel) : newLogger\n    }\n    return this._logger ?? undefined\n  }\n\n  get modName() {\n    return this.config.name\n  }\n\n  get priority() {\n    return ObjectResolverPriority.Normal\n  }\n\n  get queries(): Schema[] {\n    return [...DefaultModuleQueries]\n  }\n\n  get reentrancy() {\n    return this.config.reentrancy\n  }\n\n  override get statusReporter() {\n    return this.params.statusReporter\n  }\n\n  get timestamp() {\n    return this.config.timestamp ?? false\n  }\n\n  protected get moduleConfigQueryValidator(): Queryable {\n    return assertEx(this._moduleConfigQueryValidator, () => 'ModuleConfigQueryValidator not initialized')\n  }\n\n  protected get supportedQueryValidator(): Queryable {\n    return assertEx(this._supportedQueryValidator, () => 'SupportedQueryValidator not initialized')\n  }\n\n  abstract get downResolver(): ModuleResolverInstance\n\n  abstract get upResolver(): ModuleResolverInstance\n\n  /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return */\n  static _getRootFunction(funcName: string) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    let anyThis = this as any\n    while (anyThis.__proto__[funcName]) {\n      anyThis = anyThis.__proto__\n    }\n    return anyThis[funcName]\n  }\n\n  static _noOverride(functionName: string) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const thisFunc = (this as any)[functionName]\n\n    const rootFunc = this._getRootFunction(functionName)\n    assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`)\n  }\n  /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return */\n\n  static override async createHandler<T extends CreatableInstance>(\n    inInstance: T,\n  ) {\n    const instance = (await super.createHandler(inInstance))\n    if (instance instanceof AbstractModule) {\n      if (this.configSchemas.length === 0) {\n        throw new Error(`No allowed config schemas for [${this.name}]`)\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n      const schema: Schema = instance.config.schema ?? this.defaultConfigSchema\n      const allowedSchemas: Schema[] = this.configSchemas\n\n      assertEx(this.isAllowedSchema(schema), () => `Bad Config Schema [Received ${schema}] [Expected ${JSON.stringify(allowedSchemas)}]`)\n    } else {\n      throw new TypeError(`Invalid instance type [${instance.constructor.name}] for [${this.name}]`)\n    }\n\n    return instance\n  }\n\n  static async determineAccount(params: {\n    account?: AccountInstance | 'random'\n    accountPath?: string\n    wallet?: WalletInstance\n  }): Promise<AccountInstance> {\n    return await determineAccount(params, this.allowRandomAccount)\n  }\n\n  static factory<TModule extends CreatableModuleInstance>(\n    this: CreatableModule<TModule>,\n    params?: Partial<TModule['params']>,\n  ): CreatableModuleFactory<TModule> {\n    return ModuleFactory.withParams<TModule>(this, params)\n  }\n\n  static isAllowedSchema(schema: Schema): boolean {\n    return this.configSchemas.includes(schema)\n  }\n\n  static override async paramsHandler<T extends AttachableModuleInstance<QueryableModuleParams, ModuleEventData>>(\n    inParams: Partial<T['params']> = {},\n  ) {\n    const superParams = await super.paramsHandler(inParams)\n    const params = {\n      ...superParams,\n      account: await this.determineAccount(superParams),\n      config: { schema: this.defaultConfigSchema, ...superParams.config },\n      logger: superParams.logger ?? this.defaultLogger,\n    } as T['params']\n    return params\n  }\n\n  /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return */\n  _getRootFunction(funcName: string) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    let anyThis = this as any\n    while (anyThis.__proto__[funcName]) {\n      anyThis = anyThis.__proto__\n    }\n    return anyThis[funcName]\n  }\n  /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return */\n\n  async busy<R>(closure: () => Promise<R>) {\n    if (this._busyCount <= 0) {\n      this._busyCount = 0\n      const args: ModuleBusyEventArgs = { busy: true, mod: this }\n      await this.emit('moduleBusy', args)\n    }\n    this._busyCount++\n    try {\n      return await closure()\n    } finally {\n      this._busyCount--\n      if (this._busyCount <= 0) {\n        this._busyCount = 0\n        const args: ModuleBusyEventArgs = { busy: false, mod: this }\n        await this.emit('moduleBusy', args)\n      }\n    }\n  }\n\n  override async createHandler() {\n    await super.createHandler()\n    assertEx(this.name === undefined || isModuleName(this.name), () => `Invalid module name: ${this.name}`)\n\n    if (this.params.account === 'random') {\n      this._account = await Account.random()\n    } else if (isAccountInstance(this.params.account)) {\n      this._account = this.params.account\n    }\n\n    assertEx(isAccountInstance(this._account), () => `Invalid account instance: ${JSON.stringify(this._account)}`)\n\n    this._supportedQueryValidator = new SupportedQueryValidator(this).queryable\n    this._moduleConfigQueryValidator = new ModuleConfigQueryValidator(this.config).queryable\n\n    if (!AbstractModule.enableLazyLoad) {\n      setTimeout(() => forget(this.start()), 200)\n    }\n  }\n\n  override emit<TEventName extends keyof TEventData = keyof TEventData, TEventArgs extends TEventData[TEventName] = TEventData[TEventName]>(\n    eventName: TEventName,\n    eventArgs: TEventArgs,\n  ) {\n    return super.emit(eventName, eventArgs)\n  }\n\n  isSupportedQuery(query: Schema, assert: boolean | string = false): boolean {\n    // check if ever supported\n    if (!this.queries.includes(query)) {\n      if (assert !== false) {\n        assertEx(false, () => `Query not supported [${isString(assert) ? assert : query}] on [${this.modName}, ${this.address}] (queries list)`)\n      }\n      return false\n    }\n    // check if config allows it\n    const supported = Array.isArray(this.config.allowedQueries) ? this.config.allowedQueries.includes(query) : true\n    if (assert !== false) {\n      assertEx(supported, () => `Query not supported [${isString(assert) ? assert : query}] on [${this.modName}, ${this.address}] (config)`)\n    }\n    return supported\n  }\n\n  previousHash(): Promisable<string | undefined> {\n    this._checkDead()\n    return this.account.previousHash\n  }\n\n  async query<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n    query: T,\n    payloads?: Payload[],\n    queryConfig?: TConfig,\n  ): Promise<ModuleQueryResult> {\n    this._checkDead()\n    this._noOverride('query')\n    return await this.spanAsync('query', async () => {\n      const sourceQuery = assertEx(isQueryBoundWitness(query) ? query : undefined, () => 'Unable to parse query')\n      return await this.busy(async () => {\n        const resultPayloads: Payload[] = []\n        const errorPayloads: ModuleError[] = []\n        const queryAccount = this.ephemeralQueryAccountEnabled ? await Account.random() : undefined\n\n        try {\n          await this.startedAsync('throw')\n          if (!this.allowAnonymous && query.addresses.length === 0) {\n            throw new Error(`Anonymous Queries not allowed, but running anyway [${this.modName}], [${this.address}]`)\n          }\n          if (queryConfig?.allowedQueries) {\n            assertEx(queryConfig?.allowedQueries.includes(sourceQuery.schema), () => `Query not allowed [${sourceQuery.schema}]`)\n          }\n          resultPayloads.push(...(await this.queryHandler(sourceQuery, payloads, queryConfig)))\n        } catch (ex) {\n          await handleErrorAsync(ex, async (err) => {\n            const error = err as ModuleDetailsError\n            this._lastError = error\n            // this.status = 'dead'\n            errorPayloads.push(\n              new ModuleErrorBuilder()\n                .meta({ $sources: [await PayloadBuilder.dataHash(sourceQuery)] })\n                .name(this.modName ?? '<Unknown>')\n                .query(sourceQuery.schema)\n                .details(error.details)\n                .message(error.message)\n                .build(),\n            )\n          })\n        }\n        if (this.timestamp) {\n          const timestamp = { schema: asSchema('network.xyo.timestamp', true), timestamp: Date.now() }\n          resultPayloads.push(timestamp)\n        }\n        const result = await this.bindQueryResult(sourceQuery, resultPayloads, queryAccount ? [queryAccount] : [], errorPayloads)\n        const args: ModuleQueriedEventArgs = {\n          mod: this, payloads, query: sourceQuery, result,\n        }\n        await this.emit('moduleQueried', args)\n        return result\n      })\n    }, { timeBudgetLimit: 200 })\n  }\n\n  async queryable<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n    query: T,\n    payloads?: Payload[],\n    queryConfig?: TConfig,\n  ): Promise<boolean> {\n    if (this.dead) {\n      return false\n    }\n    if (!(this.started('warn'))) return false\n    const configValidator\n      = queryConfig ? new ModuleConfigQueryValidator(Object.assign({}, this.config, queryConfig)).queryable : this.moduleConfigQueryValidator\n    const validators = [this.supportedQueryValidator, configValidator]\n\n    // eslint-disable-next-line @typescript-eslint/await-thenable\n    const results = await Promise.all(validators.map(validator => validator(query, payloads)))\n    for (const result of results) {\n      if (!result) {\n        return false\n      }\n    }\n    return true\n  }\n\n  /**\n   * Executes a function within a telemetry root span.\n   * @param name - The span name\n   * @param fn - The function to execute within the span\n   */\n  span<T>(name: string, fn: () => T): T {\n    return spanRoot(name, fn, this.tracer)\n  }\n\n  /**\n   * Executes an async function within a telemetry root span.\n   * @param name - The span name\n   * @param fn - The async function to execute within the span\n   * @param config - Optional span configuration\n   */\n  async spanAsync<T>(name: string, fn: () => Promise<T>, config: SpanConfig = {}): Promise<T> {\n    return await spanRootAsync(name, fn, {\n      ...config,\n      tracer: config.tracer ?? this.tracer,\n      logger: config.logger ?? this.defaultLogger,\n    })\n  }\n\n  protected _checkDead() {\n    if (this.dead) {\n      throw new DeadModuleError(this.id, this._lastError)\n    }\n  }\n\n  protected async archivistInstance(): Promise<ArchivistInstance | undefined>\n  protected async archivistInstance(required: true): Promise<ArchivistInstance>\n  protected async archivistInstance(required = false): Promise<ArchivistInstance | undefined> {\n    const archivist = this.archivist\n    if (isUndefined(archivist)) {\n      if (required) {\n        throw new Error('No archivist specified')\n      }\n      return undefined\n    }\n    const resolved = (await this.upResolver.resolve(archivist)) ?? (await this.downResolver.resolve(archivist))\n    if (required) {\n      assertEx(resolved, () => `Unable to resolve archivist [${archivist}]`)\n    }\n    return resolved ? asArchivistInstance(resolved, () => `Specified archivist is not an Archivist [${archivist}]`) : undefined\n  }\n\n  protected bindHashes(hashes: Hash[], schema: Schema[], account?: AccountInstance) {\n    // eslint-disable-next-line @typescript-eslint/no-misused-promises\n    return new PromiseEx((resolve) => {\n      const result = this.bindHashesInternal(hashes, schema, account)\n      resolve?.(result)\n      return result\n    }, account)\n  }\n\n  protected async bindHashesInternal(hashes: Hash[], schema: Schema[], account: AccountInstance = this.account): Promise<BoundWitness> {\n    const builder = new BoundWitnessBuilder().hashes(hashes, schema).signer(account)\n    const result: BoundWitness = (await builder.build())[0]\n    this.logger?.debug(`result: ${JSON.stringify(result, null, 2)}`)\n    return result\n  }\n\n  protected bindQuery<T extends Query>(\n    query: T,\n    payloads?: Payload[],\n    account?: AccountInstance,\n    additionalSigners?: AccountInstance[],\n  ): PromiseEx<[QueryBoundWitness, Payload[], Payload[]], AccountInstance> {\n    // eslint-disable-next-line @typescript-eslint/no-misused-promises\n    return new PromiseEx<[QueryBoundWitness, Payload[], Payload[]], 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[] = [],\n  ): Promise<[QueryBoundWitness, Payload[], Payload[]]> {\n    const accounts = [account, ...additionalSigners].filter(exists)\n    const builder = new QueryBoundWitnessBuilder().payloads(payloads).signers(accounts).query(query)\n\n    const [bw, payloadsOut, errors] = await builder.build()\n    return [bw, [...payloadsOut], errors]\n  }\n\n  protected async bindQueryResult<T extends Query>(\n    query: T,\n    payloads: Payload[],\n    additionalWitnesses: AccountInstance[] = [],\n    errors?: ModuleError[],\n  ): Promise<ModuleQueryResult> {\n    const queryDataHash = await PayloadBuilder.dataHash(query)\n    const builder = new BoundWitnessBuilder().payloads(payloads).errors(errors).sourceQuery(queryDataHash)\n    const witnesses = [this.account, ...additionalWitnesses].filter(exists)\n    builder.signers(witnesses)\n    const result = [\n      PayloadBuilder.omitPrivateStorageMeta((await builder.build())[0]),\n      PayloadBuilder.omitPrivateStorageMeta(payloads),\n      PayloadBuilder.omitPrivateStorageMeta(errors ?? []),\n    ] as ModuleQueryResult\n    if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n      forget(this.storeToArchivists(result.flat()))\n    }\n    return result\n  }\n\n  protected generateConfigAndAddress(_maxDepth?: number): Promisable<Payload[]> {\n    const config = this.config\n    const address: AddressPayload = { schema: AddressSchema, address: this.address }\n    const queries = this.queries.map((query) => {\n      return { schema: QuerySchema, query }\n    })\n    const configSchema: ConfigPayload = {\n      config: config.schema,\n      schema: ConfigSchema,\n    }\n    return ([config, configSchema, address, ...queries]).filter(exists)\n  }\n\n  protected async generateDescribe(): Promise<ModuleDescriptionPayload> {\n    const description: ModuleDescriptionPayload = {\n      address: this.address,\n      name: this.modName ?? `Unnamed ${this.constructor.name}`,\n      queries: this.queries,\n      schema: ModuleDescriptionSchema,\n    }\n\n    const discover = await this.generateConfigAndAddress()\n\n    description.children = (\n      discover?.map((payload) => {\n        const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n        return address == this.address ? undefined : address\n      }) ?? []\n    ).filter(exists)\n\n    return description\n  }\n\n  /** @deprecated use archivistInstance() instead */\n  protected async getArchivist(): Promise<ArchivistInstance | undefined> {\n    return await this.archivistInstance()\n  }\n\n  protected isAllowedArchivingQuery(schema: Schema): boolean {\n    const queries = this.archiving?.queries\n    if (queries) {\n      return queries.includes(schema)\n    }\n    return true\n  }\n\n  protected manifestHandler(_maxDepth = 1, _ignoreAddresses: XyoAddress[] = []): Promisable<ModuleManifestPayload> {\n    throw new Error('Not supported')\n  }\n\n  protected moduleAddressHandler(): Promisable<(AddressPreviousHashPayload | AddressPayload)[]> {\n    const address = this.address\n    const name = this.modName\n    const previousHash = this.account.previousHash\n    const moduleAccount = isDefined(name)\n      ? {\n          address, name, schema: AddressSchema,\n        }\n      : { address, schema: AddressSchema }\n    const moduleAccountPreviousHash = isDefined(previousHash)\n      ? {\n          address, previousHash, schema: AddressPreviousHashSchema,\n        }\n      : { address, schema: AddressSchema }\n    return [moduleAccount, moduleAccountPreviousHash]\n  }\n\n  protected async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n    query: T,\n    payloads?: Payload[],\n    queryConfig?: TConfig,\n  ): Promise<ModuleQueryHandlerResult> {\n    await this.startedAsync('throw')\n    const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(query, payloads)\n    const queryPayload = await wrapper.getQuery()\n    assertEx(await this.queryable(query, payloads, queryConfig))\n    const resultPayloads: Payload[] = []\n    switch (queryPayload.schema) {\n      case ModuleManifestQuerySchema: {\n        const typedQueryPayload = queryPayload as ModuleManifestQuery\n        resultPayloads.push(await this.manifestHandler(typedQueryPayload.maxDepth))\n        break\n      }\n      case ModuleAddressQuerySchema: {\n        resultPayloads.push(...(await this.moduleAddressHandler()))\n        break\n      }\n      case ModuleStateQuerySchema: {\n        resultPayloads.push(...(await this.stateHandler()))\n        break\n      }\n      case ModuleSubscribeQuerySchema: {\n        this.subscribeHandler()\n        break\n      }\n      default: {\n        throw new Error(`Unsupported Query [${(queryPayload as Payload).schema}]`)\n      }\n    }\n    return PayloadBuilder.omitPrivateStorageMeta(resultPayloads)\n  }\n\n  protected override async startHandler(): Promise<void> {\n    this.validateConfig()\n    await super.startHandler()\n  }\n\n  protected async stateHandler(): Promise<Payload[]> {\n    return [await this.manifestHandler(), ...(await this.generateConfigAndAddress()), await this.generateDescribe()]\n  }\n\n  protected override async stopHandler(): Promise<void> {\n    await super.stopHandler()\n    this._startPromise = undefined\n  }\n\n  protected subscribeHandler() {\n    return\n  }\n\n  protected validateConfig(config?: unknown, parents: string[] = []): boolean {\n    return Object.entries(config ?? this.config ?? {}).reduce((valid, [key, value]) => {\n      switch (typeof value) {\n        case 'function': {\n          this.logger?.warn(`Fields of type function not allowed in config [${parents?.join('.')}.${key}]`)\n          return false\n        }\n        case 'object': {\n          if (Array.isArray(value)) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return (\n\n              value.reduce(\n                (valid, value) =>\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                  this.validateConfig(value, [...parents, key]) && valid,\n                true,\n              ) && valid\n            )\n          }\n\n          if (!isSerializable(value)) {\n            this.logger?.warn(`Fields that are not serializable to JSON are not allowed in config [${parents?.join('.')}.${key}]`)\n            return false\n          }\n          return value ? this.validateConfig(value, [...parents, key]) && valid : true\n        }\n        default: {\n          return valid\n        }\n      }\n    }, true)\n  }\n\n  protected abstract certifyParents(): Promise<Payload[]>\n  protected abstract storeToArchivists(payloads: Payload[]): Promise<Payload[]>\n}\n", "import {\n  assertEx,\n  isDefined, isString, isUndefined,\n} from '@ariestools/sdk'\nimport type { AccountInstance, WalletInstance } from '@xyo-network/sdk-protocol'\nimport { Account } from '@xyo-network/sdk-protocol'\n\nexport interface DetermineAccountFromAccountParams {\n  account: AccountInstance | 'random'\n  accountPath?: never\n  wallet?: never\n}\n\nexport interface DetermineAccountFromWalletParams {\n  account?: never\n  accountPath?: string\n  wallet: WalletInstance\n}\n\nexport interface DetermineRandomParams {}\n\nexport type DetermineAccountParams = DetermineAccountFromAccountParams | DetermineAccountFromWalletParams | DetermineRandomParams\n\nconst isDetermineAccountFromAccountParams = (params: DetermineAccountParams): params is DetermineAccountFromAccountParams => {\n  assertEx(isUndefined((params as DetermineAccountFromWalletParams).accountPath), () => 'accountPath may not be provided when account is provided')\n  return isDefined((params as DetermineAccountFromAccountParams).account)\n}\n\nconst isDetermineAccountFromWalletParams = (params: DetermineAccountParams): params is DetermineAccountFromWalletParams => {\n  return isDefined((params as DetermineAccountFromWalletParams).wallet)\n}\n\nexport async function determineAccount(params: DetermineAccountParams, allowRandomAccount = true): Promise<AccountInstance> {\n  if (isDetermineAccountFromAccountParams(params)) {\n    if (params.account === 'random') {\n      assertEx(allowRandomAccount, () => 'Random address not allowed')\n      return await Account.random()\n    }\n    return params.account\n  }\n\n  if (isDetermineAccountFromWalletParams(params)) {\n    return assertEx(\n      isString(params.accountPath) ? await params.wallet.derivePath(params.accountPath) : params.wallet,\n      () => 'Failed to derive account from path',\n    )\n  }\n\n  // this should eventually be removed/thrown\n  console.warn('AbstractModule.determineAccount: No account or wallet provided - Creating Random account')\n  return await Account.random()\n}\n", "import type { Hash, JsonValue } from '@ariestools/sdk'\nimport type { ModuleError, Schema } from '@xyo-network/sdk-protocol'\nimport { ModuleErrorSchema, PayloadBuilder } from '@xyo-network/sdk-protocol'\n\nexport class ModuleErrorBuilder extends PayloadBuilder<ModuleError> {\n  _details?: JsonValue\n  _message?: string\n  _name?: string\n  _query?: Hash | Schema\n  constructor() {\n    super({ schema: ModuleErrorSchema })\n  }\n\n  override build(): ModuleError {\n    this.fields({\n      details: this._details,\n      message: this._message,\n      name: this._name,\n      query: this._query,\n    })\n    return super.build()\n  }\n\n  details(details?: JsonValue) {\n    this._details = details\n    return this\n  }\n\n  message(message: string) {\n    this._message = message\n    return this\n  }\n\n  name(name: string) {\n    this._name = name\n    return this\n  }\n\n  query(query: Hash | Schema) {\n    this._query = query\n    return this\n  }\n}\n", "import { QueryBoundWitnessWrapper } from '@xyo-network/sdk-protocol'\nimport {\n  asSchema, type Schema, type XyoAddress,\n} from '@xyo-network/sdk-protocol'\n\nimport type {\n  AnyConfigSchema, CosigningAddressSet, ModuleConfig, ModuleQueries,\n} from '#module-model'\n\nimport type { Queryable, QueryValidator } from './QueryValidator.ts'\n\nexport type SortedPipedAddressesString = string\n\nconst delimiter = ''\n\nexport class ModuleConfigQueryValidator<TConfig extends AnyConfigSchema<ModuleConfig>> implements QueryValidator {\n  protected allowed: Record<Schema, SortedPipedAddressesString[]> = {}\n  protected disallowed: Record<Schema, SortedPipedAddressesString[]> = {}\n  protected readonly hasAllowedRules: boolean\n  protected readonly hasDisallowedRules: boolean\n  protected readonly hasRules: boolean\n\n  constructor(config?: TConfig) {\n    if (config?.security?.allowed) {\n      for (const [schema, addresses] of Object.entries(config.security?.allowed)) {\n        const typedSchema = asSchema(schema, true)\n        this.allowed[typedSchema] = addresses.map(toAddressesString)\n      }\n    }\n    if (config?.security?.disallowed) {\n      for (const [schema, addresses] of Object.entries(config.security?.disallowed)) {\n        const typedSchema = asSchema(schema, true)\n        this.disallowed[typedSchema] = addresses.map(toAddressesString)\n      }\n    }\n    this.hasAllowedRules = Object.keys(this.allowed).length > 0\n    this.hasDisallowedRules = Object.keys(this.disallowed).length > 0\n    this.hasRules = this.hasAllowedRules || this.hasDisallowedRules\n  }\n\n  queryable: Queryable = async (query, payloads) => {\n    if (!this.hasRules) return true\n    const addresses = query.addresses\n    if (addresses.length === 0) return false\n    const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(query, payloads)\n    const schema = (await wrapper.getQuery()).schema\n    return this.queryAllowed(schema, addresses) && !this.queryDisallowed(schema, addresses)\n  }\n\n  protected queryAllowed = (schema: Schema, addresses: XyoAddress[]): boolean => {\n    if (!this.hasAllowedRules) return true\n    // All cosigners must sign\n    if (addresses.length > 1) {\n      const signatories = toAddressesString(addresses)\n      const validCosigners = this.allowed?.[schema]?.includes(signatories)\n      if (validCosigners) return true\n    }\n    // OR all signers have to be allowed individually\n    return addresses.every(address => this.allowed?.[schema]?.includes(address) || false)\n  }\n\n  protected queryDisallowed = (schema: Schema, addresses: string[]): boolean => {\n    if (!this.hasDisallowedRules) return false\n    return addresses.some(address => this.disallowed?.[schema]?.includes(address))\n  }\n}\n\n// TODO: Handle 0x prefix\nconst toAddressesString = (addresses: string | CosigningAddressSet): SortedPipedAddressesString => {\n  return Array.isArray(addresses)\n    ? addresses\n        .toSorted()\n        .map(address => address.toLowerCase())\n        .join(delimiter)\n    : addresses.toLowerCase()\n}\n", "import type { Payload, QueryBoundWitness } from '@xyo-network/sdk-protocol'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { ModuleQueries, QueryableModule } from '#module-model'\n\nimport type { Queryable, QueryValidator } from './QueryValidator.ts'\n\nexport const isQuerySupportedByModule = async <T extends QueryBoundWitness = QueryBoundWitness>(\n  mod: QueryableModule,\n  query: T,\n  payloads?: Payload[],\n): Promise<boolean> => {\n  const wrapper = QueryBoundWitnessWrapper.parseQuery<ModuleQueries>(query, payloads)\n  const schema = (await wrapper.getQuery()).schema\n  return mod.queries.includes(schema)\n}\n\nexport class SupportedQueryValidator implements QueryValidator {\n  protected readonly mod: QueryableModule\n  constructor(mod: QueryableModule) {\n    this.mod = mod\n  }\n\n  queryable: Queryable = (query, payloads) => {\n    return isQuerySupportedByModule(this.mod, query, payloads)\n  }\n}\n", "import type {\n  Promisable,\n  TypeCheck,\n  TypedValue,\n} from '@ariestools/sdk'\nimport { exists, isDefined } from '@ariestools/sdk'\nimport type {\n  AccountInstance, ModuleManifestPayload, Payload, Query, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { ModuleManifestPayloadSchema } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport { asArchivistInstance } from '#archivist-model'\nimport type {\n  AddressPayload,\n  AddressPreviousHashPayload,\n  AttachableModuleInstance,\n  ModuleEventData,\n  ModuleFilterOptions,\n  ModuleIdentifier,\n  ModuleInstance,\n  ModuleInstanceParams,\n  ModuleManifestQuery,\n  ModuleName,\n  ModuleNameResolver,\n  ModuleQueryResult,\n  ModuleStateQuery,\n  ObjectFilterOptions,\n} from '#module-model'\nimport {\n  duplicateModules,\n  ModuleManifestQuerySchema,\n  ModuleStateQuerySchema,\n} from '#module-model'\nimport type { ResolveHelperConfig } from '#module-resolver'\nimport {\n  CompositeModuleResolver,\n  resolveAll,\n  resolveAllDown,\n  resolveAllUp,\n  ResolveHelper,\n  resolvePathToInstance,\n} from '#module-resolver'\nimport type { NodeInstance } from '#node-model'\nimport { asNodeInstance } from '#node-model'\n\nimport { AbstractModule } from './AbstractModule.ts'\n\nfunction filterIdentity<T extends TypedValue>(mod?: ModuleInstance, identityFunc?: TypeCheck<T>): T\nfunction filterIdentity<T extends TypedValue>(mods?: ModuleInstance[], identityFunc?: TypeCheck<T>): T[]\nfunction filterIdentity<T extends TypedValue>(mod?: ModuleInstance | ModuleInstance[], identityFunc?: TypeCheck<T>) {\n  if (Array.isArray(mod)) {\n    if (identityFunc) {\n      return mod.map(m => identityFunc(m)).filter(exists)\n    }\n    return mod\n  }\n  return (mod ? (identityFunc ? identityFunc(mod) : true) : false) ? mod : undefined\n}\n\nexport abstract class AbstractModuleInstance<TParams extends ModuleInstanceParams = ModuleInstanceParams, TEventData extends ModuleEventData = ModuleEventData>\n  extends AbstractModule<TParams, TEventData>\n  implements AttachableModuleInstance<TParams, TEventData>, ModuleNameResolver {\n  // switches between old and new resolution system\n  static readonly useNewResolver = false\n\n  private _downResolver?: CompositeModuleResolver\n  private _parents: NodeInstance[] = []\n  private _privateResolver?: CompositeModuleResolver\n  private _upResolver?: CompositeModuleResolver\n\n  get downResolver() {\n    this._downResolver\n      = this._downResolver\n        ?? new CompositeModuleResolver({\n          allowNameResolution: this.allowNameResolution,\n          moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n          root: this,\n        })\n    return this._downResolver\n  }\n\n  override get modName() {\n    return super.modName\n  }\n\n  get moduleIdentifierTransformers() {\n    return this.params.moduleIdentifierTransformers ?? ResolveHelper.transformers\n  }\n\n  get privateResolver() {\n    this._privateResolver\n      = this._privateResolver\n        ?? new CompositeModuleResolver({\n          allowNameResolution: this.allowNameResolution,\n          moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n          root: this,\n        })\n    return this._privateResolver\n  }\n\n  get root() {\n    return this\n  }\n\n  get timeBudget() {\n    return this.config.timeBudget\n  }\n\n  get upResolver() {\n    this._upResolver\n      = this._upResolver\n        ?? new CompositeModuleResolver({\n          allowNameResolution: this.allowNameResolution,\n          moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n          root: this,\n        })\n    return this._upResolver\n  }\n\n  addParent(mod: ModuleInstance) {\n    const hasExistingEntry = this._parents.some(parent => parent.address === mod.address)\n    if (!hasExistingEntry) {\n      this._parents.push(asNodeInstance(mod, 'Only NodeInstances can be parents', { required: true }))\n    }\n  }\n\n  async certifyParents(): Promise<Payload[]> {\n    const parents = await this.parents()\n    return (\n      await Promise.all(\n        parents.map(async (parent) => {\n          const [bw, payloads, errors] = await parent.certifyQuery(this.address)\n          return errors.length === 0 ? [bw, ...payloads] : []\n        }),\n      )\n    ).flat()\n  }\n\n  override async createHandler() {\n    await super.createHandler()\n    const addToResolvers = this.params.addToResolvers ?? true\n    if (addToResolvers) {\n      this.upResolver.add(this)\n      this.downResolver.add(this)\n    }\n  }\n\n  manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n    this._checkDead()\n    return this.busy(async () => {\n      return await this.manifestHandler(maxDepth)\n    })\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<ModuleManifestQuery, Payload, ModuleManifestPayload>(queryPayload, undefined, account)\n  }\n\n  moduleAddress(): Promise<(AddressPayload | AddressPreviousHashPayload)[]> {\n    this._checkDead()\n    return this.busy(async () => {\n      return await this.moduleAddressHandler()\n    })\n  }\n\n  parents(): Promisable<NodeInstance[]> {\n    return this._parents\n  }\n\n  privateChildren(): Promisable<ModuleInstance[]> {\n    return [...this.params.privateChildren ?? []]\n  }\n\n  publicChildren(): Promisable<ModuleInstance[]> {\n    return [...this.params.publicChildren ?? []]\n  }\n\n  removeParent(address: XyoAddress) {\n    this._parents = this._parents.filter(item => item.address !== address)\n  }\n\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  async resolve<T extends ModuleInstance = ModuleInstance>(\n    id: ModuleIdentifier = '*',\n    options: ModuleFilterOptions<T> = {},\n  ): Promise<T | T[] | undefined> {\n    if (AbstractModuleInstance.useNewResolver) {\n      if (id === '*') {\n        const { maxDepth = 10, direction } = options\n        if (direction === 'down') {\n          return filterIdentity<T>((await resolveAllDown(this, maxDepth)) ?? [], options.identity)\n        }\n        if (direction === 'up') {\n          return filterIdentity<T>(await resolveAllUp(this, maxDepth) ?? [], options.identity)\n        }\n        return filterIdentity<T>(await resolveAll(this, maxDepth) ?? [], options.identity)\n      } else if (typeof id === 'string') {\n        return filterIdentity<T>(await resolvePathToInstance(this, id, true), options.identity)\n      } else {\n        throw new TypeError('Invalid id type')\n      }\n    } else {\n      const config: ResolveHelperConfig = {\n        address: this.address,\n        dead: this.dead,\n        downResolver: this.downResolver,\n        logger: this.logger,\n        mod: this,\n        transformers: this.moduleIdentifierTransformers,\n        upResolver: this.upResolver,\n      }\n      if (id === '*') {\n        return filterIdentity<T>(await ResolveHelper.resolve(config, '*', options) ?? [], options.identity)\n      }\n      return filterIdentity<T>(await ResolveHelper.resolve(config, id, options), options.identity)\n    }\n  }\n\n  resolveIdentifier(id: ModuleIdentifier, options?: ObjectFilterOptions): Promise<XyoAddress | undefined> {\n    const { direction = 'all' } = options ?? {}\n    switch (direction) {\n      case 'down': {\n        return this.downResolver.resolveIdentifier(id, options)\n      }\n      default: {\n        const mutatedOptions = { ...options, direction: 'all' } as ObjectFilterOptions\n        return this.upResolver.resolveIdentifier(id, mutatedOptions)\n      }\n    }\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    return (\n      (await this.privateResolver.resolve(id, options))\n      ?? (await this.upResolver.resolve(id, options))\n      ?? (await this.downResolver.resolve(id, options))\n    )\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  state() {\n    this._checkDead()\n    return this.busy(async () => {\n      return await this.stateHandler()\n    })\n  }\n\n  async stateQuery(account: AccountInstance): Promise<ModuleQueryResult> {\n    const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n    return await this.sendQueryRaw(queryPayload, undefined, account)\n  }\n\n  subscribe(_queryAccount?: AccountInstance) {\n    this._checkDead()\n    return this.subscribeHandler()\n  }\n\n  protected override async manifestHandler(maxDepth = 1, _ignoreAddresses: XyoAddress[] = []): Promise<ModuleManifestPayload> {\n    const cachedResult = this._cachedManifests.get(maxDepth)\n    if (cachedResult) {\n      return cachedResult\n    }\n    const modName = this.modName ?? '<Anonymous>'\n    const children = await this.publicChildren()\n    const childAddressToName: Record<XyoAddress, ModuleName | null> = {}\n    for (const child of children) {\n      if (child.address !== this.address) {\n        childAddressToName[child.address] = child.modName ?? null\n      }\n    }\n    const result = {\n      config: { name: modName, ...this.config },\n      name: modName,\n      schema: ModuleManifestPayloadSchema,\n      status: { address: this.address, children: childAddressToName },\n    }\n    this._cachedManifests.set(maxDepth, result)\n    return result\n  }\n\n  protected async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n    const archivists = this.archiving?.archivists\n    if (!archivists) return []\n    const resolved = await Promise.all(archivists.map(archivist => this.resolve(archivist)))\n    return (resolved.map(mod => asArchivistInstance(mod))).filter(exists)\n  }\n\n  protected async sendQuery<T extends Query, P extends Payload = Payload, R extends Payload = Payload>(\n    queryPayload: T,\n    payloads?: P[],\n    account?: AccountInstance,\n  ): Promise<R[]> {\n    const queryResults = await this.sendQueryRaw(queryPayload, payloads, account)\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, this.additionalSigners)\n\n    // Send them off\n    return (await this.query(query[0], query[1])) as ModuleQueryResult<R>\n  }\n\n  protected override startHandler() {\n    this._checkDead()\n    return this.busy(async () => {\n      if (this.status === 'started' || this.status === 'creating') {\n        return\n      }\n      await super.startHandler()\n    })\n  }\n\n  protected async storeToArchivists(payloads: Payload[]): Promise<Payload[]> {\n    try {\n      const archivists = await this.resolveArchivingArchivists()\n      const results = await Promise.all(\n        // eslint-disable-next-line @typescript-eslint/await-thenable\n        archivists.map((archivist) => {\n          return archivist.insert?.(payloads)\n        }),\n      )\n      return results.map(([bw]) => bw)\n    } catch (ex) {\n      const error = ex as Error\n      this.logger?.error(`Error storing to archivists: ${error.message}`)\n      return []\n    }\n  }\n}\n", "import type {\n  CreatableName, CreatableStatus, Logger,\n} from '@ariestools/sdk'\n\nimport type { ModuleStatusReporter } from '#module-model'\n\nexport class LoggerModuleStatusReporter implements ModuleStatusReporter {\n  protected logger: Logger\n\n  protected statusMap: Record<CreatableName, CreatableStatus> = {}\n\n  constructor(logger: Logger) {\n    this.logger = logger\n  }\n\n  report(name: CreatableName, status: CreatableStatus, progress?: number | Error): void {\n    this.statusMap[name] = status\n    const starting = (Object.entries(this.statusMap).map(([, value]): number => value === 'starting' ? 1 : 0)).reduce((a, b) => a + b, 0)\n    const started = (Object.entries(this.statusMap).map(([, value]): number => value === 'started' ? 1 : 0)).reduce((a, b) => a + b, 0)\n    this.logger.log(`${started}/${starting + started} ${name} status: ${status}`, { progress })\n  }\n}\n"],
  "mappings": "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",
  "names": ["assertEx", "isDefined", "isString", "isUndefined", "Account", "asSchema", "PayloadBuilder", "QueryBoundWitnessWrapper", "QueryBoundWitnessWrapper", "assertEx", "isUndefined", "isDefined", "Account", "isString", "PayloadBuilder", "asSchema", "QueryBoundWitnessWrapper", "valid", "value", "exists", "isDefined", "asArchivistInstance", "ModuleManifestQuerySchema", "ModuleStateQuerySchema", "exists", "ModuleManifestQuerySchema", "ModuleStateQuerySchema", "asArchivistInstance", "isDefined"]
}
