@hey-api/openapi-ts
Version:
🌀 OpenAPI to TypeScript codegen. Production-grade SDKs, Zod schemas, TanStack Query hooks, and 20+ plugins. Used by Vercel, OpenCode, and PayPal.
1 lines • 31.4 kB
Source Map (JSON)
{"version":3,"file":"src-BeNy9O9X.mjs","names":["createClient","ms","pCreateClient"],"sources":["../src/generate/output.ts","../src/createClient.ts","../src/generate.ts","../src/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport fsPromises from 'node:fs/promises';\nimport path from 'node:path';\n\nimport type { Context } from '@hey-api/shared';\nimport { IntentContext } from '@hey-api/shared';\n\nimport { getTypedConfig } from '../config/utils';\nimport { getClientPlugin } from '../plugins/@hey-api/client-core/utils';\nimport { generateClientBundle } from './client';\n\nexport async function generateOutput(context: Context): Promise<{ fileCount: number }> {\n const outputPath = path.resolve(context.config.output.path);\n\n if (context.config.output.clean) {\n if (fs.existsSync(outputPath)) {\n fs.rmSync(outputPath, { force: true, recursive: true });\n }\n }\n\n const config = getTypedConfig(context);\n\n const client = getClientPlugin(config);\n if ('bundle' in client.config && client.config.bundle && !config.dryRun) {\n // not proud of this one\n // @ts-expect-error\n config._FRAGILE_CLIENT_BUNDLE_RENAMED = generateClientBundle({\n header: config.output.header,\n module: config.output.module,\n outputPath,\n // @ts-expect-error\n plugin: client,\n project: context.gen,\n });\n }\n\n for (const plugin of context.registerPlugins()) {\n await plugin.run();\n }\n\n context.gen.plan();\n\n const ctx = new IntentContext(context.spec);\n for (const intent of context.intents) {\n await intent.run(ctx);\n }\n\n let fileCount = 0;\n const writes: Promise<void>[] = [];\n for (const file of context.gen.render()) {\n const filePath = path.resolve(outputPath, file.path);\n const dir = path.dirname(filePath);\n if (!context.config.dryRun) {\n writes.push(\n fsPromises\n .mkdir(dir, { recursive: true })\n .then(() => fsPromises.writeFile(filePath, file.content, { encoding: 'utf8' })),\n );\n }\n fileCount++;\n }\n await Promise.all(writes);\n\n const { source } = context.config.output;\n if (source.enabled) {\n const sourcePath = source.path === null ? undefined : path.resolve(outputPath, source.path);\n if (!context.config.dryRun && sourcePath && sourcePath !== outputPath) {\n await fsPromises.mkdir(sourcePath, { recursive: true });\n }\n const serialized = await source.serialize(context.spec);\n // TODO: handle yaml (convert before writing)\n if (!context.config.dryRun && sourcePath) {\n await fsPromises.writeFile(\n path.resolve(sourcePath, `${source.fileName}.${source.extension}`),\n serialized,\n { encoding: 'utf8' },\n );\n fileCount++;\n }\n if (source.callback) {\n await source.callback(serialized);\n }\n }\n\n return { fileCount };\n}\n","import path from 'node:path';\n\nimport { type Logger, Project } from '@hey-api/codegen-core';\nimport { $RefParser, ResolverError } from '@hey-api/json-schema-ref-parser';\nimport type { Input, OpenApi, WatchValues } from '@hey-api/shared';\nimport {\n applyNaming,\n buildGraph,\n compileInputPath,\n Context,\n getSpec,\n InputError,\n logInputPaths,\n parseOpenApiSpec,\n patchOpenApiSpec,\n postprocessOutput,\n} from '@hey-api/shared';\nimport { format as ms } from '@lukeed/ms';\nimport colors from 'ansi-colors';\n\nimport { postProcessors } from './config/output/postprocess';\nimport type { Config } from './config/types';\nimport { generateOutput } from './generate/output';\nimport { TypeScriptRenderer } from './ts-dsl';\n\nexport async function createClient({\n config,\n dependencies,\n jobIndex,\n logger,\n watches: _watches,\n}: {\n config: Config;\n dependencies: Record<string, string>;\n jobIndex: number;\n logger: Logger;\n /**\n * Always undefined on the first run, defined on subsequent runs.\n */\n watches?: ReadonlyArray<WatchValues>;\n}): Promise<Context | undefined> {\n const watches: ReadonlyArray<WatchValues> =\n _watches ||\n Array.from({ length: config.input.length }, () => ({\n headers: new Headers(),\n }));\n\n const jobStart = Date.now();\n const inputPaths = config.input.map((input) => compileInputPath(input));\n\n // on first run, print the message as soon as possible\n if (config.logs.level !== 'silent' && !_watches) {\n logInputPaths(inputPaths, jobIndex);\n }\n\n const getSpecData = async (input: Input, index: number) => {\n const eventSpec = logger.timeEvent('spec');\n const { arrayBuffer, error, resolvedInput, response } = await getSpec({\n fetchOptions: input.fetch,\n inputPath: inputPaths[index]!.path,\n timeout: input.watch.timeout,\n watch: watches[index]!,\n });\n eventSpec.timeEnd();\n\n // throw on first run if there's an error to preserve user experience\n // if in watch mode, subsequent errors won't throw to gracefully handle\n // cases where server might be reloading\n if (error && !_watches) {\n const text = await response.text().catch(() => '');\n const message = `Request failed with status ${response.status}: ${text || response.statusText}`;\n // Handle 4xx client errors as input errors (bad URL, bad API key, etc.)\n if (response.status >= 400 && response.status < 500) {\n const statusText = response.statusText || 'Unknown';\n const originalError = new Error(message) as Error & { source?: string };\n originalError.source = String(inputPaths[index]!.path);\n throw new InputError(\n `Input request failed: ${response.status} ${statusText}`,\n originalError,\n );\n }\n // For 5xx server errors, keep the generic error (could be a bug)\n throw new Error(message);\n }\n\n return { arrayBuffer, resolvedInput };\n };\n const specData = (\n await Promise.all(config.input.map((input, index) => getSpecData(input, index)))\n ).filter((data) => data.arrayBuffer || data.resolvedInput);\n\n let context: Context | undefined;\n\n if (specData.length) {\n const refParser = new $RefParser();\n let data: unknown;\n try {\n data =\n specData.length > 1\n ? await refParser.bundleMany({\n arrayBuffer: specData.map((data) => data.arrayBuffer!),\n pathOrUrlOrSchemas: [],\n resolvedInputs: specData.map((data) => data.resolvedInput!),\n })\n : await refParser.bundle({\n arrayBuffer: specData[0]!.arrayBuffer,\n pathOrUrlOrSchema: undefined,\n resolvedInput: specData[0]!.resolvedInput!,\n });\n } catch (err) {\n if (err instanceof ResolverError && err.ioErrorCode === 'ENOENT') {\n throw new InputError('Input file not found', err);\n }\n throw err;\n }\n\n // on subsequent runs in watch mode, print the message only if we know we're\n // generating the output\n if (config.logs.level !== 'silent' && _watches) {\n console.clear();\n logInputPaths(inputPaths, jobIndex);\n }\n\n const eventInputPatch = logger.timeEvent('input.patch');\n await patchOpenApiSpec({ patchOptions: config.parser.patch, spec: data });\n eventInputPatch.timeEnd();\n\n const eventParser = logger.timeEvent('parser');\n const header = config.output.header;\n // TODO: allow overriding via config\n const project = new Project({\n defaultFileName: 'index',\n fileName: (base) => {\n const name = applyNaming(base, config.output.fileName);\n const { suffix } = config.output.fileName;\n if (!suffix) {\n return name;\n }\n return name === 'index' || name.endsWith(suffix) ? name : `${name}${suffix}`;\n },\n nameConflictResolvers: config.output.nameConflictResolver\n ? {\n typescript: config.output.nameConflictResolver,\n }\n : undefined,\n renderers: [\n new TypeScriptRenderer({\n header: (ctx) => {\n const defaultValue = ['// This file is auto-generated by @hey-api/openapi-ts'];\n const result = typeof header === 'function' ? header({ ...ctx, defaultValue }) : header;\n return result === undefined ? defaultValue : result;\n },\n module: config.output.module,\n preferExportAll: config.output.preferExportAll,\n }),\n ],\n root: config.output.path,\n });\n context = new Context<OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X, Config>({\n config,\n dependencies,\n logger,\n project,\n spec: data as OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X,\n });\n parseOpenApiSpec(context);\n context.graph = buildGraph(context.ir, logger).graph;\n eventParser.timeEnd();\n\n const eventGenerator = logger.timeEvent('generator');\n const { fileCount } = await generateOutput(context);\n eventGenerator.timeEnd();\n\n const totalMs = Date.now() - jobStart;\n\n const eventPostprocess = logger.timeEvent('postprocess');\n if (!config.dryRun) {\n const jobPrefix = colors.gray(`[Job ${jobIndex + 1}] `);\n postprocessOutput(config.output, postProcessors, jobPrefix);\n\n if (config.logs.level !== 'silent') {\n const outputPath = process.env.INIT_CWD\n ? `./${path.relative(process.env.INIT_CWD, config.output.path)}`\n : config.output.path;\n console.log(\n `${jobPrefix}${colors.green('✅ Done!')} Your output is in ${colors.cyanBright(outputPath)} ${colors.gray(`(${fileCount} ${fileCount === 1 ? 'file' : 'files'} in ${ms(totalMs)})`)}`,\n );\n }\n }\n eventPostprocess.timeEnd();\n }\n\n const watchedInput = config.input.find(\n (input, index) => input.watch.enabled && typeof inputPaths[index]!.path === 'string',\n );\n\n if (watchedInput) {\n setTimeout(() => {\n createClient({\n config,\n dependencies,\n jobIndex,\n logger,\n watches,\n });\n }, watchedInput.watch.interval);\n }\n\n return context;\n}\n","import path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport { Logger } from '@hey-api/codegen-core';\nimport type { Context } from '@hey-api/shared';\nimport {\n checkNodeVersion,\n ConfigValidationError,\n getInputError,\n getLogs,\n JobError,\n logCrashReport,\n openGitHubIssueWithCrashReport,\n printCliIntro,\n printCrashReport,\n shouldReportCrash,\n} from '@hey-api/shared';\nimport type { LazyOrAsync, MaybeArray } from '@hey-api/types';\n\nimport type { Configs } from './config/init';\nimport { resolveJobs } from './config/init';\nimport type { UserConfig } from './config/types';\nimport { createClient as pCreateClient } from './createClient';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n/**\n * Generate a client from the provided configuration.\n *\n * @param userConfig User provided {@link UserConfig} configuration(s).\n */\nexport async function createClient(\n userConfig?: LazyOrAsync<MaybeArray<UserConfig>>,\n logger = new Logger(),\n): Promise<ReadonlyArray<Context>> {\n const resolvedConfig = typeof userConfig === 'function' ? await userConfig() : userConfig;\n const userConfigs = resolvedConfig\n ? resolvedConfig instanceof Array\n ? resolvedConfig\n : [resolvedConfig]\n : [];\n\n let rawLogs = userConfigs.find((config) => getLogs(config.logs).level !== 'silent')?.logs;\n if (typeof rawLogs === 'string') {\n rawLogs = getLogs(rawLogs);\n }\n\n let jobs: Configs['jobs'] = [];\n\n try {\n checkNodeVersion();\n\n const eventCreateClient = logger.timeEvent('createClient');\n\n const eventConfig = logger.timeEvent('config');\n const resolved = await resolveJobs({ logger, userConfigs });\n const dependencies = resolved.dependencies;\n jobs = resolved.jobs;\n const printIntro = jobs.some((job) => job.config.logs.level !== 'silent');\n if (printIntro) printCliIntro(__dirname);\n eventConfig.timeEnd();\n\n const configErrors = jobs.flatMap((job) =>\n job.errors.map((error) => ({ error, jobIndex: job.index })),\n );\n if (configErrors.length) {\n throw new ConfigValidationError(configErrors);\n }\n\n const outputs = await Promise.all(\n jobs.map(async (job) => {\n try {\n return await pCreateClient({\n config: job.config,\n dependencies,\n jobIndex: job.index,\n logger,\n });\n } catch (error) {\n if (error instanceof Error) {\n throw new JobError('', {\n error,\n jobIndex: job.index,\n });\n }\n }\n }),\n );\n const contexts = outputs.filter((ctx): ctx is Context => ctx !== undefined);\n\n eventCreateClient.timeEnd();\n\n logger.report(jobs.some((job) => job.config.logs.level === 'debug'));\n\n return contexts;\n } catch (error) {\n const logs =\n jobs.find((job) => job.config.logs.level !== 'silent')?.config.logs ??\n jobs[0]?.config.logs ??\n rawLogs;\n const dryRun =\n jobs.some((job) => job.config.dryRun) ?? userConfigs.some((config) => config.dryRun) ?? false;\n\n const inputError = getInputError(error);\n const normalizedError = inputError ?? error;\n\n const logPath =\n logs?.file && !dryRun ? logCrashReport(normalizedError, logs.path ?? '') : undefined;\n if (!logs || logs.level !== 'silent') {\n printCrashReport({ error, logPath });\n const isInteractive =\n jobs.some((job) => job.config.interactive) ??\n userConfigs.some((config) => config.interactive) ??\n false;\n if (await shouldReportCrash({ error: normalizedError, isInteractive })) {\n await openGitHubIssueWithCrashReport(error, __dirname);\n }\n }\n\n if (inputError) return [];\n\n throw error;\n }\n}\n","/* eslint-disable @typescript-eslint/no-namespace */\n// OVERRIDES\n// hard-coded here because build process doesn't pick up overrides from separate files\nimport '@hey-api/codegen-core';\nimport '@hey-api/shared';\n\ndeclare module '@hey-api/codegen-core' {\n interface ProjectRenderMeta {\n /**\n * If specified, this will be the file extension used when importing\n * other modules. By default, we don't add a file extension and let the\n * runtime resolve it.\n *\n * @default null\n */\n importFileExtension?: AnyString | null;\n }\n\n interface SymbolMeta {\n category?:\n | 'client'\n | 'external'\n | 'hook'\n | 'schema'\n | 'sdk'\n | 'transform'\n | 'type'\n | 'utility'\n | AnyString;\n /**\n * Path to the resource this symbol represents.\n */\n path?: ReadonlyArray<string | number>;\n /**\n * Name of the plugin that registered this symbol.\n */\n pluginName?: string;\n resource?: 'client' | 'definition' | 'operation' | 'webhook' | AnyString;\n resourceId?: string;\n role?: 'data' | 'error' | 'errors' | 'options' | 'response' | 'responses' | AnyString;\n /**\n * Tags associated with this symbol.\n */\n tags?: ReadonlyArray<string>;\n tool?:\n | 'angular'\n | 'arktype'\n | 'fastify'\n | 'json-schema'\n | 'sdk'\n | 'typescript'\n | 'valibot'\n | 'zod'\n | AnyString;\n variant?: 'container' | AnyString;\n }\n}\n\ndeclare module '@hey-api/shared' {\n interface PluginConfigMap {\n '@angular/common': Plugins.AngularCommon.Types['Types'];\n '@faker-js/faker': Plugins.FakerJsFaker.Types['Types'];\n '@hey-api/client-angular': Plugins.HeyApiClientAngular.Types['Types'];\n '@hey-api/client-axios': Plugins.HeyApiClientAxios.Types['Types'];\n '@hey-api/client-fetch': Plugins.HeyApiClientFetch.Types['Types'];\n '@hey-api/client-ky': Plugins.HeyApiClientKy.Types['Types'];\n '@hey-api/client-next': Plugins.HeyApiClientNext.Types['Types'];\n '@hey-api/client-nuxt': Plugins.HeyApiClientNuxt.Types['Types'];\n '@hey-api/client-ofetch': Plugins.HeyApiClientOfetch.Types['Types'];\n '@hey-api/schemas': Plugins.HeyApiSchemas.Types['Types'];\n '@hey-api/sdk': Plugins.HeyApiSdk.Types['Types'];\n '@hey-api/transformers': Plugins.HeyApiTransformers.Types['Types'];\n '@hey-api/typescript': Plugins.HeyApiTypeScript.Types['Types'];\n '@pinia/colada': Plugins.PiniaColada.Types['Types'];\n '@tanstack/angular-query-experimental': Plugins.TanStackAngularQuery.Types['Types'];\n '@tanstack/preact-query': Plugins.TanStackPreactQuery.Types['Types'];\n '@tanstack/react-query': Plugins.TanStackReactQuery.Types['Types'];\n '@tanstack/solid-query': Plugins.TanStackSolidQuery.Types['Types'];\n '@tanstack/svelte-query': Plugins.TanStackSvelteQuery.Types['Types'];\n '@tanstack/vue-query': Plugins.TanStackVueQuery.Types['Types'];\n arktype: Plugins.Arktype.Types['Types'];\n fastify: Plugins.Fastify.Types['Types'];\n nestjs: Plugins.NestJs.Types['Types'];\n orpc: Plugins.Orpc.Types['Types'];\n swr: Plugins.Swr.Types['Types'];\n valibot: Plugins.Valibot.Types['Types'];\n zod: Plugins.Zod.Types['Types'];\n }\n\n interface PluginInstanceTypes {\n Node: TsDsl;\n }\n}\n// END OVERRIDES\n\nimport type { AnyString, LazyOrAsync, MaybeArray } from '@hey-api/types';\nimport colors from 'ansi-colors';\n// @ts-expect-error\nimport colorSupport from 'color-support';\n\nimport type { UserConfig } from './config/types';\nimport type { AngularCommonPlugin } from './plugins/@angular/common';\nimport type { FakerJsFakerPlugin, FakerJsFakerResolvers } from './plugins/@faker-js/faker';\nimport type {\n AngularClient as AngularClientImp,\n HeyApiClientAngularPlugin,\n} from './plugins/@hey-api/client-angular';\nimport type {\n AxiosClient as AxiosClientImp,\n HeyApiClientAxiosPlugin,\n} from './plugins/@hey-api/client-axios';\nimport type {\n FetchClient as FetchClientImp,\n HeyApiClientFetchPlugin,\n} from './plugins/@hey-api/client-fetch';\nimport type { HeyApiClientKyPlugin, KyClient as KyClientImp } from './plugins/@hey-api/client-ky';\nimport type {\n HeyApiClientNextPlugin,\n NextClient as NextClientImp,\n} from './plugins/@hey-api/client-next';\nimport type {\n HeyApiClientNuxtPlugin,\n NuxtClient as NuxtClientImp,\n} from './plugins/@hey-api/client-nuxt';\nimport type {\n HeyApiClientOfetchPlugin,\n OfetchClient as OfetchClientImp,\n} from './plugins/@hey-api/client-ofetch';\nimport type { HeyApiSchemasPlugin } from './plugins/@hey-api/schemas';\nimport type { HeyApiSdkPlugin } from './plugins/@hey-api/sdk';\nimport type { HeyApiTransformersPlugin } from './plugins/@hey-api/transformers';\nimport type {\n HeyApiTypeScriptPlugin,\n HeyApiTypeScriptResolvers,\n} from './plugins/@hey-api/typescript';\nimport type { PiniaColadaPlugin } from './plugins/@pinia/colada';\nimport type { TanStackAngularQueryPlugin } from './plugins/@tanstack/angular-query-experimental';\nimport type { TanStackPreactQueryPlugin } from './plugins/@tanstack/preact-query';\nimport type { TanStackReactQueryPlugin } from './plugins/@tanstack/react-query';\nimport type { TanStackSolidQueryPlugin } from './plugins/@tanstack/solid-query';\nimport type { TanStackSvelteQueryPlugin } from './plugins/@tanstack/svelte-query';\nimport type { TanStackVueQueryPlugin } from './plugins/@tanstack/vue-query';\nimport type { ArktypePlugin } from './plugins/arktype';\nimport type { FastifyPlugin } from './plugins/fastify';\nimport type { NestJsPlugin } from './plugins/nestjs';\nimport type { OrpcPlugin } from './plugins/orpc';\nimport type { SwrPlugin } from './plugins/swr';\nimport type { ValibotPlugin, ValibotResolvers } from './plugins/valibot';\nimport type { ZodPlugin, ZodResolvers } from './plugins/zod';\nimport type { TsDsl } from './ts-dsl';\n\ncolors.enabled = colorSupport().hasBasic;\n\nexport { createClient } from './generate';\n\n/**\n * Type helper for configuration object, returns {@link MaybeArray<UserConfig>} object(s)\n */\nexport function defineConfig(\n config: LazyOrAsync<ReadonlyArray<UserConfig>>,\n): Promise<ReadonlyArray<UserConfig>>;\nexport function defineConfig(config: LazyOrAsync<UserConfig>): Promise<UserConfig>;\nexport async function defineConfig<T extends MaybeArray<UserConfig>>(\n config: LazyOrAsync<T>,\n): Promise<T> {\n return typeof config === 'function' ? await config() : config;\n}\n\nexport { defaultPlugins } from './config/plugins';\nexport type { UserConfig } from './config/types';\nexport { clientDefaultConfig, clientDefaultMeta } from './plugins/@hey-api/client-core/config';\nexport { clientPluginHandler } from './plugins/@hey-api/client-core/plugin';\nexport type { Client } from './plugins/@hey-api/client-core/types';\nexport type { ExpressionTransformer, TypeTransformer } from './plugins/@hey-api/transformers/types';\nexport * from './ts-dsl';\nexport { Logger } from '@hey-api/codegen-core';\nexport type {\n DefinePlugin,\n IR,\n OpenApi,\n OpenApiMetaObject,\n OpenApiOperationObject,\n OpenApiParameterObject,\n OpenApiRequestBodyObject,\n OpenApiResponseObject,\n OpenApiSchemaObject,\n Plugin,\n} from '@hey-api/shared';\nexport {\n defaultPaginationKeywords,\n definePluginConfig,\n OperationPath,\n OperationStrategy,\n utils,\n} from '@hey-api/shared';\n\nexport namespace Plugins {\n export namespace AngularCommon {\n export type Types = AngularCommonPlugin;\n }\n\n export namespace Arktype {\n export type Types = ArktypePlugin;\n }\n\n export namespace FakerJsFaker {\n export type Types = FakerJsFakerPlugin;\n export type Resolvers = Required<FakerJsFakerResolvers>['~resolvers'];\n }\n\n export namespace Fastify {\n export type Types = FastifyPlugin;\n }\n\n export namespace HeyApiClientAngular {\n export type Client = AngularClientImp;\n export type Types = HeyApiClientAngularPlugin;\n }\n\n export namespace HeyApiClientAxios {\n export type Client = AxiosClientImp;\n export type Types = HeyApiClientAxiosPlugin;\n }\n\n export namespace HeyApiClientFetch {\n export type Client = FetchClientImp;\n export type Types = HeyApiClientFetchPlugin;\n }\n\n export namespace HeyApiClientKy {\n export type Client = KyClientImp;\n export type Types = HeyApiClientKyPlugin;\n }\n\n export namespace HeyApiClientNext {\n export type Client = NextClientImp;\n export type Types = HeyApiClientNextPlugin;\n }\n\n export namespace HeyApiClientNuxt {\n export type Client = NuxtClientImp;\n export type Types = HeyApiClientNuxtPlugin;\n }\n\n export namespace HeyApiClientOfetch {\n export type Client = OfetchClientImp;\n export type Types = HeyApiClientOfetchPlugin;\n }\n\n export namespace HeyApiSchemas {\n export type Types = HeyApiSchemasPlugin;\n }\n\n export namespace HeyApiSdk {\n export type Types = HeyApiSdkPlugin;\n }\n\n export namespace HeyApiTransformers {\n export type Types = HeyApiTransformersPlugin;\n }\n\n export namespace HeyApiTypeScript {\n export type Resolvers = Required<HeyApiTypeScriptResolvers>['~resolvers'];\n export type Types = HeyApiTypeScriptPlugin;\n }\n\n export namespace NestJs {\n export type Types = NestJsPlugin;\n }\n\n export namespace Orpc {\n export type Types = OrpcPlugin;\n }\n\n export namespace PiniaColada {\n export type Types = PiniaColadaPlugin;\n }\n\n export namespace Swr {\n export type Types = SwrPlugin;\n }\n\n export namespace TanStackAngularQuery {\n export type Types = TanStackAngularQueryPlugin;\n }\n\n export namespace TanStackPreactQuery {\n export type Types = TanStackPreactQueryPlugin;\n }\n\n export namespace TanStackReactQuery {\n export type Types = TanStackReactQueryPlugin;\n }\n\n export namespace TanStackSolidQuery {\n export type Types = TanStackSolidQueryPlugin;\n }\n\n export namespace TanStackSvelteQuery {\n export type Types = TanStackSvelteQueryPlugin;\n }\n\n export namespace TanStackVueQuery {\n export type Types = TanStackVueQueryPlugin;\n }\n\n export namespace Valibot {\n export type Resolvers = Required<ValibotResolvers>['~resolvers'];\n export type Types = ValibotPlugin;\n }\n\n export namespace Zod {\n export type Resolvers = Required<ZodResolvers>['~resolvers'];\n export type Types = ZodPlugin;\n }\n}\n\n// DEPRECATED\n/** @deprecated Use `Plugins.HeyApiClientAngular.Client` instead. */\nexport type AngularClient = AngularClientImp;\n/** @deprecated Use `Plugins.HeyApiClientAxios.Client` instead. */\nexport type AxiosClient = AxiosClientImp;\n/** @deprecated Use `Plugins.HeyApiClientFetch.Client` instead. */\nexport type FetchClient = FetchClientImp;\n/** @deprecated Use `Plugins.HeyApiClientKy.Client` instead. */\nexport type KyClient = KyClientImp;\n/** @deprecated Use `Plugins.HeyApiClientNext.Client` instead. */\nexport type NextClient = NextClientImp;\n/** @deprecated Use `Plugins.HeyApiClientNuxt.Client` instead. */\nexport type NuxtClient = NuxtClientImp;\n/** @deprecated Use `Plugins.HeyApiClientOfetch.Client` instead. */\nexport type OfetchClient = OfetchClientImp;\n"],"mappings":";;;;;;;;;;;;AAWA,eAAsB,eAAe,SAAkD;CACrF,MAAM,aAAa,KAAK,QAAQ,QAAQ,OAAO,OAAO,KAAK;AAE3D,KAAI,QAAQ,OAAO,OAAO;MACpB,GAAG,WAAW,WAAW,CAC3B,IAAG,OAAO,YAAY;GAAE,OAAO;GAAM,WAAW;GAAM,CAAC;;CAI3D,MAAM,SAAS,eAAe,QAAQ;CAEtC,MAAM,SAAS,gBAAgB,OAAO;AACtC,KAAI,YAAY,OAAO,UAAU,OAAO,OAAO,UAAU,CAAC,OAAO,OAG/D,QAAO,iCAAiC,qBAAqB;EAC3D,QAAQ,OAAO,OAAO;EACtB,QAAQ,OAAO,OAAO;EACtB;EAEA,QAAQ;EACR,SAAS,QAAQ;EAClB,CAAC;AAGJ,MAAK,MAAM,UAAU,QAAQ,iBAAiB,CAC5C,OAAM,OAAO,KAAK;AAGpB,SAAQ,IAAI,MAAM;CAElB,MAAM,MAAM,IAAI,cAAc,QAAQ,KAAK;AAC3C,MAAK,MAAM,UAAU,QAAQ,QAC3B,OAAM,OAAO,IAAI,IAAI;CAGvB,IAAI,YAAY;CAChB,MAAM,SAA0B,EAAE;AAClC,MAAK,MAAM,QAAQ,QAAQ,IAAI,QAAQ,EAAE;EACvC,MAAM,WAAW,KAAK,QAAQ,YAAY,KAAK,KAAK;EACpD,MAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,MAAI,CAAC,QAAQ,OAAO,OAClB,QAAO,KACL,WACG,MAAM,KAAK,EAAE,WAAW,MAAM,CAAC,CAC/B,WAAW,WAAW,UAAU,UAAU,KAAK,SAAS,EAAE,UAAU,QAAQ,CAAC,CAAC,CAClF;AAEH;;AAEF,OAAM,QAAQ,IAAI,OAAO;CAEzB,MAAM,EAAE,WAAW,QAAQ,OAAO;AAClC,KAAI,OAAO,SAAS;EAClB,MAAM,aAAa,OAAO,SAAS,OAAO,KAAA,IAAY,KAAK,QAAQ,YAAY,OAAO,KAAK;AAC3F,MAAI,CAAC,QAAQ,OAAO,UAAU,cAAc,eAAe,WACzD,OAAM,WAAW,MAAM,YAAY,EAAE,WAAW,MAAM,CAAC;EAEzD,MAAM,aAAa,MAAM,OAAO,UAAU,QAAQ,KAAK;AAEvD,MAAI,CAAC,QAAQ,OAAO,UAAU,YAAY;AACxC,SAAM,WAAW,UACf,KAAK,QAAQ,YAAY,GAAG,OAAO,SAAS,GAAG,OAAO,YAAY,EAClE,YACA,EAAE,UAAU,QAAQ,CACrB;AACD;;AAEF,MAAI,OAAO,SACT,OAAM,OAAO,SAAS,WAAW;;AAIrC,QAAO,EAAE,WAAW;;;;AC3DtB,eAAsBA,eAAa,EACjC,QACA,cACA,UACA,QACA,SAAS,YAUsB;CAC/B,MAAM,UACJ,YACA,MAAM,KAAK,EAAE,QAAQ,OAAO,MAAM,QAAQ,SAAS,EACjD,SAAS,IAAI,SAAS,EACvB,EAAE;CAEL,MAAM,WAAW,KAAK,KAAK;CAC3B,MAAM,aAAa,OAAO,MAAM,KAAK,UAAU,iBAAiB,MAAM,CAAC;AAGvE,KAAI,OAAO,KAAK,UAAU,YAAY,CAAC,SACrC,eAAc,YAAY,SAAS;CAGrC,MAAM,cAAc,OAAO,OAAc,UAAkB;EACzD,MAAM,YAAY,OAAO,UAAU,OAAO;EAC1C,MAAM,EAAE,aAAa,OAAO,eAAe,aAAa,MAAM,QAAQ;GACpE,cAAc,MAAM;GACpB,WAAW,WAAW,OAAQ;GAC9B,SAAS,MAAM,MAAM;GACrB,OAAO,QAAQ;GAChB,CAAC;AACF,YAAU,SAAS;AAKnB,MAAI,SAAS,CAAC,UAAU;GACtB,MAAM,OAAO,MAAM,SAAS,MAAM,CAAC,YAAY,GAAG;GAClD,MAAM,UAAU,8BAA8B,SAAS,OAAO,IAAI,QAAQ,SAAS;AAEnF,OAAI,SAAS,UAAU,OAAO,SAAS,SAAS,KAAK;IACnD,MAAM,aAAa,SAAS,cAAc;IAC1C,MAAM,gBAAgB,IAAI,MAAM,QAAQ;AACxC,kBAAc,SAAS,OAAO,WAAW,OAAQ,KAAK;AACtD,UAAM,IAAI,WACR,yBAAyB,SAAS,OAAO,GAAG,cAC5C,cACD;;AAGH,SAAM,IAAI,MAAM,QAAQ;;AAG1B,SAAO;GAAE;GAAa;GAAe;;CAEvC,MAAM,YACJ,MAAM,QAAQ,IAAI,OAAO,MAAM,KAAK,OAAO,UAAU,YAAY,OAAO,MAAM,CAAC,CAAC,EAChF,QAAQ,SAAS,KAAK,eAAe,KAAK,cAAc;CAE1D,IAAI;AAEJ,KAAI,SAAS,QAAQ;EACnB,MAAM,YAAY,IAAI,YAAY;EAClC,IAAI;AACJ,MAAI;AACF,UACE,SAAS,SAAS,IACd,MAAM,UAAU,WAAW;IACzB,aAAa,SAAS,KAAK,SAAS,KAAK,YAAa;IACtD,oBAAoB,EAAE;IACtB,gBAAgB,SAAS,KAAK,SAAS,KAAK,cAAe;IAC5D,CAAC,GACF,MAAM,UAAU,OAAO;IACrB,aAAa,SAAS,GAAI;IAC1B,mBAAmB,KAAA;IACnB,eAAe,SAAS,GAAI;IAC7B,CAAC;WACD,KAAK;AACZ,OAAI,eAAe,iBAAiB,IAAI,gBAAgB,SACtD,OAAM,IAAI,WAAW,wBAAwB,IAAI;AAEnD,SAAM;;AAKR,MAAI,OAAO,KAAK,UAAU,YAAY,UAAU;AAC9C,WAAQ,OAAO;AACf,iBAAc,YAAY,SAAS;;EAGrC,MAAM,kBAAkB,OAAO,UAAU,cAAc;AACvD,QAAM,iBAAiB;GAAE,cAAc,OAAO,OAAO;GAAO,MAAM;GAAM,CAAC;AACzE,kBAAgB,SAAS;EAEzB,MAAM,cAAc,OAAO,UAAU,SAAS;EAC9C,MAAM,SAAS,OAAO,OAAO;AA8B7B,YAAU,IAAI,QAAkE;GAC9E;GACA;GACA;GACA,SAhCc,IAAI,QAAQ;IAC1B,iBAAiB;IACjB,WAAW,SAAS;KAClB,MAAM,OAAO,YAAY,MAAM,OAAO,OAAO,SAAS;KACtD,MAAM,EAAE,WAAW,OAAO,OAAO;AACjC,SAAI,CAAC,OACH,QAAO;AAET,YAAO,SAAS,WAAW,KAAK,SAAS,OAAO,GAAG,OAAO,GAAG,OAAO;;IAEtE,uBAAuB,OAAO,OAAO,uBACjC,EACE,YAAY,OAAO,OAAO,sBAC3B,GACD,KAAA;IACJ,WAAW,CACT,IAAI,mBAAmB;KACrB,SAAS,QAAQ;MACf,MAAM,eAAe,CAAC,wDAAwD;MAC9E,MAAM,SAAS,OAAO,WAAW,aAAa,OAAO;OAAE,GAAG;OAAK;OAAc,CAAC,GAAG;AACjF,aAAO,WAAW,KAAA,IAAY,eAAe;;KAE/C,QAAQ,OAAO,OAAO;KACtB,iBAAiB,OAAO,OAAO;KAChC,CAAC,CACH;IACD,MAAM,OAAO,OAAO;IACrB,CAAC;GAMA,MAAM;GACP,CAAC;AACF,mBAAiB,QAAQ;AACzB,UAAQ,QAAQ,WAAW,QAAQ,IAAI,OAAO,CAAC;AAC/C,cAAY,SAAS;EAErB,MAAM,iBAAiB,OAAO,UAAU,YAAY;EACpD,MAAM,EAAE,cAAc,MAAM,eAAe,QAAQ;AACnD,iBAAe,SAAS;EAExB,MAAM,UAAU,KAAK,KAAK,GAAG;EAE7B,MAAM,mBAAmB,OAAO,UAAU,cAAc;AACxD,MAAI,CAAC,OAAO,QAAQ;GAClB,MAAM,YAAY,OAAO,KAAK,QAAQ,WAAW,EAAE,IAAI;AACvD,qBAAkB,OAAO,QAAQ,gBAAgB,UAAU;AAE3D,OAAI,OAAO,KAAK,UAAU,UAAU;IAClC,MAAM,aAAa,QAAQ,IAAI,WAC3B,KAAK,KAAK,SAAS,QAAQ,IAAI,UAAU,OAAO,OAAO,KAAK,KAC5D,OAAO,OAAO;AAClB,YAAQ,IACN,GAAG,YAAY,OAAO,MAAM,UAAU,CAAC,qBAAqB,OAAO,WAAW,WAAW,CAAC,GAAG,OAAO,KAAK,IAAI,UAAU,GAAG,cAAc,IAAI,SAAS,QAAQ,MAAMC,OAAG,QAAQ,CAAC,GAAG,GACnL;;;AAGL,mBAAiB,SAAS;;CAG5B,MAAM,eAAe,OAAO,MAAM,MAC/B,OAAO,UAAU,MAAM,MAAM,WAAW,OAAO,WAAW,OAAQ,SAAS,SAC7E;AAED,KAAI,aACF,kBAAiB;AACf,iBAAa;GACX;GACA;GACA;GACA;GACA;GACD,CAAC;IACD,aAAa,MAAM,SAAS;AAGjC,QAAO;;;;ACxLT,MAAM,aAAa,cAAc,OAAO,KAAK,IAAI;AACjD,MAAM,YAAY,KAAK,QAAQ,WAAW;;;;;;AAO1C,eAAsB,aACpB,YACA,SAAS,IAAI,QAAQ,EACY;CACjC,MAAM,iBAAiB,OAAO,eAAe,aAAa,MAAM,YAAY,GAAG;CAC/E,MAAM,cAAc,iBAChB,0BAA0B,QACxB,iBACA,CAAC,eAAe,GAClB,EAAE;CAEN,IAAI,UAAU,YAAY,MAAM,WAAW,QAAQ,OAAO,KAAK,CAAC,UAAU,SAAS,EAAE;AACrF,KAAI,OAAO,YAAY,SACrB,WAAU,QAAQ,QAAQ;CAG5B,IAAI,OAAwB,EAAE;AAE9B,KAAI;AACF,oBAAkB;EAElB,MAAM,oBAAoB,OAAO,UAAU,eAAe;EAE1D,MAAM,cAAc,OAAO,UAAU,SAAS;EAC9C,MAAM,WAAW,MAAM,YAAY;GAAE;GAAQ;GAAa,CAAC;EAC3D,MAAM,eAAe,SAAS;AAC9B,SAAO,SAAS;AAEhB,MADmB,KAAK,MAAM,QAAQ,IAAI,OAAO,KAAK,UAAU,SAAS,CACzD,eAAc,UAAU;AACxC,cAAY,SAAS;EAErB,MAAM,eAAe,KAAK,SAAS,QACjC,IAAI,OAAO,KAAK,WAAW;GAAE;GAAO,UAAU,IAAI;GAAO,EAAE,CAC5D;AACD,MAAI,aAAa,OACf,OAAM,IAAI,sBAAsB,aAAa;EAsB/C,MAAM,YAnBU,MAAM,QAAQ,IAC5B,KAAK,IAAI,OAAO,QAAQ;AACtB,OAAI;AACF,WAAO,MAAMC,eAAc;KACzB,QAAQ,IAAI;KACZ;KACA,UAAU,IAAI;KACd;KACD,CAAC;YACK,OAAO;AACd,QAAI,iBAAiB,MACnB,OAAM,IAAI,SAAS,IAAI;KACrB;KACA,UAAU,IAAI;KACf,CAAC;;IAGN,CACH,EACwB,QAAQ,QAAwB,QAAQ,KAAA,EAAU;AAE3E,oBAAkB,SAAS;AAE3B,SAAO,OAAO,KAAK,MAAM,QAAQ,IAAI,OAAO,KAAK,UAAU,QAAQ,CAAC;AAEpE,SAAO;UACA,OAAO;EACd,MAAM,OACJ,KAAK,MAAM,QAAQ,IAAI,OAAO,KAAK,UAAU,SAAS,EAAE,OAAO,QAC/D,KAAK,IAAI,OAAO,QAChB;EACF,MAAM,SACJ,KAAK,MAAM,QAAQ,IAAI,OAAO,OAAO,IAAI,YAAY,MAAM,WAAW,OAAO,OAAO,IAAI;EAE1F,MAAM,aAAa,cAAc,MAAM;EACvC,MAAM,kBAAkB,cAAc;EAEtC,MAAM,UACJ,MAAM,QAAQ,CAAC,SAAS,eAAe,iBAAiB,KAAK,QAAQ,GAAG,GAAG,KAAA;AAC7E,MAAI,CAAC,QAAQ,KAAK,UAAU,UAAU;AACpC,oBAAiB;IAAE;IAAO;IAAS,CAAC;AAKpC,OAAI,MAAM,kBAAkB;IAAE,OAAO;IAAiB,eAHpD,KAAK,MAAM,QAAQ,IAAI,OAAO,YAAY,IAC1C,YAAY,MAAM,WAAW,OAAO,YAAY,IAChD;IACmE,CAAC,CACpE,OAAM,+BAA+B,OAAO,UAAU;;AAI1D,MAAI,WAAY,QAAO,EAAE;AAEzB,QAAM;;;;;AC6BV,OAAO,UAAU,cAAc,CAAC;AAWhC,eAAsB,aACpB,QACY;AACZ,QAAO,OAAO,WAAW,aAAa,MAAM,QAAQ,GAAG"}