{
  "version": 3,
  "sources": ["../../src/modules/archivist-generic/Archivist.ts", "../../src/modules/archivist-generic/Config.ts"],
  "sourcesContent": ["import type {\n  BrandedHash, Hash, Promisable, PromisableArray,\n} from '@ariestools/sdk'\nimport {\n  assertEx,\n  exists,\n  fulfilled,\n} from '@ariestools/sdk'\nimport type {\n  AccountInstance, BoundWitness,\n  Payload, Schema, WithStorageMeta,\n} from '@xyo-network/sdk-protocol'\nimport { Account } from '@xyo-network/sdk-protocol'\n\nimport { AbstractArchivist, StorageClassLabel } from '#archivist-abstract'\nimport type {\n  ArchivistDriver,\n  ArchivistInsertQuery,\n  ArchivistModuleEventData,\n  ArchivistNextOptions,\n  ArchivistParams,\n  ArchivistSnapshotPayload,\n  AttachableArchivistInstance,\n} from '#archivist-model'\nimport {\n  ArchivistAllQuerySchema,\n  ArchivistClearQuerySchema,\n  ArchivistCommitQuerySchema,\n  ArchivistDeleteQuerySchema,\n  ArchivistInsertQuerySchema,\n  ArchivistNextQuerySchema,\n} from '#archivist-model'\nimport type { AnyConfigSchema, ModuleInstance } from '#module-model'\nimport { creatableModule } from '#module-model'\n\nimport type { GenericArchivistConfig } from './Config.ts'\nimport { GenericArchivistConfigSchema } from './Config.ts'\n\nexport interface GenericArchivistParams<TConfig extends AnyConfigSchema<GenericArchivistConfig> = AnyConfigSchema<GenericArchivistConfig>>\n  extends ArchivistParams<TConfig> {\n  driver?: ArchivistDriver<Hash, Payload, WithStorageMeta<Payload>>\n}\n\n@creatableModule()\nexport class GenericArchivist<\n  TParams extends GenericArchivistParams<AnyConfigSchema<GenericArchivistConfig>> = GenericArchivistParams,\n  TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n>\n  extends AbstractArchivist<TParams, TEventData>\n  implements AttachableArchivistInstance, ModuleInstance {\n  static override readonly configSchemas: Schema[] = [...super.configSchemas, GenericArchivistConfigSchema]\n  static override readonly defaultConfigSchema: Schema = GenericArchivistConfigSchema\n  static override readonly labels: {\n    'network.xyo.storage.class': string\n  } = { ...super.labels, [StorageClassLabel]: 'generic' }\n\n  override get queries(): Schema[] {\n    return [\n      ArchivistAllQuerySchema,\n      ArchivistDeleteQuerySchema,\n      ArchivistClearQuerySchema,\n      ArchivistInsertQuerySchema,\n      ArchivistCommitQuerySchema,\n      ArchivistNextQuerySchema,\n      ...super.queries,\n    ]\n  }\n\n  protected get driver(): ArchivistDriver<BrandedHash, Payload, WithStorageMeta<Payload>> {\n    return assertEx(this.params.driver, () => 'Driver is not set')\n  }\n\n  static async from(payloads: Payload[], account?: AccountInstance): Promise<GenericArchivist> {\n    const archivist = await GenericArchivist.create({ account: account ?? await Account.random() })\n    await archivist.insert(payloads)\n    return archivist\n  }\n\n  protected override allHandler(): Promisable<WithStorageMeta<Payload>[]> {\n    return this.driver.all()\n  }\n\n  protected override clearHandler(): Promisable<void> {\n    return this.driver.clear()\n  }\n\n  protected override async commitHandler(): Promise<BoundWitness[]> {\n    const payloads = assertEx(await this.allHandler(), () => 'Nothing to commit')\n    const settled = await Promise.allSettled(\n      Object.values((await this.parentArchivists()).commit ?? [])?.map(async (parent) => {\n        const queryPayload: ArchivistInsertQuery = { schema: ArchivistInsertQuerySchema }\n        const query = await this.bindQuery(queryPayload, payloads)\n        return (await parent?.query(query[0], query[1]))?.[0]\n      }).filter(exists),\n    )\n    await this.clearHandler()\n    return settled.filter(fulfilled).map(result => result.value).filter(exists)\n  }\n\n  protected override deleteHandler(hashes: Hash[]): Promise<WithStorageMeta<Payload>[]> {\n    return this.driver.delete(hashes)\n  }\n\n  protected override getHandler(hashes: Hash[]): Promisable<WithStorageMeta<Payload>[]> {\n    return this.driver.get(hashes)\n  }\n\n  protected override insertHandler(payloads: WithStorageMeta<Payload>[]): WithStorageMeta<Payload>[] {\n    return this.driver.insert(payloads)\n  }\n\n  protected override nextHandler(options?: ArchivistNextOptions): Promisable<WithStorageMeta<Payload>[]> {\n    return this.driver.next(options)\n  }\n\n  protected override payloadCountHandler(): number {\n    return this.driver.count()\n  }\n\n  protected override snapshotHandler(): PromisableArray<ArchivistSnapshotPayload<WithStorageMeta<Payload>, Hash>> {\n    throw new Error('Snapshot is not supported by GenericArchivist')\n  }\n}\n", "import type { EmptyObject, WithAdditional } from '@ariestools/sdk'\nimport {\n  zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport {\n  asSchema, type Payload, type Schema,\n} from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nimport type { ArchivistConfig } from '#archivist-model'\nimport { ArchivistConfigZod } from '#archivist-model'\n\nexport const GenericArchivistConfigSchema: 'network.xyo.archivist.generic.config' & {\n  readonly __schema: true\n} = asSchema('network.xyo.archivist.generic.config', true)\nexport type GenericArchivistConfigSchema = typeof GenericArchivistConfigSchema\n\nexport const GenericArchivistConfigZod: z.ZodMiniObject<\n  & Omit<(typeof ArchivistConfigZod)['shape'], 'schema'>\n  & {\n    max: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n    schema: z.ZodMiniLiteral<GenericArchivistConfigSchema>\n  },\n  z.core.$strip\n> = z.extend(ArchivistConfigZod, {\n  max: z.optional(z.number()),\n  schema: z.literal(GenericArchivistConfigSchema),\n})\n\nexport type GenericArchivistConfigBase = z.infer<typeof GenericArchivistConfigZod>\n\nexport const isGenericArchivistConfig: ReturnType<typeof zodIsFactory<GenericArchivistConfigBase>> = zodIsFactory(GenericArchivistConfigZod)\nexport const asGenericArchivistConfig: ReturnType<typeof zodAsFactory<GenericArchivistConfigBase>> = zodAsFactory(GenericArchivistConfigZod, 'asGenericArchivistConfig')\nexport const toGenericArchivistConfig: ReturnType<typeof zodToFactory<GenericArchivistConfigBase>> = zodToFactory(GenericArchivistConfigZod, 'toGenericArchivistConfig')\n\nexport type GenericArchivistConfig<TConfig extends Payload | EmptyObject | void = void, TSchema extends Schema | void = void> = ArchivistConfig<\n  WithAdditional<\n    {\n      max?: number\n    },\n    TConfig\n  >,\n  TSchema extends Schema ? TSchema : GenericArchivistConfigSchema | ArchivistConfig['schema']\n>\n"],
  "mappings": "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",
  "names": []
}
